De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Solving Constraint Satisfaction Problems in Java

Verwante presentaties


Presentatie over: "Solving Constraint Satisfaction Problems in Java"— Transcript van de presentatie:

1 Solving Constraint Satisfaction Problems in Java
Nico van Hanxleden Houwert

2 Topics Wat zijn Constraint Satisfaction Problems?
Wat maakt CSP’s zo lastig? Hoe los je ze op? Java CSP frameworks Demonstratie en code

3 Wat zijn CSP’s? ‘Normale’ problemen: reguliere algoritmes
B.v.: omrekenen graden Celcius → Fahrenheit Lage complexiteit, eenduidig algoritme Input → berekening → output Stapje verder: zoekprobleem: legpuzzel Niet eenduidig Ietwat zoeken Maar: niet complex En: probleem kan in stukken gehakt worden

4 Planning Commerciële Haven
Variabelen: 10 schepen, 5 aanlegplaatsen Welk schip wanneer op welke aanlegplaats? Veel constraints (voorwaarden) Opstellen van goed of optimaal rooster ‘Puzzelprobleem’, geen eenduidig algoritme Hoge complexiteit / veel afhankelijkheden Niet deelbaar Grote zoekruimte 5^10 ≈ mogelijkheden Oplossingmogelijkheid: brute-force ≈ 3u rekentijd

5 10 Jaar Later… Dit is een CSP 20 schepen en 10 aanlegplaatsen
10^20 mogelijkheden -> jaar 100x krachtigere processor aanschaffen? Probleem in stukken hakken: 2x 3u = 6u? Dit is een CSP Zoekprobleem; geen eenduidig algoritme Hoge complexiteit / veel afhankelijkheden / constraints Zeer grote zoekruimte Combinatorische explosie

6 Andere voorbeelden van CSP’s
Opstellen van vluchtroosters op Schiphol Opstellen treinroosters bij de NS Opstellen rooster voor de J-Fall Puzzels (schaken, dammen, Sudoku, kruiswoordpuzzels, GO, etc.) Logistieke problemen Resource allocation Elektronica (circuit design)

7 Wat maakt CSP’s zo lastig?
Zoek-/‘puzzel’-problemen Niet oplosbaar middels reguliere algoritmes Clay Mathematics Institute biedt $ ,- Hoge mate van complexiteit Veel afhankelijkheden Zeer grote zoekruimten Combinatorische explosie

8 N-Queens

9 N-Queens N-queens is een CSP Zoekruimte: mogelijkheden
8-queens: 64x63x62x61x60x59x58x57 / 8! = mogelijkheden Slechts 92 oplossingen, waarvan slechts 12 uniek (speld in hooiberg) 1 mogelijkheid/msec = 51 dagen rekentijd 20-queens: jaar ≈ 88,5 triljard jaar (combinatorische explosie)

10 Algoritmiek voor CSP’s
‘Recht-toe/recht-aan’ algoritmes zijn er niet Brute-force algoritmes werken niet Zoekalgoritmes?

11 Backtracking - Backtracking (depth- first search)
- Efficiënter dan brute- force, maar niet voldoende - Constant op fouten stuiten en moeten backtracken is duur - Supercomputer komt momenteel tot +/- n=25 binnen enkele uren

12 Hoe los je CSP’s dan wel op?
Allereerst, formele definitie CSP: Verzameling variabelen: V = {x1, ..., xn} Verzameling domeinen: D = {d1, …, dn} Verzameling constraints: C = {c1, …, cm} B.v.: V = {x, y, z} Dx = Dy = Dz = {0…10}, C1 = [x == 4], C2 = [x < y], C3 = [y > z]

13 Weergave Middels CSP-Graaf
3 variabelen, 3 domeinen, 3 constraints 1 unaire constraint, 2 binaire constraints Oplossing (b.v.): x = 4, y = 6, z = 5

14 Hoe los je CSP’s dan wel op?
Basis: systematic search: backtracking Maar, verrijkt met een aantal technieken Consistency techniques Deze worden uitgevoerd voordat gezocht wordt Node-consistency: verwijdert alle unaire constraints & werkt de domains bij Arc-consistency: een binaire constraint tussen 2 variabelen X en Y is arc consistent indien alle waarden in beide domeinen consistent zijn met de constraint. Een arc consistency algoritme verwijdert alle waarden uit de domeinen waarvoor dit niet geldt

15 Constraint Propagation
‘Intelligente’ vorm van backtracking Gewone backtracking instantieert variabelen incrementeel, en herstelt van ongeldige instantiaties nadat deze gedetecteerd zijn Constraint propagation voorkomt ongeldige instantiaties door deze van tevoren te detecteren en ze over te slaan Dit door de constraints te integreren (propageren) in het zoekproces

16 Constraint Propagation
Instantieer een variabele Kijk naar de andere variabelen die middels een constraint hiermee verbonden zijn Verwijder uit de domains van die andere variabelen alle waarden die in conflict zijn met de huidige variabele (n.a.v. de constraints) Zodra de domain(s) leeg zijn weet je dat je niet verder hoeft te zoeken in die richting -> backtrack

17 Backtracking vs. Constraint Prop.
Backtracking: Constraint prop.:

18 Variable Ordering In welke volgorde variabelen bezoeken?
Statische & dynamische ordering algoritmes MRV (Minimum Remaining Values) Heuristiek: Fail First Principle – “To succeed, try first where you are most likely to fail” Variabele met de minst resterende waarden (kleinste domein) Hiermee: doodlopende takken in de zoekboom z.s.m. detecteren, en hiermee de grootte van de zoekboom minimaliseren

19 Value Ordering Zodra de volgende te bezoeken variabele bepaald is: in welke volgorde de mogelijke waarden toekennen? Populair algoritme: LCV (Least Constraining Value) Heuristiek: kies de waarde die de minste waarden uit de domeinen van de andere variabelen elimineert

20 Hoe los je CSP’s dan wel op?
Samenvattend: Kunnen we CSP’s efficiënter oplossen? Yes we can Node-consistency & arc-consistency Constraint propagation (‘intelligente’ backtracking) Dynamic variable ordering & dynamic value ordering Echter - als developer wil je je focussen op het probleem, en niet op alle algoritmen (en varianten erop)

21 Java CSP Frameworks Commerciële en open-source frameworks beschikbaar
Voordelen: Off-the-shelf algoritmes Abstractielaag waarmee CSPs eenvoudiger gemodelleerd kunnen worden O.a.: ILOG en CREAM

22 CREAM

23 N-Queens in CREAM Eerst: n-queens als CSP modelleren n variabelen
representatie: Qi = {Q1, …, Qn} index is kolom, waarde = rij n domeinen ({1…n}) constraints: 4 typen: 1. i ≠ j ≠ …(automatisch) 1. ongelijke kolommen 2. Qi ≠ Qj ≠ … ≠ Qn 2. ongelijke rijen 3. ongelijke diagonalen \ 3. Qi+i ≠ Qj+j ≠ … ≠ Qn+n 4. ongelijke diagonalen / 4. Qi-i ≠ Qj-j ≠ … ≠ Qn-n {1, 2, 6, 5, 7, 3, , 4}

24 N-Queens in CREAM public class QueensCSPSolver {
// Declare Network, Solver, Solution and Variables IntVariable[] queens; Network net; Solver solver; Solution sol; ... void solveQueens(int nrQueens) { queens = new IntVariable[nrQueens]; // Initialise Variables with their Domains for (int i = 0; i < nrQueens; i++) { queens[i] = new IntVariable(net, 1, nrQueens); }

25 N-Queens in CREAM // Add the first set of Constraints
// (Queens must be on different rows) new NotEquals(net, queens); ... // Initialise the solver solver = new DefaultSolver(net); // Solve the problem & iterate through all solutions for (solver.start(); solver.waitNext(); solver.resume()) { // Get a solution solution = solver.getSolution();

26 N-Queens in CREAM Korte demonstratie
// Print the solution // Uses solution.getIntValue(queens[i]); printBoard(); } // Stop the solver solver.stop(); Korte demonstratie Backtracking: n = 8 ok, n = 20 ok, n = 30 nok CSP/CREAM: n = 8 ok, n = 20 ok, n = 50 ok, n = 70 ok, n = 100 ok, …

27 Enkele Statistieken

28 Afsluiting Samenvattend Q & A
Meer informatie en whitepapers:


Download ppt "Solving Constraint Satisfaction Problems in Java"

Verwante presentaties


Ads door Google