Constraint Programming (CP) eVITA Winter School 2009 Optimization Tomas Eric Nordlander
Outline � Constraint Programming � History � Constraint Satisfaction � Constraint Satisfaction Problem (CSP) � Examples � Optimisation � Many solution � Over constrained � Commercial Application � Pointers � Summary
Constraint Programming (CP) � The basic idea of Constraint programming is to solve problems by stating the constraints involved—the solution should satisfy all the constraints. � It is an alternative approach to functional programming, that combines reasoning and computing techniques over constraints. � Constraint satisfaction � Constraint satisfaction deals mainly with finite domains � Combinatorial solving methods � Constraint solving � Constraint satisfaction deals mainly with infinite domains � Solving methods based more on mathematical techniques (Example: Taylor series)
A Brief History of Constraint Programming � Sixties � Sketchpad, also known as Robot Draftsman (Sutherland in, 1963). � Seventies � The concept of Constraint Satisfaction Problem (CSP) was developed (Montanari 1974). � The scene labelling problem, (Waltz, 1975). � Experimental languages . � Eighties � Constraint logic programming. � Constraint Programming. � Nineties � Successfully tackled industrial personnel, production and transportation scheduling, as well as design problems. � The last and the upcoming years � Constraint Programming one of the basic technologies for constructing the planning systems. � Research Focus: Constraint Acquisition, Model Maintenance, Ease of Use, Explanation, Dynamic Constraints, Hybrid techniques, Uncertainty, etc..
CP Interdisciplinary Nature Operational Artificial Intelligence Research Constraint Programming Discrete Logic programming Mathematics
Outline � Constraint Programming � History � Constraint Satisfaction � Constraint Satisfaction Problem (CSP) � Examples � Optimisation � Many solution � Over constrained � Commercial Application � Pointers � Summary
What components are there? � Model � Constraint Satisfaction Problem (CSP) � Search Algorithms � Consistency Algorithms � Heuristics � Solving a CSP achieve one of the following goals: � demonstrate there is no solution; � find any solution; � find all solutions; � find an optimal, or at least a good, solution given some objective evaluation function. 7
CSP Model � Constraint Satisfaction Problem (CSP) � Definition 0,1,2 � a set of variables X={X1,..., Xn}, X2 � for each variable Xi, a finite set Di of possible <> < values (its domain), and � a set of constraints C, where each constraint C<j> is composed of a scope vars(C<j>) of the X1 X3 variables that participate in that constraint and = a relation rel(C<j>) � Dj1 × Dj2 × …× Djt, that specifies the values that variables in the scope 0,1,2 0,1,2 can be assigned simultaneous
CSP: Search 0,1,2 � Simple Backtrack (BT) � Heuristic X2 0 2 1 0 � Variable ordering X1…X3 <> < � Value ordering 0…2 X1 0 1 X3 0 1 2 0 1 = 0,1,2 0,1,2
CSP: Search � Simple Backtrack (BT) � Heuristic � Variable ordering X1…X3 � Value ordering 0…2 S S 2 0 0 1 1 0 1 2 0 0 1 1 2 2 0 0 1 2 0 1 2 0 1 2 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
CSP: Constraint Propagation � Constraint propagations through 0,1,2 consistency techniques � Arc Consistency {X2-X3} X2 <> < X1 0 X3 = 0,1,2 0,1,2
CSP: Constraint Propagation � Example of Arc Consistency � Arc Consistency {X2-X3} � Arc Consistency {X1-X3} � Arc Consistency {X2-X1}
CSP: seems fairly limited? � CSP and solving methods are much richer then previous example showed, in particular when it comes to: � Domain � Constraints � Search � Consistency techniques
CSP: Domain and Constraints � Domain � Constraints � finite (but also continues) � linear (but also nonlinear) � Integer � Unary � Reals � Binary � Boolean (SAT) � Higher arity � String � Global Constraints � Combinations of above
CSP: Search & Consistency tech. Constraint propagations General algorithms � Node* Consistency � Generate and Test � Arc** Consistency � Simple Backtracking � Path Consistency � Intelligent Backtracking Algorithms using consistency checking � Forward Checking (FC) � Partial Look Ahead (PLA) � Full Look (FL) � Maintaining Arc Consistency (MAC) *Node = Variable **Arc = Constraint 15
CSP: Modelling � Critical for success � Very Easy and very hard � Often Iterative process � Open CSP � Dynamic CSP � Trick includes � Aux. constraints � Redundant to avoid trashing � Remove some solution to break symmetry � Specialized constraints � Aux. Variables � Etc. 16
Outline � Constraint Programming � History � Constraint Satisfaction � Constraint Satisfaction Problem (CSP) � Examples � Optimisation � Many solution � Over constrained � Application areas � Pointers � Summary
CSP Examples � Graph Colouring � Scheduling
Graph Coloring � The graph colouring problem involves assigning colours to vertices in a graph such that adjacent vertices have distinct colours. � This problem relates to problem such as scheduling, register allocation, optimization.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring We reach a end node without being able to generate a solution…so we need to backtrack
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring � Variable order: A-F � Value order: Red, Green, Blue.
Graph Coloring
Graph Coloring
Graph Coloring
Graph Colouring (SICStus Prolog) :- use_module(library(clpfd)). solve_AFRICA(A,B,C,D,E,F):- domain([A,B,C,D,E,F], 1, 3), % Variables & their domain size % colour 1=RED, 2=GREEN or 3=BLUE A #\= B, % Constraints A #\= F, B #\= F, B #\= C, F #\= E, C #\= E, C #\= D, E #\= D, labeling([],[A,B,C,D,E,F]). % assign values to the Variables | ?- solve_AFRICA (A,B,C,D,E,F). A = 1, B = 2, C = 1, D = 3, E = 2, F = 3? yes | ?-
CSP example: Scheduling � We have 7 patients that need different surgeries. � Our 4 Operations rooms are open 24/7 � We have 13 people in our medical staff, each surgery demands one or more from the staff. Exp. Duration (h) 16 6 13 7 5 18 4 Resource demand 2 9 3 7 10 1 11 (number of Staff) Starting time ? ? ? ? ? ? ? � Give us the optimal plan (starting time for the surgical task) to minimize the total end time?
A optimal solution! � An optimal schedule, all surgeries are conducted within 23 hours. � Utilisation of the 13 staff and the 4 rooms 100% Staff 50% Room 0% 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 39
CSP example: Scheduling */ TASK DURATION RESOURCE :- use_module(library(clpfd)). ==== ======== ======== :- use_module(library(lists), [append/3]). t1 16 2 t2 6 9 schedule(Ss, Rs, End) :- t3 13 3 length(Ss, 7), t4 7 7 Ds = [16,6,13,7,5,18,4], t5 5 10 Rs = [2,9,3,7,10,1,11], t6 18 1 domain(Ss,1,30), t7 4 11 /* domain([End],1,50), after(Ss, Ds, End), cumulative(Ss, Ds, Rs, 13), append(Ss, [End], Vars), labeling([minimize(End)], Vars). after([], [], _). after([S|Ss], [D|Ds], E) :- E #>= S+D, after(Ss, Ds, E). | ?- schedule(Ss,Rs,End). %% End of file Rs = [2,9,3,7,10,1,11], Ss = [1,17,10,10,5,5,1], End = 23 ? yes | ?-
Outline � Constraint Programming � History � Constraint Satisfaction � Constraint Satisfaction Problem (CSP) � Examples � Optimisation � Many solution � Over constrained � Commercial Application � Pointers � Summary
Optimisation � Case A: If there are many solution to the problem � Use some criteria to select the best one � E.g a cost function � Case B: If all constraints in a problem cannot be satisfied � Seek the “best” partial solution � E.g. use MAX-CSP or Constraint hierarchy
Optimization: Case A Cost function � The previous example simply found single solution 0 1 1 � A complete search discover two more solutions 0 1 2 2 2 2 � We can use a simple cost function to find the optimal solution � As an example take � Cost function = 5X1 + 2X2 – 1X2
Recommend
More recommend