Solving Constraint Satisfaction Problems in Java

Slides:



Advertisements
Verwante presentaties
Inleiding in de statistiek voor de gedragswetenschappen Met ondersteuning van SPSS Guido Valkeneers.
Advertisements

Sudoku puzzels: hoe los je ze op en hoe maak je ze?
4C/ID Gebruikersdag, 17 april 2012, Utrecht
Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Heuristieken – kennisbits 1
Hoofdstuk 8: Recursie.
Hoofdstuk 10 Onderzoeken met SPSS en MS Excel
Practica Computerlinguistiek Tekst en uitleg:
<Mdl01 hoorcollege 1>
Klassen en objecten.
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.

Phoenix Contact ILC150ETH F. Rubben, Ing.. Phoenix Contact ILC150ETH F. Rubben, Ing.
VIJEO DESIGNER.
Hoofdstuk 6: Controle structuren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Jan Talmon Medische Informatica Universiteit Maastricht
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
Divide and Conquer in Multi-agent Planning Multi-Agent Planning as the Process of Merging Distributed Sub-plans Eithan Ephrati and Jeffrey S. Rosenschein.
Inleidend probleem Data structuur (hiërarchie van classes)
1 Complexiteit Bij motion planning is er sprake van drie typen van complexiteit –Complexiteit van de obstakels (aantal, aantal hoekpunten, algebraische.
Netwerk Algorithms: Shortest paths1 Shortest paths II Network Algorithms 2004.
Spatial subgroup mining
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
Arrays.
Sorteeralgoritmen. Sorteren: aanpak 1 Hoe ga je een rij getallen sorteren met PC? Sorteren door selectie (= selection sort): Zoek de kleinste waarde Sorteer.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 3 Cees Witteveen.
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Joe de Developer Leergierig
Deltion College Engels B1 Lezen [no. 001] can-do : 2 products compared.
Inleiding in de statistiek voor de gedragswetenschappen
AI101  Historisch Perspectief Weak Methods Logic Theorist General Problem Solver  Resolution Theorem Proving Leeswijzer: Hoofdstuk 13.0, 13.1, 13.2 AI.
Rogier van der Linde & Davy De Winne, 2014
LES 3. Serious games Applied games ”a mental contest, played with a computer in accordance with specific rules that uses entertainment to further government.
Coordinaten: Tom Tourwé 10F729 Tel: 3492 Organisatie van de oefeningen: * 1 uur bespreking van oplossing vorige les + bespreking opgave.
Representatie & Zoeken
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
Deltion College Engels B2 Lezen [Edu/003] thema: Topical News Lessons: The Onestop Magazine can-do: kan artikelen en rapporten begrijpen die gaan over.
Constructie van het kennismodel
Test Tender module Stap 1 Klik op het gewenste object.
Deltion College Engels B2 Lezen[Edu/001] /subvaardigheid schrijven korte samenvattingen thema: Exotic news can-do : lezen om informatie op te doen - kan.
MBR AtT1 College 9 Diagnose met correctmodellen. Verdieping in de formalisatie. In reader: Characterizing diagnoses and Systems J. de Kleer, A.
Deltion College Engels B2 Schrijven [Edu/005] thema: Writing a hand-out can-do: kan een begrijpelijke samenvatting schrijven © Anne Beeker Alle rechten.
Deltion College Engels B2 (telefoon)gesprekken voeren[Edu/002] /subvaardigheid lezen/schrijven thema: I am so sorry for you… can-do : kan medeleven betuigen.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
Brainstorming Rogier van der Linde, WAT & WAAROM BRAINSTORMEN 2 Genereren van ideeën of oplossingen voor één of meerdere problemen waar je normaal.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
DOELEN VAN W&T ONDERWIJS
Standaarden en spelregels voor de Slimme Stad
Datastructuren voor graafrepresentatie
Frontend Oss
Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver
Modderdorp UNPLUGGED Bron: csunplugged.org.
Sneller een beter personeelsrooster voor de gynaecologieafdeling van het JBZ Maartje van de Vrugt PhD.
Modderdorp UNPLUGGED Bron: csunplugged.org.
Implementatie Zoekboom
Software Development fundamentals
Dynamic Architecture What about you?
Hoofdstuk 10 Onderzoeken met SPSS en MS Excel
Software Development fundamentals
Transcript van de presentatie:

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? ‘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

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

10 Jaar Later… Dit is een CSP 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

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) …

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

N-Queens

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)

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

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

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]

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

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

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

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

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

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

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

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)

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

CREAM

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, 8, 4}

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); }

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();

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, …

Enkele Statistieken

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