Risolvere vincoli soft Francesca Rossi Giugno 2004
Metodo dei tagli Dato P soft, e dato in semianello, costruisco P : Dato P soft, e dato in semianello, costruisco P : stesso grafo di Pstesso grafo di P in ogni vincolo, solo le tuple con valore > in ogni vincolo, solo le tuple con valore >
Proprieta’ t soluzione ottima di P con valore v t soluzione ottima di P con valore v Per ogni <v, P consistente e t soluzione di P Per ogni <v, P consistente e t soluzione di P Per ogni ≥ v, P inconsistente Per ogni ≥ v, P inconsistente Vere solo se x idempotente Vere solo se x idempotente
Metodo di soluzione Per trovare le soluzioni ottime di P: Per trovare le soluzioni ottime di P: Trovare il P consistente tale che per ogni > , P inconsistenteTrovare il P consistente tale che per ogni > , P inconsistente Le soluzioni di P sono le soluzioni ottime di P Le soluzioni di P sono le soluzioni ottime di P Basta controllare i P con presente in P Basta controllare i P con presente in P Ricerca binaria su questi O(log(kd 2 )) chiamate ad un risolutore di vincoli classici Ricerca binaria su questi O(log(kd 2 )) chiamate ad un risolutore di vincoli classici k= numero vincolik= numero vincoli d = grandezza dei dominid = grandezza dei domini
Branch and bound Stesso schema dei vincoli classici Stesso schema dei vincoli classici Lower bound = valore della soluzione migliore trovata finora (all’inizio 0) Lower bound = valore della soluzione migliore trovata finora (all’inizio 0) Upper bound per ogni nodo Upper bound per ogni nodo Se ub > lb non entrare nel sottoalbero Se ub > lb non entrare nel sottoalbero
Upper bounds t = assegnamento alle variabili passate t = assegnamento alle variabili passate ub1= x c(t), con c gia’ assegnati da t ub1= x c(t), con c gia’ assegnati da t ub2 = x ub(cji), per xi in F, xj in P, ub2 = x ub(cji), per xi in F, xj in P, Ub(cji) = +cji(vj,a) per a in DiUb(cji) = +cji(vj,a) per a in Di ub3 = x (+ cij(a,b)) ub3 = x (+ cij(a,b)) x su xi, xj in Fx su xi, xj in F + su a in Di, b in Dj+ su a in Di, b in Dj Ub = ub1 x ub2 x ub3 (o solo uno o due degli ub) Ub = ub1 x ub2 x ub3 (o solo uno o due degli ub)
Upper bounds – vincoli con costo (min +) t = assegnamento alle variabili passate t = assegnamento alle variabili passate ub1= + c(t), con c gia’ assegnati da t ub1= + c(t), con c gia’ assegnati da t ub2 = + ub(cji), per xi in F, xj in P, ub2 = + ub(cji), per xi in F, xj in P, Ub(cji) = min cji(vj,a) per a in DiUb(cji) = min cji(vj,a) per a in Di ub3 = + (min cij(a,b)) ub3 = + (min cij(a,b)) x su xi, xj in Fx su xi, xj in F + su a in Di, b in Dj+ su a in Di, b in Dj Ub = ub1 + ub2 + ub3 (o solo uno o due degli ub) Ub = ub1 + ub2 + ub3 (o solo uno o due degli ub)
Upper bounds -- fuzzy t = assegnamento alle variabili passate t = assegnamento alle variabili passate ub1= min c(t), con c gia’ assegnati da t ub1= min c(t), con c gia’ assegnati da t ub2 = min ub(cji), per xi in F, xj in P, ub2 = min ub(cji), per xi in F, xj in P, Ub(cji) = max cji(vj,a) per a in DiUb(cji) = max cji(vj,a) per a in Di ub3 = min (max cij(a,b)) ub3 = min (max cij(a,b)) x su xi, xj in Fx su xi, xj in F + su a in Di, b in Dj+ su a in Di, b in Dj Ub = min(ub1, ub2, ub3) (o solo uno o due degli ub) Ub = min(ub1, ub2, ub3) (o solo uno o due degli ub)
Branch and bound con propagazione La propagazione di vincoli soft abbassa le preferenze nei domini ub1, ub2, ub3 piu’ bassi piu’ probabile che ub < lb piu’ probabile il pruning La propagazione di vincoli soft abbassa le preferenze nei domini ub1, ub2, ub3 piu’ bassi piu’ probabile che ub < lb piu’ probabile il pruning ub1= x c(t), con c gia’ assegnati da tub1= x c(t), con c gia’ assegnati da t ub2 = x cji(vj,a) per xi in F, xj in P, a in Diub2 = x cji(vj,a) per xi in F, xj in P, a in Di ub3 = x (+ cij(a,b))ub3 = x (+ cij(a,b)) x su xi, xj in F x su xi, xj in F + su a in Di, b in Dj + su a in Di, b in Dj ub = ub1 x ub2 x ub3 (o solo uno o due degli ub)ub = ub1 x ub2 x ub3 (o solo uno o due degli ub)
Eliminazione delle variabili Come consistenza adattiva Come consistenza adattiva Scelgo una variabile, x Scelgo una variabile, x X e’ connessa da vincoli C all’insieme di variabili Y X e’ connessa da vincoli C all’insieme di variabili Y Calcolo x(C) e proietto su Y, e aggiungo il nuovo vincolo su Y Calcolo x(C) e proietto su Y, e aggiungo il nuovo vincolo su Y Posso dimenticarmi di X e dei vincoli C Posso dimenticarmi di X e dei vincoli C Lo stesso per tutte le variabili Lo stesso per tutte le variabili Quando ho solo una variabile, la sua preferenza piu’ alta e’ il valore dele soluzioni ottime Quando ho solo una variabile, la sua preferenza piu’ alta e’ il valore dele soluzioni ottime Per trovare le sol. ottime: istanzio le variabili nll’ordine opposto alla eliminazione, prendendo un valore con preferenza piu’ alta Per trovare le sol. ottime: istanzio le variabili nll’ordine opposto alla eliminazione, prendendo un valore con preferenza piu’ alta
Complessita’ Tanti passi quante sono le variabili (n) Tanti passi quante sono le variabili (n) Ad ogni passo, tempo esponenziale nel numero di variabili in Y +1, spazio esponenziale nel numero di variabili in Y Ad ogni passo, tempo esponenziale nel numero di variabili in Y +1, spazio esponenziale nel numero di variabili in Y Poi altri n passi per trovare una soluzione ottima Poi altri n passi per trovare una soluzione ottima Tempo: O(n x exp(|Y|) +n) Tempo: O(n x exp(|Y|) +n)
Taglio dei cicli Problema ad albero |Y| = 1 ad ogni passo O(n x d2) Problema ad albero |Y| = 1 ad ogni passo O(n x d2) Se non ad albero posso tagliare i cicli e trasformarlo in un albero Se non ad albero posso tagliare i cicli e trasformarlo in un albero Come taglio un ciclo: individuo un sottoinsieme di variabili del ciclo che, se eliminate, eliminerebbero il ciclo, e le istanzio Come taglio un ciclo: individuo un sottoinsieme di variabili del ciclo che, se eliminate, eliminerebbero il ciclo, e le istanzio Il sottoproblema rimasto e’ ad albero Il sottoproblema rimasto e’ ad albero Nuovo branch and bound: Nuovo branch and bound: 1.elimino variabili dove |Y| =1 2.istanzio variabili per eliminazione di un ciclo 3.ripeto da 1
Proposte di progetti 1. Branch and bound con uno degli ub per vincoli fuzzy, o parametrico rispetto alle due operazioni, con funzione identita’ per la propagazione 2. AC soft per vincoli fuzzy, da poter inserire in 1 3. Metodo di alfa-taglio per vincoli fuzzy 4. Backtracking per vincoli classici, da poter inserire in 3 Uno studente per progetto, ma coordinamento tra 1 e 2, e tra 3 e 4 Uno studente per progetto, ma coordinamento tra 1 e 2, e tra 3 e 4
Altre proposte di progetti 1. Eliminazione delle variabili per vincoli fuzzy o pesati