1 / 28

Solving Constraint Satisfaction Problems in Java

Solving Constraint Satisfaction Problems in Java. Nico van Hanxleden Houwert nhouwert@iprofs.nl. Topics. Wat zijn Constraint Satisfaction Problems? Wat maakt CSP’s zo lastig? Hoe los je ze op? Java CSP frameworks Demonstratie en code. Wat zijn CSP’s?.

heba
Download Presentation

Solving Constraint Satisfaction Problems in Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SolvingConstraint Satisfaction Problemsin Java Nico van Hanxleden Houwert nhouwert@iprofs.nl

  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 ≈ 10.000.000 mogelijkheden • Oplossingmogelijkheid: brute-force ≈ 3u rekentijd

  5. 10 Jaar Later… • 20 schepen en 10 aanlegplaatsen • 10^20 mogelijkheden -> 3.000.000.000 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 $1.000.000,- • 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! = 4.426.165.368 mogelijkheden • Slechts 92 oplossingen, waarvan slechts 12 uniek (speld in hooiberg) • 1 mogelijkheid/msec = 51 dagen rekentijd • 20-queens: 88.418.346.767.849.338.466.287 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. ongelijke kolommen 1. i ≠ j ≠ …(automatisch) 2. ongelijke rijen 2. Qi ≠ Qj ≠ … ≠ Qn 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, 8, 4}

  24. N-Queens in CREAM public classQueensCSPSolver { // Declare Network, Solver, Solution and Variables IntVariable[] queens; Network net; Solver solver; Solution sol; ... void solveQueens(intnrQueens) { queens = newIntVariable[nrQueens]; // Initialise Variables with their Domains for (inti = 0; i < nrQueens; i++) { queens[i] = newIntVariable(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 • 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, … // Print the solution // Usessolution.getIntValue(queens[i]); printBoard(); } // Stop the solver solver.stop(); }

  27. Enkele Statistieken

  28. Afsluiting • Samenvattend • Q & A • Meer informatie en whitepapers: www.iprofs.nl

More Related