Esempi di consistenza sui limiti Non consistente sui

  • Slides: 28
Download presentation
Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3 Y=10

Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3 Y=10 Ma il dominio qui sotto e’ consistente sui limiti: Confrontare con il dominio consistente sugli iper-archi: 1

Ottenere la consistenza sui limiti Dato un dominio D, vogliamo modificare i limiti dei

Ottenere la consistenza sui limiti Dato un dominio D, vogliamo modificare i limiti dei domini in modod che sia consistente sui limiti u Si usano delle regole di propagazione u 2

Ottenere la consistenza sui limiti Consideriamo il vincolo primitivo X = Y + Z

Ottenere la consistenza sui limiti Consideriamo il vincolo primitivo X = Y + Z che e’ equivalente alle tre forme: Ragionando sui valori minimi e massimi: Regole di propagazione per il vincolo X = Y + Z 3

Ottenere la consistenza sui limiti Le regole di propagazione determinano che: Quindi i domini

Ottenere la consistenza sui limiti Le regole di propagazione determinano che: Quindi i domini possono essere ridotti a: 4

Altre regole di propagazione Dato il dominio iniziale: Determiniamo che: Nuovo dominio: 5

Altre regole di propagazione Dato il dominio iniziale: Determiniamo che: Nuovo dominio: 5

Disequazioni Le disequazioni generano delle regole di propagazioni deboli: c’e’ propagazione solo quando una

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 6

Moltiplicazione Se tutte le variabili sono positive, e’ semplice: Esempio: Diventa: Ma se le

Moltiplicazione Se tutte le variabili sono positive, e’ semplice: Esempio: Diventa: Ma se le variabili possono essere 0 o negative? 7

Moltiplicazione Calcolare i limiti di X esaminando i valori estremi: Simile per limite superiore

Moltiplicazione Calcolare i limiti di X esaminando i valori estremi: 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 Stiamo usando numeri reali (es. 4/d) 8

Moltiplicazione Possiamo aspettare finche’ il range di Z e’ non negativo o non positivo

Moltiplicazione Possiamo aspettare finche’ il range di Z e’ non negativo o non positivo e poi usare le regole Divisione per 0: 9

Algoritmo per la consistenza sui limiti Applica ripetutamente le regole di propagazione ad ogni

Algoritmo per la consistenza sui limiti Applica ripetutamente le regole di propagazione ad ogni vincolo primitivo finche’ non viene modificato nessun dominio u Non dobbiamo ri-esaminare un vincolo primitivo se i domini delle sue variabili non sono modificati u 10

Esempio di consistenza sui limiti Problema dello zaino del ladro (senza whisky) Non c’e

Esempio di consistenza sui limiti Problema dello zaino del ladro (senza whisky) Non c’e piu’ nessuna modifica. Notare che abbiamo dovuto riesaminare il vincolo di profitto. 11

Risolutore per la consistenza sui limiti D : = bounds_consistent(C, D) bounds_consistent u if

Risolutore per la consistenza sui limiti D : = bounds_consistent(C, D) bounds_consistent u if D e’ un dominio falso u u return u if D e’ un dominio valutazione u return u false satisfiable(C, D) return unknown 12

Ricerca con backtracking combinata con la consistenza sui limiti u Applicare la consistenza sui

Ricerca con backtracking combinata con la consistenza sui limiti u Applicare la consistenza sui limiti prima di iniziare la ricerca con backtracking e dopo ogni assegnamento di un valore ad una variabile 13

Esempio Problema del ladro Dominio corrente: Consistenza sui limiti iniziale: W=0 P=1 (0, 1,

Esempio Problema del ladro Dominio corrente: Consistenza sui limiti iniziale: W=0 P=1 (0, 1, 3) Trovata una soluzione: return true 14

Esempio Problema del ladro Dominio corrente: Backtrack Consistenza sui limiti iniziale: W=0 P=1 P=2

Esempio Problema del ladro Dominio corrente: Backtrack Consistenza sui limiti iniziale: W=0 P=1 P=2 P=3 (0, 1, 3) false (0, 3, 0) W=1 W=2 (1, 1, 1) (2, 0, 0) 15 Non ci sono altre soluzioni

Consistenza generalizzata u Possiamo usare qualunque metodi di consistenza diversi su vincoli diversi, e

Consistenza generalizzata u Possiamo usare qualunque metodi di consistenza diversi su vincoli diversi, e comunicheranno attraverso I dimini delle variabili u u 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 16

Alldifferent u alldifferent({V 1, . . . , Vn}) e’ soddisfatto quando ogni variabile

Alldifferent u alldifferent({V 1, . . . , Vn}) e’ soddisfatto quando ogni variabile V 1, . . , Vn ha un valore diverso u alldifferent({X, Y, Z}) e’ equivalente a u E’ consistente sugli archi con il dominio u Ma non c’e’ soluzione! la consistenza specializzata per alldifferent puo’ scoprirlo 17

Alldifferent Consistency Sia c della forma alldifferent(V) u while esiste v in V dove

Alldifferent Consistency Sia c della forma alldifferent(V) u while esiste v in V dove D(v) = {d} u u. V : = V - {v} u for ogni v’ in V u D(v’) : = D(v’) - {d} DV : = unione di tutti i D(v) per v in V u if |DV| < |V| then return false domain u return D u 18

Alldifferent Examples DV = {1, 2}, V={X, Y, Z} quindi scopre la non soddisfacibilita’

Alldifferent Examples DV = {1, 2}, V={X, Y, Z} quindi scopre la non soddisfacibilita’ DV = {1, 2, 3, 4, 5}, V={X, Y, Z, T} non la scopre Algoritmi basti su matching massimo potrebbero scoprirla: 19

Altri vincoli complessi u schedulare n lavori con tempi iniziali Si e durate Di

Altri vincoli complessi u schedulare n lavori con tempi iniziali Si e durate Di che usano risorse Ri in cui L risorse sono disponibili in ogni momento u Accesso all’array: se I = i, allora X = Vi e se X != Vi allora I != i 20

Ottimizzazione per CSPs Dato che i domini sono finiti, possiamo usare un risolutore per

Ottimizzazione per CSPs Dato che i domini sono finiti, possiamo usare un risolutore per costruire un ottimizzatore banale u retry_int_opt(C, _int_opt D, f, best) u u D 2 : = int_solv(C, D) int_solv u if D 2 e’ un dominio falso then return best u sia sol la soluzione corrispondente a D 2 u return retry_int_opt(C retry_int_opt / f < sol(f), D, f, sol) 21

Esempio Problema del ladro (ottimizzare il profitto) Nessuna altra soluzione! Next First solution found:

Esempio Problema del ladro (ottimizzare il profitto) Nessuna altra soluzione! Next First solution found: Corresponding Return la sol. migliore solution 22

Backtracking + Ottimizzazione Dato che il risolutore puo’ usare la ricerca con backtracking, e’

Backtracking + Ottimizzazione Dato che il risolutore puo’ usare la ricerca con backtracking, e’ meglio combinarla con l’ottimizzazione u Ad ogni passo della ricerca con backtracking, se best e’ la soluzione ottima vista finora, aggiungi il vincolo f < best(f) u 23

Esempio Problema del ladro Smugglers knapsack problem (whiskey available) Dominio corrente: Consistenza sui limiti

Esempio Problema del ladro Smugglers knapsack problem (whiskey available) Dominio corrente: Consistenza sui limiti iniziale: W=0 P=1 (0, 1, 3) Soluzione trovata aggiungi il vincolo 24

Esempio Problema del ladro Consistenza sui limiti iniziale: W=0 P=1 P=2 P=3 (0, 1,

Esempio Problema del ladro Consistenza sui limiti iniziale: W=0 P=1 P=2 P=3 (0, 1, 3) false W=1 W=2 (1, 1, 1) false 25 Modify constraint Return l’ultima sol (1, 1, 1)

Ottimizzazione con Branch and Bound u u Il metodo precedente, a differenza del simplesso,

Ottimizzazione con Branch and Bound u u Il metodo precedente, a differenza del simplesso, non usa la funzione obbiettivo per dirigere la ricerca Ottimizzazione branch and bound per (C, f) u u 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 26

Esempio Problema del ladro false Soluzione (2, 0, 0) = 30 Soluzione (1, 1,

Esempio Problema del ladro false Soluzione (2, 0, 0) = 30 Soluzione (1, 1, 1) = 32 false Peggio della sol ottima false 27

Finite Constraint Domains Summary CSPs form an important class of problems u Solving of

Finite Constraint Domains Summary CSPs form an important class of problems u Solving of CSPs is essentially based on backtracking search u Reduce the search using consistency methods u u u node, arc, bound, generalized Optimization is based on repeated solving or using a real optimizer to guide the search 28