1 Wykład 3: Skończone dziedziny Wykład 3: Skończone dziedziny więzowe więzowe
Jan 12, 2016
1
Wykład 3: Skończone dziedziny Wykład 3: Skończone dziedziny więzowewięzowe
2
Skończone dziedziny więzoweSkończone dziedziny więzowe
Problem spełnialności więzów Solwer nawracający zgodność łukowa i węzłowa zgodność graniczna zgodność uogólniona Optymalizacja dla arytm. csp
3
Skończone dziedziny więzoweSkończone dziedziny więzowe
Ważna klasa dziedzin więzowych Używana do modelowania problemów
związanych z przydziałem prac, wyborem tras, planowaniem
Najbardziej użyteczna dla przemysłu dziedzina więzowa
4
Problem spełnialności więzówProblem spełnialności więzów
Problem spełnialności więzów składa się (CSP) : Z więzu C nad zmiennymi x1,..., Xn Dziedziny D która przypisuje zmiennej xi zbiór
możliwych wartości d(xi) Rozumiemy go jako więz jako więz
C x D x xn D xn 1 1( ) ( )
5
Kolorowanie mapKolorowanie map
Klasycznym CSP jest problem takiego kolorowania mapy, że sąsiadujące obszary mają różne kolory
WA
NT
SA
Q
NSW
V
T
Czy można pokolorować mapę Australii 3-ma kolorami?
WA NT WA SA NT SA
NT Q SA Q SA NSW
SA V Q NSW NSW V
D WA D NT D SA D Q
D NSW D V D T
red yellow blue
( ) ( ) ( ) ( )
( ) ( ) ( )
{ , , }
6
4 hetmany4 hetmany
Umieść 4 hetmany na szachownicy 4 x 4 tak, by się wzajemnie nie szachowały
Q1 Q2 Q3 Q4
1
2
3
4
Cztery zmienne Q1, Q2, Q3, Q4 rząd hetmana w każdej kolumnie. Dziedziną każdej zmiennej jest {1,2,3,4}
Jedyne rozwiązanie! -->
7
4 hetmany4 hetmany
Więzy:
Q Q Q Q Q Q
Q Q Q Q Q Q
Q Q Q Q Q Q
Q Q Q Q Q Q
Q Q Q Q Q Q
Q Q Q Q Q Q
1 2 1 3 1 4
2 3 2 4 3 4
1 2 1 1 3 2 1 4 3
2 3 1 2 4 2 3 4 1
1 2 1 1 3 2 1 4 3
2 3 1 2 4 2 3 4 1
Nie w jednym rzędzie
Inne przekątne (góra)
Inne przekątne (dół)
8
Plecak przemytnikaPlecak przemytnika
Przemytnik z plecakiem o pojemności 9, musi wybrać rzeczy zapewniające zysk co najmniej 30
27
310
415
papierosy
perfumy
whiskey
rozmiarzyskrzecz
4 3 2 9 15 10 7 30W P C W P C
Jaka powinna być dziedzina zmiennych?
9
Prosty solwer nawracającyProsty solwer nawracający
Najprostszy sposób rozwiązania csp to przejrzeć wszystkie możliwe rozwiązania
solver nawracający: wylicza po kolei wartości dla każdej zmiennej Sprawdza, czy jakiś więz bazowy staje się fałszywy
Zakładamy, że satisfiable(c) zwraca false gdy więz bazowy c bez zmiennych jest niespełnialny
10
Częściowo spełnialnyCzęściowo spełnialny
Sprawdź, czy więz jest niespełnialny z powodu więzu bazowego bez zmiennych
Partial_satisfiablePartial_satisfiable(c) For each primitive constraint c in C
If vars(c) is empty If satisfiable(c) = false return false
Return true
11
Solwer nawracającySolwer nawracający
Back_solveBack_solve(c,D) If vars(c) is empty return partial_satisfiablepartial_satisfiable(c) Choose x in vars(c) For each value d in D(x)
Let c1 be c with x replaced by d If partial_satisfiable(partial_satisfiable(c1) then
If back_solveback_solve(c1,D) then return true Return false
12
Solwer nawracającySolwer nawracającyX Y Y Z D X D Y D Z ( ) ( ) ( ) { , }1 2
X Y Y Z
Choose var X domain {1,2}
X 1
1 Y Y ZWybierz zm. Y dziedzina {1,2}
Y 1
1 1 1 Z
Częściowo spełn.Częściowo spełn. false
Y 2
1 2 2 Z
Wybierz zm. Z dziedzina {1,2}
Z 1
1 2 2 1 Brak zmiennych, zatem false
Z 2
1 2 2 2
Brak zmiennych, i false
Zmienna X dziedzina {1,2}
X 2
2 Y Y ZWybierz zm. Y dziedzina {1,2}
2 1 1 Z 2 2 2 Z
13
Zgodność węzłowa i łukowaZgodność węzłowa i łukowa
Postawowa idea: znajdź CSP równoważny oryginalnemu, ale z mniejszymi dziedzinami
W danym momence analizuj 1 więz bazowy c zgodność węzłowa: (vars(c)={x}) usuń każdą
wartość z dziedziny x, która falsyfikuje c. zgodność łukowa: (vars(c)={x,y}) usuń każdą
wartość z d(x) dla której nie ma wartości w d(y) spełniającej c i vice versa
14
Zgodność węzłowaZgodność węzłowa
Więz bazowy c jest zgodny węzłowo z dziedziną D jeśli |vars(c)| !=1 lub Jeżeli vars(c) = {x} wtedy dla każdego d w d(x) przypisanie d do X jest rozwiązaniem c
CSP jest zgodny węzłowo, jeżeli każdy więz bazowy jest zgodny węzłowo
15
Przykłady na zgodność Przykłady na zgodność węzłowąwęzłową
CSP nie jest zgodny węzłowo (zob. Z)X Y Y Z Z
D X D Y D Z
2
1 2 3 4( ) ( ) ( ) { , , , }
Poniższy CSP jest zgodny węzłowo
X Y Y Z Z
D X D Y D Z
2
1 2 3 4 1 2( ) ( ) { , , , }, ( ) { , }
Kolorowanie mapy i 4-hetmany to CSP zgodne węzłowo.
16
Osiąganie zgodności węzłowejOsiąganie zgodności węzłowej
Node_consistentNode_consistent(c,d) For each prim. constraint c in C
D := node_consistent_primitivenode_consistent_primitive(c, D) Return D
Node_consistent_primitiveNode_consistent_primitive(c, D) If |vars(c)| =1 then
Let {x} = vars(c)
Return DD x d D x x d c( ): { ( )|{ } } is a solution of
17
Zgodność łukowaZgodność łukowa
Więz bazowy c jest zgodny łukowo z dziedziną D jeśli |vars{c}| != 2 lub
Vars(c) = {x,y}, dla każdego d w d(x) istnieje e w d(y) Podobnie dla y
Więz jest zgodny łukowo, jeżeli wszystkie jego więzy bazowe są zgodne łukowo
{ , }x d y e c is a solution of
18
Przykłady na zgodność Przykłady na zgodność łukowąłukową
Ten CSP jest zgodny węzłowo, ale nie łukowoX Y Y Z Z
D X D Y D Z
2
1 2 3 4 1 2( ) ( ) { , , , }, ( ) { , }
Np.wartość 4 dla X oraz X < Y.
Następujące CSP jest spójne łukowo
X Y Y Z Z
D X D Y D Z
2
( ) ( ) ( )
Kolorowanie map i 4-hetmaty to CSP spójne łukowo
19
Osiąganie spójności łukowejOsiąganie spójności łukowej
Arc_consistent_primitiveArc_consistent_primitive(c, D) If |vars(c)| = 2 then
Return D Usuń wartości, które nie stanowią zgodnych
łuków z c
D x d D x e D y
x d y e c
( ): { ( )| ( ),
{ , } }
exists
is a soln of
D y e D y d D x
x d y e c
( ): { ( )| ( ),
{ , } }
exists
is a soln of
20
Osiąganie spójności łukowejOsiąganie spójności łukowej
Arc_consistentArc_consistent(c,d) Repeat
W := d For each prim. Constraint c in C
D := arc_consistent_primitivearc_consistent_primitive(c,d) Until W = D Return D
21
Używanie zgodności w. i ł.Używanie zgodności w. i ł.
Możemy zbudować solwer więzowy korzystając ze spójności
Dwa istotne rodzaje dziedzin Dziedzina ,,fałszywa’’: pewna zmienna ma pustą
dziedzinę Dziedzina ,,wartościująca’’: każda zmienna ma
jednopunktową dziedzinę Rozszerzamy satisfiable do CSP z dziedziną
wartosciującą
22
Solwer zgodnościowySolwer zgodnościowy
D := node_consistentnode_consistent(C,D) D := arc_consistentarc_consistent(C,D) if D is a false domain
return false if D is a valuation domain
return satisfiable(C,D) return unknown
23
Solwer zgodnościowySolwer zgodnościowyKolorowanie Australii z więzami
WA NT WA SA NT SA
NT Q SA Q SA NSW
SA V Q NSW NSW V
greenNTredWA
WA NT SA Q NSW V T
zgodność
węzłowa
24
PrzykładPrzykładKolorowanie Austalii: z więzami
WA NT WA SA NT SA
NT Q SA Q SA NSW
SA V Q NSW NSW V
greenNTredWA
WA NT SA Q NSW V T
zgodność
łukowa
25
PrzykładPrzykładKolorowanie Australii: z więzami
VNSWNSWQVSA
NSWSAQSAQNT
SANTSAWANTWA
greenNTredWA
WA NT SA Q NSW V T
zgodność
łukowa
26
PrzykładPrzykładKolorowanie Australii: z więzami
WA NT WA SA NT SA
NT Q SA Q SA NSW
SA V Q NSW NSW V
greenNTredWA
WA NT SA Q NSW V T
zgodność
łukowa
Odpowiedź:
unknown
27
zgodnościowy solwer zgodnościowy solwer nawracającynawracający
Możemy połączyć zgodność z solwerem nawracającym
Ze spójności korzysta się przed uruchomieniem solwera i za każdym razem gdy wybrana zostanie wartość dla zmiennej.
28
Przykład: solwer n-zPrzykład: solwer n-z
Żadnej możliwej
wartości dlaQ3!
Q1 Q2 Q3 Q4
1
2
3
4
Nie możnaprzypisać
żadnej wartościdla Q3
Musimy zatem wybrać
inną wartość dla Q2.
29
Przykład: solwer n-zPrzykład: solwer n-zQ1 Q2 Q3 Q4
1
2
3
4
We cannot find any
possible valuefor Q4 inthis case!
Backtracking…
Find another value for Q3?
No!
backtracking,
Find anothervalue of Q2?
No!
nawracanie,
Znajdź innąwart. dla Q2
Q2=2
30
Przykład: solwer n-zPrzykład: solwer n-zQ1 Q2 Q3 Q4
1
2
3
4
31
Przykład: solwer n-zPrzykład: solwer n-zQ1 Q2 Q3 Q4
1
2
3
4
32
zgodność: przykładzgodność: przykładKolorowanie Australii: z więzami
greenNTredWA
WA NT SA Q NSW V T
Wyliczanie z
nawracaniem
Wybierz zmienną z dziedziną większą niż 1, T
Dodaj więz T red Zastosuj zgodność
Answer: true
33
Zgodność granicznaZgodność graniczna
A co z więzami bazowymi z więcej niż jedną zmienną?
zgodność hiperłukowa: zozszerzenie spójności łukowej do dowolnej liczby zmiennech
Niestety problem ten jest NP-trudny Jak to rozwiązać?
34
zgodność granicznazgodność graniczna
Arytmetyczne CSP: więzy są całkowite zasięg: [l..u] przedstawia zbiór liczb
całkowitych {l, l+1, ..., u} pomysł: użyj zgodności dla liczb
rzeczywistych i zajmuj się jedynie końcami dziedzin każdej zmiennej
min(D,x) definiujemy jako najmniejszy element dziedziny, podobnie max(D,x)
35
zgodność granicznazgodność graniczna
Więz bazowy c jest zgodny granicznie z dziedziną D jeśli dla każdej zmiennej x w vars(c) istnieją rzeczywiste d1, ..., dk dla pozostałych zmiennych
x1, ..., xk takie, że
jest rozwiązaniem c i podobnie dla
Arytmetyczne CSP jest zgodne granicznie, jeżeli wszystkie jego więzy są z.g.
{ min( , ), , }x D x x d xk dk 1 1
{ max( , )}x D x
36
zgodność graniczna. Przykładzgodność graniczna. Przykład
X Y Z
D X D Y D Z
3 5
2 7 0 2 1 2( ) [ .. ], ( ) [ .. ], ( ) [ .. ]
Nie jest zgodny granicznie, gdy Z=2, to X-3Y=10
Dziedzina poniżej jest spójna granicznie
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 2 7 0 2 0 1
Porównaj z dziedziną spójną hiperłukowo
D X D Y D Z( ) { , , }, ( ) { , , }, ( ) { , } 3 5 6 0 1 2 0 1
37
Osiąganie zgodności granicznejOsiąganie zgodności granicznej
Dla danej bieżącej dziedziny D chcemy tak zmodyfikować jej punkty graniczne, by osiągnąć zgodność
zrobią to reguły propagacji
38
Osiąganie zgodności granicznejOsiąganie zgodności granicznej
Rozważmy więz bazowy X = Y + Z równoważny trzem następującym postaciom
X Y Z Y X Z Z X Y
Wnioskowanie o wartościach minimalnej i maksymalnej:
X D Y D Z X D Y D Z
Y D X D Z Y D X D Z
Z D X D Y Z D X D Y
min( , ) min( , ) max( , ) max( , )
min( , ) max( , ) max( , ) min( , )
min( , ) max( , ) max( , ) min( , )
Reguły propagacji dla więzu X = Y + Z
39
Osiąganie zgodności granicznejOsiąganie zgodności granicznejX Y Z
D X D Y D Z
( ) [ .. ], ( ) [ .. ], ( ) [ .. ]4 8 0 3 2 2
Powyższe reguły wymuszają:
( ) ( )
( ) ( )
( ) ( )
0 2 2 5 3 2
4 2 2 6 8 2
4 3 1 8 8 0
X
Y
Z
Zatem można zredukować dziedzinę do
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 5 2 3 2 2
40
Więcej reguł propagacjiWięcej reguł propagacji4 3 2 9
9
4
3
4
2
49
3
4
3
2
39
2
4
2
3
2
W P C
W D P D C
P D W D C
C D W D P
min( , ) min( , )
min( , ) min( , )
min( , ) min( , )
Dla zadanej dziedziny początkowej:D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 9 0 9 0 9
Otrzymujemy, że
nowa dziedzina:
W P C 9
4
9
3
9
2, ,
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 2 0 3 0 4
41
NierównościNierówności
Takie nierówności dają słabe reguły propagacji, jedynie wówczas, gdy jedna ze stron ma ustaloną wartość równą minimalnej bądź maksymalnej wartości tej drugiej.
Y Z
]2..2[)(],4..3[)( prop]2..2[)(],4..2[)(
propagacji bez]3..3[)(],4..2[)(
propagacji bez]3..2[)(],4..2[)(
ZDYDZDYD
ZDYD
ZDYD
42
MnożenieMnożenie X Y Z
Proste, gdy wszyskie zmienne są dodatnieX D Y D Z X D Y D Z
Y D X D Z Y D X D Z
Z D X D Y Z D X D Y
min( , ) min( , ) max( , ) max( , )
min( , ) / max( , ) max( , ) / min( , )
min( , ) / max( , ) max( , ) / min( , )
Ale co ze zmiennymi, które mogą być 0 jub mniej?
Przykładowo:
staje się:
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 8 1 2 1 3
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 6 2 2 2 3
43
MnożenieMnożenie X Y Z
Oblicz ograniczenia na X analizując wartości ekstremalne
X D Y D Z D Y D Z
D Y D Z D Y D Z
minimum{min( , ) min( , ), min( , ) max( , )
max( , ) min( , ), max( , ) max( , )}
Podobnie dla górnych ograniczeń X używając maksimum
Nie działa dla Y i Z? Jeśli min(D,Z) <0 i max(D,Z)>0 to nie można ograniczyć przedziały Y
X Y Z X Y d Z d { , , / } 4 4
(używamy wartości rzeczywistych (e.g. 4/d)
44
MnożenieMnożenie X Y Z
Możemy czekać, aż do momentu gdy zasięg Z będzie dodatni lub ujemny i wówczas użyć reguł
Y D X D Z D X D Z
D X D Z D X D Z
minimum{min( , ) / min( , ), min( , ) / max( , )
max( , ) / min( , ), max( , ) / max( , )}
division by 0:
ve ve
0 0
0
0
45
Algorytm zgodności granicznejAlgorytm zgodności granicznej
Stosuj reguły propagacji dla więzów bazowych, aż nie będzie możliwa żadna zmiana dziedziny
Nie musimy zajmować się więzem jeżeli nie zmieniły się dziedziny zmiennych w nim zawartych
46
zgodność graniczna: przykładzgodność graniczna: przykład
Problem plecakowy (nie ma whiskey)
30710159234 CPWCPW
zyskpojemnosc
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 0 9 0 9
W P C 102 15 12 10 60 7/ / /W P C 9 4 9 3 9 2/ / /
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 0 3 0 4W P C 28 15 2 10 0 7/ / /
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4
Dalej nie ma żadnych zmian
Musimy jeszcze raz zanalizować więz ,,zyskowy’’
47
Solwer graniczny zgodnościowySolwer graniczny zgodnościowy
D := bounds_consistentbounds_consistent(C,D) if D is a false domain
return false if D is a valuation domain
return satisfiable(C,D) return unknown
48
Nawracający solwer Nawracający solwer zgodnościowy g.zgodnościowy g.
Zastosuj solwer zgodnościowy g przed uruchomieniem solwera nawracającego i za każdym razem, gdy zmiennej nadana zostanie wartość
49
Przykład: solwer nsgPrzykład: solwer nsg
Problem plecaka (dostępna whiskey)capacity profit
W P C W P C4 3 2 9 15 10 7 30
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 9 0 9 0 9Bieżąca dziedzina:
Początkowa zgodność graniczna
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 2 0 3 0 4
W = 0
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4
P = 1
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 1 3 3
(0,1,3)
Znaleziono rozwiązanie: zwracaj true
50
Przykład: solwer nsgPrzykład: solwer nsg
Problem plecakowy (dostępna whiskey)capacity profit
W P C W P C4 3 2 9 15 10 7 30 Bieżąca dziedzina:
Początkowa zgodność granicznaBacktrack
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4
P = 2
D W D P D C( ) , ( ) , ( )
false
Backtrack
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4
P = 3
D W D P D C( ) { }, ( ) { }, ( ) { } 0 3 0
W = 0
P = 1
(0,1,3) (0,3,0)
W = 1
(1,1,1)
W = 2
(2,0,0)
Brak dalszych rozw.
51
zgodność uogólnionazgodność uogólniona
Can use any consistency method with any other communicating through the domain, zgodność węsłowa : więzy bazowe z 1 zm. zgodność łukowa: więzy bazowe z 2 zm. zgodność graniczna: inne więzy bazowe
czasami możemy otrzymać więcej używającz złożonych zmiennych i specjalnych metod zgodnościowych
52
AlldifferentAlldifferent
alldifferent({V1,...,Vn}) zachodzi gdy każda ze zmiennych V1,..,Vn ma inną wartość alldifferent({X, Y, Z}) jest równoważny
zgodny łukowo z dziedziną
Jednak nie ma on rozwiązania!, co mogą wykryć metody specyficzne dla alldifferent
X Y X Z Y Z
D X D Y D Z( ) { , }, ( ) { , }, ( ) { , } 1 2 1 2 1 2
53
Więz alldifferentWięz alldifferent
let c be of the form alldifferent(V) while exists v in V where D(v) = {d}
V := V - {v} for each v’ in V
D(v’) := D(v’) - {d} DV := union of all D(v) for v in V if |DV| < |V| then return false domain return D
54
Przykład z alldifferentPrzykład z alldifferentalldifferent X Y Z
D X D Y D Z
({ , , })
( ) { , }, ( ) { , }, ( ) { , } 1 2 1 2 1 2
DV = {1,2}, V={X,Y,Z} wykryta niespełnialnośćalldifferent X Y Z T
D X D Y D Z D T
({ , , , })
( ) { , }, ( ) { , }, ( ) { , }, ( ) { , , , } 1 2 1 2 1 2 2 3 4 5
DV = {1,2,3,4,5}, V={X,Y,Z,T} niewykryta niesp. Mogłaby pomóc zgodność bazująca na maks. dopasowaniuX Y Z T
1 2 3 4 5
55
Inne złożone więzyInne złożone więzy
zaplanuj n zadań o początkach w chwilach Si trwających Di wymagających Ri jednostegok pewnego zasobu, którego w każdym momencie jest dostępnych L jednostek
Dostęp do tablicy, jeśli I = i, to X = Vi i jeśli X != Vi to I != i
cumulative S S D D R R Ln n n([ , , ],[ , , ],[ , , ], )1 1 1
element I V V Xn( ,[ , , ], )1
56
Optymalizacja dla CSPOptymalizacja dla CSP
Ponieważ dziedziny są skończone, możemy użyć solwera do budowy prostej procedury optymalizującej
retry_int_optretry_int_opt(C, D, f, best) D2 := int_solvint_solv(C,D) if D2 is a false domain then return best let sol be the solution corresponding to D2 return retry_int_optretry_int_opt(C /\ f < sol(f), D, f, sol)
57
Retry Optimization ExampleRetry Optimization Example
Problem przemytniczego plecaka (optymalny zysk)minimize subject to
15 10 7
4 3 2 9 15 10 7 30
0 9 0 9 0 9
W P Ccapacity profit
W P C W P C
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ]
First solution found: D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 1 3 3
Corresponding solution sol W P C{ , , } 0 1 3
sol f( ) 31
minimize subject to
15 10 7
4 3 2 9 15 10 7 30
15 10 7 31
0 9 0 9 0 9
W P Ccapacity profit
W P C W P C
W P C
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ]
Next solution found: D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 1 1 1 1 1 1
sol W P C{ , , } 1 1 1
sol f( ) 32
]9..0[)(],9..0[)(],9..0[)(
32710153171015
30710159234
subject to 71015 minimize
CDPDWD
CPWCPW
CPWCPW
profitcapacityCPW
Nie ma nast..rozw!
Zwraca najlepsze
58
Backtracking OptimizationBacktracking Optimization
Since the solver may use backtrack search anyway combine it with the optimization
At each step in backtracking search, if best is the best solution so far add the constraint f < best(f)
59
Back. Optimization ExampleBack. Optimization Example
Smugglers knapsack problem (whiskey available)capacity profit
W P C W P C4 3 2 9 15 10 7 30
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 9 0 9 0 9Bieżąca dziedzina:
Initial bounds consistency
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 2 0 3 0 4
W = 0
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4
P = 1
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 1 3 3
(0,1,3)
Znaleziono rozwiązanie: dodaj więz
Problem przemytniczego plecaka (whiskey available)capacity profit
W P C W P C
W P C
4 3 2 9 15 10 7 30
15 10 7 31
60
Back. Optimization ExampleBack. Optimization Example
Initial bounds consistency
capacity profit
W P C W P C
W P C
4 3 2 9 15 10 7 30
15 10 7 31
P = 2
false
P = 3
false
W = 1
(1,1,1)
Modify constraint
capacity profit
W P C W P C
W P C
4 3 2 9 15 10 7 30
15 10 7 32
W = 0
P = 1
(0,1,3)
Smugglers knapsack problem (whiskey available)
W = 2
false
Return last sol (1,1,1)
61
Branch and Bound Opt.Branch and Bound Opt.
The previous methods,unlike simplex don't use the objective function to direct search
branch and bound optimization for (C,f) use simplex to find a real optimal, if solution is integer stop otherwise choose a var x with non-integer opt value
d and examine the problems
use the current best solution to constrain prob. ( , ) ( , )C x d f C x d f
62
Branch and Bound ExampleBranch and Bound ExampleSmugglers knapsack problem
{ / , , }W P C 11 4 0 0W 2 W 3
{ , / , }W P C 2 1 3 0P 0 P 1
{ , , / }W P C 2 0 1 2C 0 C 1
{ , , }W P C 2 0 0Solution (2,0,0) = 30
{ / , , }W P C 7 4 0 1W 1 W 2
{ , , / }W P C 1 0 5 2C 2 C 3
false { / , , }W P C 3 4 0 3W 0 W 1
false false
false
{ / , , }W P C 6 4 1 0W 1 W 2
{ , / , }W P C 1 5 3 0P 1 P 2
{ , , }W P C 1 1 1Solution (1,1,1) = 32
Worse than best sol
false
false
63
Finite Constraint Domains Finite Constraint Domains SummarySummary
CSPs form an important class of problems Solving of CSPs is essentially based on
backtracking search Reduce the search using consistency methods
node, arc, bound, generalized Optimization is based on repeated solving or
using a real optimizer to guide the search