Post on 01-May-2015
transcript
1
Esempi di consistenza sui Esempi di consistenza sui limitilimiti
X Y Z
D X D Y D Z
3 5
2 7 0 2 1 2( ) [ .. ], ( ) [ .. ], ( ) [ .. ]
Non consistente sui limiti, considera Z=2, poi X-3Y=10
Ma il dominio qui sotto e’ consistente sui limiti:
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 2 7 0 2 0 1
Confrontare con il dominio consistente sugli iper-archi:
D X D Y D Z( ) { , , }, ( ) { , , }, ( ) { , } 3 5 6 0 1 2 0 1
2
Ottenere la consistenza sui Ottenere la consistenza sui limitilimiti
Dato un dominio D, vogliamo modificare i limiti dei domini in modod che sia consistente sui limiti
Si usano delle regole di propagazione
3
Ottenere la consistenza sui Ottenere la consistenza sui limitilimiti
Consideriamo il vincolo primitivo X = Y + Z che e’ equivalente alle tre forme:
X Y Z Y X Z Z X Y
Ragionando sui valori minimi e massimi: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( , )
Regole di propagazione per il vincolo X = Y + Z
4
Ottenere la consistenza sui Ottenere la consistenza sui limitilimiti
X Y Z
D X D Y D Z
( ) [ .. ], ( ) [ .. ], ( ) [ .. ]4 8 0 3 2 2
Le regole di propagazione determinano che:
( ) ( )
( ) ( )
( ) ( )
0 2 2 5 3 2
4 2 2 6 8 2
4 3 1 8 8 0
X
Y
Z
Quindi i domini possono essere ridotti a:
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 5 2 3 2 2
5
Altre regole di propagazioneAltre regole di propagazione4 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( , )
Dato il dominio iniziale:D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 9 0 9 0 9
Determiniamo che:
Nuovo dominio:
W P C 9
4
9
3
9
2, ,
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 2 0 3 0 4
6
Disequazioni Disequazioni
Le disequazioni generano delle regole di propagazioni deboli: c’e’ propagazione solo quando una variabile ha un valore fisso che e’ uguale al minimo o massimo dell’altra variabile
Y Z
D Y D Z
D Y D Z
D Y D Z D Y D Z
( ) [ .. ], ( ) [ .. ]
( ) [ .. ], ( ) [ .. ]
( ) [ .. ], ( ) [ .. ] ( ) [ .. ], ( ) [ .. ]
2 4 2 3
2 4 3 3
2 4 2 2 3 4 2 2
no propagation
no propagation
prop
7
MoltiplicazioneMoltiplicazione X Y Z
Se tutte le variabili sono positive, e’ semplice: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( , )
Ma se le variabili possono essere 0 o negative?
Esempio:
Diventa:
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 8 1 2 1 3
D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 6 2 2 2 3
8
MoltiplicazioneMoltiplicazione X Y Z Calcolare i limiti di X esaminando i valori estremi:
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( , )}
Simile per limite superiore usando il massimo.
Ma questo non funziona per Y e Z? Se min(D,Z) <0 e max(D,Z)>0 non c’e’ nessuna restrizione per Y
X Y Z X Y d Z d { , , / } 4 4
Stiamo usando numeri reali (es. 4/d)
9
MoltiplicazioneMoltiplicazione ZYX Possiamo aspettare finche’ il range di Z e’ non negativo o non positivo e poi usare le regole
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( , )}
Divisione per 0:
ve ve
0 0
0
0
10
Algoritmo per la consistenza Algoritmo per la consistenza sui limitisui limiti
Applica ripetutamente le regole di propagazione ad ogni vincolo primitivo finche’ non viene modificato nessun dominio
Non dobbiamo ri-esaminare un vincolo primitivo se i domini delle sue variabili non sono modificati
11
Esempio di consistenza sui Esempio di consistenza sui limitilimiti
Problema dello zaino del ladro (senza whisky)
capacity profit
W P C W P C4 3 2 9 15 10 7 30
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 4
7/010/215/28 CPW
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4
Non c’e piu’ nessuna modifica.
Notare che abbiamo dovuto riesaminare il vincolo di profitto.
12
Risolutore per la consistenza Risolutore per la consistenza sui limitisui limiti
D := bounds_consistentbounds_consistent(C,D) if D e’ un dominio falso
return false if D e’ un dominio valutazione
return satisfiable(C,D) return unknown
13
Ricerca con backtracking Ricerca con backtracking combinata con la consistenza combinata con la consistenza sui limitisui limiti
Applicare la consistenza sui limiti prima di iniziare la ricerca con backtracking e dopo ogni assegnamento di un valore ad una variabile
14
EsempioEsempio
Problema del ladrocapacity 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 9Dominio corrente:
Consistenza sui limiti iniziale:
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)
Trovata una soluzione: return true
15
EsempioEsempio
Problema del ladrocapacity profit
W P C W P C4 3 2 9 15 10 7 30 Dominio corrente:
Consistenza sui limiti iniziale:Backtrack
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)
Non ci sono altre soluzioni
16
Consistenza generalizzataConsistenza generalizzata
Possiamo usare qualunque metodi di consistenza diversi su vincoli diversi, e comunicheranno attraverso I dimini delle variabili node consistency : per vincoli primitivi con 1 arc consistency: per vinoli primitivi con 2 var bounds consistency: altri vincoli primitivi
A volte possiamo eliminare piu’ valori usando vincoli ‘’complessi’’ e metodi di consistenza specializzati
17
AlldifferentAlldifferent
alldifferent({V1,...,Vn}) e’ soddisfatto quando ogni variabile V1,..,Vn ha un valore diverso alldifferent({X, Y, Z}) e’ equivalente a
E’ consistente sugli archi con il dominio
Ma non c’e’ soluzione! la consistenza specializzata per alldifferent puo’ scoprirlo
X Y X Z Y Z
}2,1{)(},2,1{)(},2,1{)( ZDYDXD
18
Alldifferent ConsistencyAlldifferent Consistency
Sia c della forma alldifferent(V) while esiste v in V dove D(v) = {d}
V := V - {v} for ogni v’ in V
D(v’) := D(v’) - {d} DV := unione di tutti i D(v) per v in V if |DV| < |V| then return false domain return D
19
Alldifferent ExamplesAlldifferent Examplesalldifferent X Y Z
D X D Y D Z
({ , , })
( ) { , }, ( ) { , }, ( ) { , } 1 2 1 2 1 2
DV = {1,2}, V={X,Y,Z} quindi scopre la non soddisfacibilita’
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} non la scopre
Algoritmi basti su matching massimo potrebbero scoprirla:X Y Z T
1 2 3 4 5
20
Altri vincoli complessiAltri vincoli complessi
schedulare n lavori con tempi iniziali Si e durate Di che usano risorse Ri in cui L risorse sono disponibili in ogni momento
Accesso all’array: se I = i, allora X = Vi e se X != Vi allora I != i
cumulative S S D D R R Ln n n([ , , ],[ , , ],[ , , ], )1 1 1
element I V V Xn( ,[ , , ], )1
21
Ottimizzazione per CSPsOttimizzazione per CSPs
Dato che i domini sono finiti, possiamo usare un risolutore per costruire un ottimizzatore banale
retry_int_optretry_int_opt(C, D, f, best) D2 := int_solvint_solv(C,D) if D2 e’ un dominio falso then return best sia sol la soluzione corrispondente a D2 return retry_int_optretry_int_opt(C /\ f < sol(f), D, f, sol)
22
EsempioEsempio
Problema del ladro (ottimizzare il profitto)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
minimize subject to
15 10 7
4 3 2 9 15 10 7 30
15 10 7 31 15 10 7 32
0 9 0 9 0 9
W P Ccapacity profit
W P C W P C
W P C W P C
D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ]
Nessuna altra soluzione!
Return la sol. migliore
23
Backtracking + OttimizzazioneBacktracking + Ottimizzazione
Dato che il risolutore puo’ usare la ricerca con backtracking, e’ meglio combinarla con l’ottimizzazione
Ad ogni passo della ricerca con backtracking, se best e’ la soluzione ottima vista finora, aggiungi il vincolo f < best(f)
24
EsempioEsempio
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 9Dominio corrente:
Consistenza sui limiti iniziale:
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)
Soluzione trovata aggiungi il vincolo
Problema del ladrocapacity profit
W P C W P C
W P C
4 3 2 9 15 10 7 30
15 10 7 31
25
EsempioEsempio
Consistenza sui limiti iniziale:
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)
Problema del ladro
W = 2
false
Return l’ultima sol (1,1,1)
26
Ottimizzazione con Branch Ottimizzazione con Branch and Boundand Bound
Il metodo precedente, a differenza del simplesso, non usa la funzione obbiettivo per dirigere la ricerca
Ottimizzazione branch and bound per (C,f) Usare il simplesso per trovare una soluzione reale Se la soluzione e’ intera, stop Altrimenti scegliere una var x con valore non intero d e
esaminare I problemi
Usare la soluzione ottima corrente per vincolare I problemi
( , ) ( , )C x d f C x d f
27
EsempioEsempioProblema del ladro
{ / , , }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 0Soluzione (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 1Soluzione (1,1,1) = 32
Peggio della sol ottima
false
false
28
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