De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Solving Constraint Satisfaction Problems in Java Nico van Hanxleden Houwert

Verwante presentaties


Presentatie over: "Solving Constraint Satisfaction Problems in Java Nico van Hanxleden Houwert"— 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… –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 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 = {x 1,..., x n } –Verzameling domeinen: D = {d 1, …, d n } –Verzameling constraints: C = {c 1, …, c m } –B.v.: V = {x, y, z} D x = D y = D z = {0…10}, C 1 = [x == 4], C 2 = [x 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 3. ongelijke diagonalen \ representatie: Q i = {Q 1, …, Q n } index is kolom, waarde = rij n domeinen ({1…n}) constraints: 4 typen: 1. ongelijke kolommen1. i ≠ j ≠ …(automatisch) 2. ongelijke rijen2. Q i ≠ Q j ≠ … ≠ Q n 4. ongelijke diagonalen /4. Q i -i ≠ Q j -j ≠ … ≠ Q n -n 3. Q i +i ≠ Q j +j ≠ … ≠ Q n +n {1, 2, 6, 5, 7, 3, 8, 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); } 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(); // 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 // Print the solution // Uses solution.getIntValue(queens[i]); printBoard(); } // Stop the solver solver.stop(); } // 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 Nico van Hanxleden Houwert"

Verwante presentaties


Ads door Google