Constraint Programming
|
|
- Marcellino Rosa
- 5 anni fa
- Visualizzazioni
Transcript
1 4 Constraint Programming introduzione Vittorio Maniezzo Università di Bologna 1 Ringraziamenti Questi lucidi derivano anche da adattamenti personali di materiale prodotto (fornitomi o reso scaricabile) da: R. Bartak, B. Hnich, M. Milano, B. Moa, M. Trick, R. Salvagnin e da wikipedia. Vittorio Maniezzo Università di Bologna 2 1
2 Soddisfacimento di vincoli Un problema di soddisfacimento di vincoli (Constraint Satisfaction Problem CSP) può essere definito come CSP = <X, D, C>, dove: X è un insieme di variabili, X = {x 1, x 2,, x n } D è un dominio (spesso discreto) per ogni variabile, D = {D 1, D 2,, D n } C è un insieme di vincoli su queste variabili: vincolo: una relazione tra variabili che definisce un sottoinsieme del prodotto cartesiano dei domini D 1 xd 2 x...xd n (in pratica però un vincolo viene espresso in altri modi equivalenti, molto più compatti, come funzioni o disuguaglianze). Soluzione di un problema CSP: un assegnamento di valori alle variabili consistente con i vincoli Soddisfacibilità: una collezione di vincoli è soddisfacibile (consistente) se esiste (almeno) una soluzione Vittorio Maniezzo Università di Bologna 3 Esempio: map coloring Trovare un assegnamento di colori alle variabili consistente con i vincoli variabili x 1, x 2,x 3, x 4, x 5, x 6 : zone domini D 1, D 2,D 3, D 4, D 5, D 6 = [giallo, rosso, verde, viola, blu] vincoli : near(i, j) x i x j Vittorio Maniezzo Università di Bologna 4 2
3 Constraint graph Un problema di soddisfacimento di vincoli si può rappresentare con un grafo detto constraint graph: Variabili nodi Vincoli (iper)-archi [giallo, rosso, verde, blu, viola] x 1 [giallo, rosso, verde, blu, viola] x 2 x 3 [giallo, rosso, verde, blu, viola] [giallo, rosso, verde, blu, viola] x 4 x 5 x 6 [giallo, rosso, verde, blu, viola] [giallo, rosso, verde, blu, viola] Soluzione ammissibile: x 1 = giallo x 2 = rosso x 3 = verde x 4 = blu x 5 = viola x 6 = giallo Vittorio Maniezzo Università di Bologna 5 Ottimizzazione con vincoli Un problema di ottimizzazione con vincoli (Constraint Optimization Problem COP) è definito come: COP = <X, D, C, f> E un CSP con una funzione obiettivo: f(x 1, x 2,, x n ) Soluzione di un problema COP: un assegnamento di valori alle variabili compatibile con i vincoli del problema che ottimizza (minimizza / massimizza) la funzione obiettivo Vittorio Maniezzo Università di Bologna 6 3
4 Esempio: Map Coloring Trovare un assegnamento di colori alle zone tale che due zone adiacenti sono colorate con colori diversi, e minimizzando il numero di colori usati: variabili x 1, x 2,x 3, x 4, x 5, x 6 : zone domini D 1, D 2,D 3, D 4, D 5, D 6 = [giallo, rosso, verde, viola, blu] vincoli : near(i, j) x i x j Anche questo problema può essere rappresentato sullo stesso grafo dei vincoli usato nella versione di soddisfacibilità. Vittorio Maniezzo Università di Bologna 7 Prolog e CSP Il prolog può essere utilizzato per risolvere problemi CSP / COP. E strutturalmente in grado di rappresentare i vincoli. Nella soluzione si definiranno: Constraint store collezione dei vincoli del problema Meccanismo di propagazione dei vincoli meccanismo di inferenza che genera nuovi vincoli a partire da quelli dati Vittorio Maniezzo Università di Bologna 8 4
5 Esempio Map Coloring Constraint store vincoli unari: i [1,5], x i {giallo, rosso, verde, viola, blu} vincoli binari: i,j [1,5], near(i, j) x i x j Propagazione dei vincoli Modifica del constraint store (nuovo vincolo) (near(i, j) x i x j ) Ʌ near(1,2) implica x 1 x 2 Modifica del constraint store (riduzione di un dominio) (x 1 = rosso) Ʌ (x 1 x 2 ) Ʌ (x 2 {giallo, rosso, verde, viola, blu} ) implica x 2 {giallo, verde, viola, blu} Vittorio Maniezzo Università di Bologna 9 Constraint Logic Programming Paradigma di programmazione, estensione della Programmazione Logica [Jaffar e Lassez, 1998] è uno schema per produrre nuovi linguaggi durante la risoluzione, alcuni elementi speciali detti vincoli (constraint) non vengono risolti, ma vengono accumulati in un area di memoria esterna (constraint store) ed elaborati da un risolutore esterno (constraint solver). Esistono diversi risolutori, basati su tecnologie diverse. Ciascuno di questi dà luogo ad un linguaggio della classe CLP: CLP(FD): sui domini finiti, basato su consistenza CLP(R): sui reali, basato sul simplesso CLP(Bool): sui booleani, basato su BDD CLP(Q): sui razionali. Vittorio Maniezzo Università di Bologna 17 5
6 Es., CLP(FD) Esistono diversi linguaggi CLP(FD): CHIP, SICStus, ECLiPSe, B-Prolog, La sintassi è simile ma non identica, ciascuno ha caratteristiche distintive In generale si hanno Un metodo per definire il dominio delle variabili, es. ECLIPSE: X:: [1..10, ] SICStus: X in (1..10) \/ (13..15) MiniZinc: var 0..n-1: X Una sintassi che contraddistingue i vincoli dagli altri predicati (ECLIPSE e SICStus usano il #): #> #>= #< #<= #= ## sono vincoli, MiniZinc la parola chiave constraint. Vittorio Maniezzo Università di Bologna 18 Programmazione logica a vincoli In un sistema CLP i domini sono definiti e interpretati già nel linguaggio. Es. CLP(R): dominio dei numeri reali, vincolo X > e 7.2 sono numeri reali, non generici simboli > è la relazione d ordine sui reali, non un generico predicato o un test + è la somma sui reali e non un generico funtore Questo permette di esprimere e trattare relazioni sul dominio come vincoli CLP(R): X > Y + 5 Vittorio Maniezzo Università di Bologna 19 6
7 Consistenza Un insieme di vincoli è consistente (soddisfacibile) se ammette almeno una soluzione Risolutori completi sono in grado di decidere se un insieme di vincoli è soddisfacibile (Es. risolutori sui reali) Risolutori incompleti sono in grado di individuare alcune forme di inconsistenza, ma non di decidere se un insieme di vincoli è soddisfacibile. (Es., risolutori su domini finiti) L inconsistenza è identificata quando il dominio di una variabile diventa vuoto. Vittorio Maniezzo Università di Bologna 20 Consistenza Inconsistenza: dominio di una variabile vuoto, non esistono valori che possono essere assegnati alla variabile Se una variabile ha dominio vuoto, sicuramente l insieme di vincoli è insoddisfacibile Se l insieme di vincoli è insoddisfacibile non è detto che una variabile abbia dominio vuoto. Se riuscissimo a trovare tutti i valori inconsistenti e a rimuoverli dal dominio delle variabili, avremmo un risolutore completo. Il problema di trovare tutti i valori inconsistenti ha la stessa complessità del problema originale. Vittorio Maniezzo Università di Bologna 21 7
8 Consistenza Nell analisi della consistenza si fa spesso riferimento ad una rappresentazione su grafo del problema CSP. Nel modello: Si rappresentano esplicitamente solo vincoli unari e binari nodi = variabili archi = vincoli A>5 Si identificano: node consistency (NC) arc consistency (AC) path consistency (PC) (strong) k-consistency A B B A B=C A<C C Vittorio Maniezzo Università di Bologna 22 Metodi di soluzione: inferenza e ricerca I principi di base per la risoluzione di CSP si dividono in due categorie: inferenza e ricerca. Inferenza: porta alla luce informazioni nascoste, che permettono di dedurre vincoli validi solo impliciti nella formulazione di partenza. Questi nuovi vincoli possono rivelare che alcune regioni dello spazio delle soluzioni non contengono soluzioni ammissibili e quindi possono migliorare le prestazioni di un algoritmo di ricerca. Ricerca: la risoluzione di un CSP non avviene mediante ricerca esaustiva. Non si generano tutte le possibili soluzioni e poi si controlla quali siano ammissibili (schema banale chiamato generate-and-test, GT). GT è inaccettabile, il numero di soluzioni da testare è esponenziale. Si usano tecniche che migliorano GT. Vittorio Maniezzo Università di Bologna 23 8
9 Inferenza Tecnica di inferenza: propagazione dei vincoli (constraint propagation). Rimuove dal dominio delle variabili i valori che non possono essere utilizzati in una soluzione ammissibile. Esempio: problema con variabili x1 e x2, entrambe con valori interi in {1,, 10} e con il vincolo x1 - x2 > 5. La propagazione può rimuovere i valori 5 e 6 dai domini di entrambe le variabili. Quasi tutte le tecniche di propagazione non sono metodi di inferenza completi, non riescono a rimuovere tutti i valori inutili, e pertanto non possono essere usate da sole per risolvere un CSP. Lo schema generale consiste quindi nell utilizzare un algoritmo di ricerca efficiente, effettuando la propagazione dei vincoli ad ogni nodo dell'albero decisionale. L'applicazione di tecniche di propagazione può ridurre drasticamente la dimensione dell'albero di ricerca. Vittorio Maniezzo Università di Bologna 24 Ricerca: Backtracking Miglioramento di GT: ricerca basata su backtracking (BT, è la stessa dei B&B). Un assegnamento parziale viene esteso scegliendo dei valori per le variabili fino a che non si raggiunge la soluzione o un conflitto (la soluzione parziale corrente non può più essere estesa). Se conflitto, l'ultimo assegnamento viene annullato e se ne prova un altro. Questo viene fatto un modo sistematico, in modo da enumerare (implicitamente) tutte le possibili soluzioni. L'algoritmo BT è un miglioramento di GT in quanto controlla ad ogni assegnamento che i vincoli possano essere soddisfatti, senza aspettare di avere un assegnamento completo per controllare. La ricerca BT viene spesso rappresentata mediante un albero di ricerca, dove ad ogni nodo è associata una soluzione parziale. La complessità nel caso peggiore è comunque esponenziale. Vittorio Maniezzo Università di Bologna 25 9
10 GT e BT: Esempio (senza propagazione) Problema: var 1..2: X,Y,Z constraint X = Y, X!= Z, Y > Z generate & test backtracking X Y Z test fail fail fail fail fail fail passed X Y Z test fail 2 fail 2 fail 2 1 fail 2 1 passed Vittorio Maniezzo Università di Bologna 26 BT: svantaggi L'algoritmo standard BT ha comunque i seguenti svantaggi: thrashing, può generare ripetutamente assegnamenti parziali da scartare per uno stesso motivo lavoro ridondante, assegnamenti di variabili che risultano incompatibili non vengono memorizzati un conflitto viene individuato solo quanto capita, e non prima Nel corso degli anni sono state proposte varie migliorie dell'algoritmo BT per mitigare tali svantaggi, molte basate su tecniche di inferenza Vittorio Maniezzo Università di Bologna 27 10
11 Inconsistenze Ricerca sistematica (GT o BT) => inefficiente Consistenza sola => incompleta (insufficiente) Si utilizza una combinazione dei due approcci Metodi: look back (recupero dalle incosistenze) look ahead (prevenzione delle incosistenze) look back look ahead Direzione dell esplorazione Vittorio Maniezzo Università di Bologna 28 Look Back Solitamente implementato con backtracking intelligente, in cui si verifica la consistenza fra le variabili istanziate. Due approcci principali: backjumping backtrack sulla variabile che causa il conflitto salta qui backchecking and backmarking evita dei controlli ripetuti sui vincoli ricordando il livello in cui ogni valore è entrato in conflitto conflitto a b b b conflitto Vittorio Maniezzo Università di Bologna 29 11
12 Look Ahead Si cerca di prevenire conflitti futuri attraverso dei controlli di consistenza fra valori ammissibili per variabili ancora non istanziate. forward checking (FC) AC nella neighbourhood locale partial look ahead (PLA) DAC (full) look ahead (LA) Arc Consistency Path Consistency Variabili istanziate Ordine etichettatura Vittorio Maniezzo Università di Bologna 30 Look Ahead: Esempio Problema: var 1..2: X,Y,Z constraint X = Y, X Z, Y > Z generate & test - 7 passi backtracking - 5 passi propagation - 2 passi X Y Z azione risultato 1 labelling {1} {} propagation fail 2 labelling {2} {1} propagation soluzione Vittorio Maniezzo Università di Bologna 31 12
13 Ricerca: branching La propagazione in generale non è completa. Dopo la propagazione: Trovo una soluzione stop Fallimento backtrack i domini contengono alcuni valori search ricerca: divide il problema in sotto-problemi (branching) e risolve ciascuno di essi indipendentemente i sottoproblemi devono essere una partizione del problema originale Obiettivo: mantenere lo spazio di ricerca il più piccolo possibile Vittorio Maniezzo Università di Bologna 32 Ricerca: branching Strategie di Branching definiscono il modo di partizionare il problema P in sottoproblemi più facili P1, P2,, Pn. Per ogni sottoproblema si applica di nuovo la propagazione. Possono essere rimossi nuovi rami grazie alle nuove informazioni derivate dal Branching In programmazione logica a vincoli la tecnica più popolare di branching è detta labeling Labeling: seleziona una variabile seleziona un valore nel suo dominio assegna il valore alla variabile L ordine in cui le variabili e i valori vengono scelti (la strategia di ricerca) non influenza la correttezza dell algoritmo ma ne influenza pesantemente l efficienza. Vittorio Maniezzo Università di Bologna 33 13
14 Esempio completo Map Coloring Modello MiniZinc enum V1={red,green,yellow,blue,pink}, enum V2={red,green,yellow,blue,pink}, enum V3={red,green,yellow,blue,pink}, enum V4={red,green,yellow,blue,pink}, enum V5={red,green,yellow,blue,pink}, constraint V1!=V2, V1!=V3, V1!=V4, V1!=V5, V2!=V3,V2!=V4, V2!=V5, V3!=V4, V4!=V5, solve satisfy. Separazione tra Modello del problema Strategia per risolverlo Variabili e domini ricerca vincoli Vittorio Maniezzo Università di Bologna 34 Programmazione logica a vincoli La consistenza e la propagazione sono implementate nel risolutore Es.: CLP(R): X > Y + 5, Y = 3 passo di inferenza: X > 8 consistenza: specializzata su R vincoli: sia in input che in output CLP(R): var int A,B constraint A > B + 5.? p(x,y), Y = 3. yes X > 8, Y = 3 Vittorio Maniezzo Università di Bologna 35 14
15 Macchina CLP: passi fondamentali Principali competenze della macchina CLP: Risoluzione (resolution, r) selezione di un elemento unificazione: aggiunta di vincoli al constraint store Vincoli (constraining c) selezione di un vincolo aggiunta del vincolo al constraint store Propagazione (infer, i) trasformazione del constraint store Consistenza (satisfiability, s) verifica della soddisfacibilità del constraint store Vittorio Maniezzo Università di Bologna 36 CP: risoluzione Consistenza: L insieme dei vincoli è soddisfacibile? Esiste una soluzione? Propagazione di vincoli: meccanismo di inferenza Rimuove dai domini valori inconsistenti Inferisce nuovi vincoli Ricerca: strategie di branching Selezione di una variabile Selezione del valore Vittorio Maniezzo Università di Bologna 38 15
16 Proprietà di consistenza node consistency una rete è node consistent se in ogni dominio di ogni nodo ogni valore è consistente con i vincoli unari che coinvolgono la variabile arc consistency una rete è arc consistent se per ogni vincolo binario (arco) che connette due variabili V i e V j, per ogni valore nel dominio di V i esiste un valore nel dominio di V j consistente con il vincolo. V1 [1..10] V2 [1..10] V1 < 7 V1 > V2 Non Node consistent Non Arc consistent unario binario V1 [2..6] V2 [1..5] V1 < 7 V1 > V2 Node consistent Arc consistent Vittorio Maniezzo Università di Bologna 39 Limiti di AC In problemi reali, il controllo dell Arc-Consistency è troppo costoso. Se si controlla un vincolo c(x,y), per ogni valore in dom(x) cerco un valore consistente in dom(y) si hanno circa d 2 confronti ad ogni controllo, se d è la cardinalità dei domini. Ci si accorge di un fallimento solo quando un dominio è vuoto. Operativamente, ci si ferma appena si trova un valore consistente e si ragiona per intervalli, invece di verificare tutti gli elementi del dominio Vittorio Maniezzo Università di Bologna 40 16
17 Limiti di AC Domini vuoti => nessuna soluzione (OK) Cardinalità di ogni dominio è 1 => soluzione (OK) Ma se: var 1..2: X,Y,Z constraint X Y, X Z, Y Z 1 2 X Y 1 2 Z 1 2 Vittorio Maniezzo Università di Bologna 41 Path Consistency (PC) Si verifica la consistenza lungo un path nel grafo dei vincoli Spesso si cerca solo su path di lunghezza 2 Vantaggi e svantaggi + individua più inconsistenze che AC - complessità V 2 V V4 3 V 5 V 0 V 1??? Casi particolari: PC diretta, PC ristretta, Vittorio Maniezzo Università di Bologna 42 17
18 Bound consistency Un vincolo c(x,y) è bound consistente se per ogni valore ammissibile in X esiste un valore ammissibile in Y che può soddisfarlo, e viceversa x {min(x),max(x)} y dom(y) t.c. c(x,y) è soddisfatto (e viceversa) Comodo per vincoli come <, >, Non serve controllare tutti gli elementi del dominio, ma bastano gli estremi Si ricontrolla il vincolo c(x,y) solo se vengono eliminati gli estremi del dominio di X o Y Esempio: 4x + 3y - 2z = 10 Domini: Dx = Dy = Dz = {0, 1,..., 9} Garantire la BC porta a definire: Dx = {0, 1,..., 7}, Dy = Dz = {0, 1,..., 9} Vittorio Maniezzo Università di Bologna 43 Filtering e propagazione filtering: forma di inferenza che permette di identificare e rimuovere dai domini i valori inconsistenti propagazione: meccanismo secondo cui l aggiornamento (riduzione) dei domini permette ad altri vincoli di fare filtering Es.: var 1..10: X,Y,Z, constraint X>Y, Y>Z Singolarmente il vincolo X > Y fa filtering X [2..10], Y [1..9] Singolarmente il vincolo Y > Z fa filtering Y [2..9], Z [1..8] Per ridurre completamente il problema (eliminando tutti i valori inconsistenti) la propagazione avrebbe complessità esponenziale. Rimozione di 1 da Y attiva una propagazione X [3..10], Y [2..9] Vittorio Maniezzo Università di Bologna 44 18
19 Filtering e propagazione Ogni tipo di vincolo richiede un proprio algoritmo di filtering per eliminare valori incosistenti dai domini. La comunicazione fra i diversi algoritmi di filtering avviene indirettamente attraverso i domini delle variabili, innescando catene di filtraggi successivi (propagazioni). La propagazione è garantita avere termine. Il risultato finale è lo stesso, indipendentemente dall ordine in cui sono stati considerati i vincoli (ma la velocità con cui lo si raggiunge no) Vittorio Maniezzo Università di Bologna 45 Filtering: vincoli matematici Esempio 1: var 1..10:X; var 5..15:Y; X>Y Arc-consistency: per ogni valore x della variabile X, se non esiste un valore per Y compatibile con x, allora x viene cancellato dal dominio di X e viceversa var 6..10:X; var 5..9:Y dopo il filtering Esempio 2: var 1..10:X; var 5..15:Y; X=Y var 5..10:X, var 5..10:Y dopo il filtering Esempio 3: var 1..10:X; var 5..15:Y, X Y Nessun filtering Vittorio Maniezzo Università di Bologna 46 19
20 Propagazione di vincoli In generale ogni variabile è coinvolta in molti vincoli. Ogni cambiamento nel dominio della variabile si può propagare ad altri valori dai domini delle altre variabili. Esempio: X [1..5], Y [1..5], Z [1..5] X = Y + 1 Y = Z + 1 X = Z 1 Primo controllo di X = Y + 1 porta a X [2..5], Y [1..4], Z [1..5] Secondo controllo di Y = Z + 1 porta a X [2..5], Y [2..4], Z [1..3] Il dominio di Y è cambiato, controllo di X = Y + 1 porta a X [3..5], Y [2..4], Z [1..3] Vittorio Maniezzo Università di Bologna 47 Propagazione di vincoli Controllo di Z = X - 1 porta a X [], Y [2..4], Z [1..3] (fail) L ordine nel quali i vincoli sono considerati (sospesi/risvegliati) non influenza il risultato ma può influenzare le prestazioni computazionali Vittorio Maniezzo Università di Bologna 48 20
21 Vincoli globali Un vincolo globale (n-ario, simbolico) descrive una relazione che coinvolge un numero non fisso di variabili. Es: il vincolo alldifferent(x 1,, x n ) è soddisfatto solo se i valori assegnati alle variabili x 1,, x n sono tutti diversi tra loro. Un vincolo globale è spesso semanticamente ridondante: può essere espresso tramite un insieme di vincoli più semplici (ad es., alldifferent(x 1,, x n ) può essere espresso mediante xi xj per ogni i j), ma permette di scrivere dei pattern di vincoli di particolare interesse pratico in modo chiaro e compatto e semplifica molto la modellazione. Inoltre molti vincoli globali forniscono al risolutore una visione più accurata della struttura del problema e possono migliorarne drasticamente l'efficienza, permettendo propagazioni che non sono altrimenti possibili. Vittorio Maniezzo Università di Bologna 49 Vincoli globali Vincoli matematici (binari): =, >, <,,, Propagazione vincoli binari: arc-consistency Vincoli globali: hanno associato un proprio metodo di propagazione, permettono formulazioni concise Es.: alldifferent([x1,...xm]) tutte le variabili devono avere valori differenti element(n,[x1,...xm],value) l ennesimo elemento della lista deve avere valore uguale a Value cumulative([s1,...sm], [D1,...Dn], [R1,...Rn], L) usato per vincoli di capacità vincoli disgiuntivi (o questo o quello, xor) Vittorio Maniezzo Università di Bologna 50 21
22 Vincoli globali (vincoli simbolici) Ogni vincolo ha associato il proprio algoritmo di filtering, realizzato con tecniche prodotte in un qualunque contesto utilizzabile (ricerca operativa, intelligenza artificiale, teoria dei grafi, teoria dei linguaggi di programmazione, automi) La propagazione del vincolo termina quando la rete raggiunge uno stato in cui non si possono cancellare più valori dal domino di nessuna variabile (quiescenza). La propagazione è incrementale lungo ogni ramo dell albero di ricerca Vittorio Maniezzo Università di Bologna 51 Vincoli globali: consistenza Per vincoli n-ari (es: X+Y=Z), non c è più l interpretazione come grafo. Generalized Arc Consistency (GAC) (o Hyper Arc- Consistency): un vincolo c(x 1, x 2,, x n ) è arc consistente in senso generalizzato se: per ogni variabile x i (i=1..n) per ogni assegnamento delle rimanenti n-1 variabili x 1 =v 1,, x i 1 = v i 1, x i+1 = v i+1,, x n = v n esiste un valore del dominio di x i che rende il vincolo vero v dom(x i ) t.c. c(v 1,, v i 1,v, v i+1, v n ) è vero (soddisfatto). Spesso controllare la GAC è troppo costoso; per vincoli n-ari, si cerca di sfruttare la struttura e la semantica dei vincoli stessi Vittorio Maniezzo Università di Bologna 52 22
23 Vincoli globali Alcuni dei vincoli globali più comuni: element. Siano y e z variabili e c un array di variabili, cioè c = [x 1,, x n ]. Il vincolo e soddisfatto se z = x y. alldifferent. Siano x 1,, x n variabili. Il vincolo e soddisfatto se tali variabili assumono valori tutti diversi tra loro. gcc. (global cardinality constraint) è una generalizzazione di alldifferent in cui si richiede che ogni valore v i di un insieme dato sia assegnato almeno l i volte e al più u i volte. regular. è soddisfatto se la stringa d 1,, d n formata dai valori assegnati alle variabili (x 1,, x n ) viene accettata da un automa a stati finiti M, in altre parole la stringa appartiene al linguaggio regolare L(M) accettato da M. Vittorio Maniezzo Università di Bologna 53 Vincoli globali: alldifferent alldifferent([x1,...xn]) vero se tutte le variabili assumono valori diversi Equivalente all insieme di vincoli binari alldifferent([x1,...xn]) X1 X2, X1 X3,, Xn-1 Xn Operazionalmente permette una propagazione più forte. Esempio: X1 [1,2,3],X2 [1,2,3],X3 [1,2,3],X4 [1,2,3,4], Arc consistency: non rimuove alcun valore L'algoritmo di filtering per alldifferent rimuove da X4 i valori 1,2,3. Vittorio Maniezzo Università di Bologna 54 23
24 Vincoli globali: alldifferent alldifferent si usa in tantissime applicazioni, esempio: Partial Latin Square: colorare ogni riga e colonna con 10 colori in modo che su ogni riga e colonna ci siano tutti colori diversi Facile se la griglia è vuota ma non se parzialmente piena (35%-45% percentuale critica) E' un problema che appare come sottoprobelma in molte applicazioni (scheduling, timetabling, routing in fibre ottiche, ecc ) Modello del problema: alcune variabili già assegnate, altre hanno come dominio tutti i colori. Poi per ogni riga i=1..n: alldifferent([xi1,xi2,.xin]) per ogni colonna j=1..n: alldifferent([x1j,x2j,.xnj]) Vittorio Maniezzo Università di Bologna 55 Alldifferent: algoritmo di filtering Es., alldifferent(x1,x2,x3,x4,x5,x6) con xi [1:.7] Si rappresenta il problema su un grafo bipartito x1 x2 x3 x4 x5 x soluzione sse matching che copre tutte le variabili x1 x2 x3 x4 x5 x Vittorio Maniezzo Università di Bologna 56 24
25 Alldifferent: esempio Problema: alldifferent(x 1, x 2, x 3 ) 2x 1 + x 2 6 x 2 x 3 x 1, x 2, x 3 {1,2,3} GT avrebbe generato tutte le 27 possibili soluzioni, BT senza propagazione avrebbe impiegato più di 20 nodi, BT con propagazione dei vincoli solo 5 nodi. Vittorio Maniezzo Università di Bologna 57 Vincoli globali: Global Cardinality Constraint (GCC, aka distribute) gcc(var,val,lb,ub) Var sono variabili, Val valori LB e UB sono il minimo e massimo numero di occorrenze per ogni valore in Val assegnato a Var La nozione di consistenza si basa su un algoritmo di flusso massimo su una oppotuna rete N(C) gcc su k variabili si può verificare con un algoritmo di max flow da s a t di valore k Vittorio Maniezzo Università di Bologna 58 25
26 Vincoli globali: distribute (aka gcc) distribute([c1,..., cm],[v1,..., vm],[x1,...,xn]), Richiede che c[i] sia il numero di occorrenze di v[i] nell'array x, limitate fra l[i] e u[i]. Filtering basato su un flusso in rete, soluzione sse flusso ammissibile. Calcola un flusso massimo Costruisci il grafo dei residui Trovane le componenti fortemente connesse Togli gli archi a flusso nullo fra le componenti Garantita GAC Vittorio Maniezzo Università di Bologna S [1,1] x1 xi xn [0,1] v1 v2 vj vm [l1,u1] [lm,um] T Vincoli globali: cumulative cumulative([s1,...sn], [D1,...Dn], [R1,...Rn], L) S1,...Sm sono istanti di inizio di attività (variabili con dominio) D1,...Dn sono durate (variabili con dominio) R1,...Rn sono richieste di risorse (variabili con dominio) L è il limite di capacità delle risorse (fisso o variabile nel tempo) Dato l intervallo [min,max] dove min = min i {S i }, max = max{s i +D i } - 1, il vincolo cumulative assicura che max j:sj i S j R i L Es.: cumulative([1,2,4],[4,2,3],[1,2,2],3) Vittorio Maniezzo Università di Bologna 60 26
27 Vincoli globali: vincoli disgiuntivi Supponiamo di avere due lezioni che devono essere tenute dallo stesso docente. Abbiamo gli istanti di inizio delle lezioni: L1Start e L2Start e la loro durata Duration1 e Duration2. Le due lezioni non possono sovrapporsi: L1Start + Duration1 L2Start OR L2Start + Duration2 L1Start Due problemi indipendenti, uno per ogni parte della disgiunzione. Numero esponenziale di problemi al crescere delle disgiunzioni: n disgiunzioni 2 n problemi Appare spesso in problemi reali inducendo alta complessità Varie soluzioni proposte: cumulative meta-vincoli disgiunzione costruttiva operatore di cardinalità Vittorio Maniezzo Università di Bologna 61 Vincoli globali: meta vincoli Anche meta-constraint o Vincoli Reificati (implementano vincoli disgiuntivi) A ogni vincolo (matematico, del tipo >, <, <=,!=, ) viene associata una variabile booleana B. Se B=1 il vincolo è verificato e viceversa, se B=0 il vincolo non è verificato e viceversa. Con i vincoli si possono modellare le disgiunzioni come segue: var {0,1}: B1; var {0,1}: B2; constraint (L1Start+Duration1 <= L2Start)!= B1; constraint (L2Start+Duration2 <= L1Start)!= B2; constraint B1 + B2 = 1; Vittorio Maniezzo Università di Bologna 62 27
28 Vincoli globali: Path Dato un grafo diretto G=(V,A) con V = n, si associa ad ogni nodo i una variabile Xi il cui dominio contiene i possibili next nel cammino, il path constraint X0 D0,X1 D1,...,Xk Dk path([x0,x1,,xk]) È vero se e solo se l assegnamento di valori (la def. dei next) alle variabili X0,X1,,Xk definisce un cammino semplice che coinvolge tutti i nodi 0,,k. Il vincolo path può essere generalizzato in un multi-path path([x0,x1,,xk], NumberOfPaths) Vittorio Maniezzo Università di Bologna 63 Classificazione vincoli Sulla base della struttura del grafo: global constraint catalog Nicolas Beldiceanu Sulla base della semantica: Jean-Charles Règin (articolo su web) Solution based (table constraint) Counting constraints (alldifferent, permutation, gcc) Balancing constraints (balance, deviation, spread) Combination based constraints (max-sat, and or) Sequencing constraints (among, sequence) Distance constraints (inter-distance, sum-inequality) Geometric constraints (diff-n) Summation based constraints (subset-sum, knapsack) Packing constraints (nvalue, bin-packing) Graph based constraints (cycle, path, tree, wst) Order based constraints (lexicolex, sort) Vittorio Maniezzo Università di Bologna 64 28
29 Vincoli ridondanti La propagazione in generale non è completa: alcuni valori inconsistenti possono essere lasciati nei domini I vincoli ridondanti possono essere utili per ridurre lo spazio di ricerca anche se introducono un overhead (c è un tradeoff). Un vincolo ridondante C è un vincolo che è implicato da altri vincoli {C1 Ck}, ma il risolutore non identifica questa implicazione a causa della sua incompletezza [x,y] 0..10, X >= y, Y <= 10-x Nessuna propagazione (entrambi i vincoli già AC). Se aggiungo il vincolo (logicamente ridondante) Y<=5 ho propagazione Vittorio Maniezzo Università di Bologna 65 Vincoli ridondanti Esempio: Sequenza magica Dato un insieme di n+1 variabili X0,,Xn. Ogni Xi deve rispettare i seguenti vincoli : 0 compare X0 volte in soluzione 1 compare X1 volte n appare Xn volte. vncolo occurrences(v,l,n) (fd_global) impone che V compaia N volte nella lista L magic_sequence([x0,,xn]): X0,,Xn [0..n], occurrences(0,[x0,,xn], X0), occurrences(1,[x0,,xn], X1),..., occurrences(n,[x0,,xn], Xn),... Vittorio Maniezzo Università di Bologna 66 29
30 Vincoli ridondanti Vincolo ridondante: la somma di tutte le variabili moltiplicate per il loro valore è uguale al numero di celle nella sequenza. Quindi, le variabili soddisfano il vincolo: X1+ 2*X2 + + N*Xn = N + 1 magic_sequence([x0,,xn]): X0,,Xn [0..n], occurrences(0,[x0,,xn], X0), occurrences(1,[x0,,xn], X1),..., occurrences(n,[x0,,xn], Xn), X1+ 2*X2 + + N*Xn = N + 1 VINCOLI RIDONDANTI PC vecchiotto: P4 2Ghz, N=23 senza vincolo ridondante 5.88s con vincolo ridondante 0.55s Vittorio Maniezzo Università di Bologna 67 Ottimizzazione In molte applicazioni non siamo interessati a soluzioni ammissibili, ma nella soluzione ottima rispetto a un certo criterio. Enumerazione inefficiente trova tutte le soluzioni ammissibili scegli la migliore I linguaggi di programmazione a vincoli in generale implementano anche un qualche Branch and Bound ogni volta che viene trovata una soluzione di costo C*, viene imposto un vincolo sulla parte rimanente dello spazio di ricerca. Il vincolo afferma che soluzioni successive (il cui costo stimato è C) devono essere migliori della migliore soluzione trovata finora. C < C* Vittorio Maniezzo Università di Bologna 68 30
31 Branch & Bound Il vincolo aggiunto fa normalmente poca propagazione. Si usa una variabile Z che rappresenta la funzione obiettivo e la si lega alle variabili decisionali, esempio somma di costi Se il legame tra Z e tali variabili è forte, la propagazione elimina molti rami dall albero, altrimenti, cercare una soluzione ottima è molto difficile Esempi Per lo scheduling funziona bene (min la lunghezza dello schedule) Per le somme di costi meno bene Per la minimizzazione dei tempi di setup, non funziona affatto. Vittorio Maniezzo Università di Bologna 69 Vincoli globali di ottimizzazione Molti vincoli globali che rappresentano problemi risolubili in tempo polinomiale possono essere estesi con una variabile costo cost_alldiff(x, Cost, H) vero se e solo se le variabili in X sono tutte diverse e la somma dei loro costi è minore di H. Consistenza e filtering basati su un algoritmo di flusso cost_gcc(x,val,lb,ub,cost, H) vero se e solo se il valore Val compare X un numero di volte compreso tra LB e UB e la somma dei costi delle var in X è minore di H. Consistenza e filtering basati su un algoritmo di flusso Per problemi non polinomiali, si aggiunge all algoritmo di filtering tradizionale un componente di ottimizzazione che implementa un rilassamento del vincolo e fornisce: Lower bound (soluzione ottima del rilassamento) funzione gradiente che calcola il costo var = valore Vittorio Maniezzo Università di Bologna 70 31
32 Problemi sovra-vincolati Alcuni problemi nella vita reale non hanno soluzione: sono sovra-vincolati CLP in questo caso dà come risposta semplicemente no', questo in applicazioni reali non è sufficiente Uno dei metodi per trattarli comunque è quello di usare vincoli soft (che possono essere rilassati): cerchiamo di massimizzare i vincoli soft che sono soddisfatti Es. Orario delle lezioni: cerco di soddisfare le richieste degli insegnanti Mat > 10, Fisica < 14, Con vincoli Soft: Mat > 10 <=> B1, Fisica < 14 <=> B2, sumlist([b1,b2, ],Sum), F = -Sum, minimize(labeling( ),F). Vittorio Maniezzo Università di Bologna 71 Soft constraints Esistono vincoli globali soft, es.: softalldiff softgcc softregular Permettono un livello di violazione: Variable-based: minimo numero di variabili che devono cambiare valore affinché il vincolo sia soddisfatto Decomposition-based: se un vincolo globale C si può decomporre in una serie di vincoli binari CDEC allora la violazione è il numero di vincoli binari violati Vittorio Maniezzo Università di Bologna 72 32
33 MiniZinc 1.6: Global Constraints alldifferent (all_different) alldifferent_except_0 all_disjoint all_equal among at_least (atleast) at_most (atmost) at_most1 (atmost1) bin_packing bin_packing_capa bin_packing_load circuit count_eq (count) count_geq count_gt count_leq count_lt count_neq cumulative cumulative lex2 decreasing link_set_to_booleans diffn maximum disjoint member distribute minimum element nvalue exactly partition_set global_cardinality range global_cardinality_closed regular global_cardinality_low_up roots global_cardinality_low_up_ sliding_sum closed sort increasing strict_lex2 int_set_channel subcircuit inverse sum_pred (sum) inverse_set table lex_greater value_precede lex_greatereq value_precede_chain lex_less lex_lesseq Vittorio Maniezzo Università di Bologna 73 Vincoli globali MiniZinc 1.6 alldifferent(array[int] of var int: x) Constrains the array of objects x to be all different. Also available by the name all_different. alldifferent_except_0(array[int] of var int: x) Constrains the elements of the array x to be all different except those elements that are assigned the value 0. all_disjoint(array[int] of var set of int: x) Ensures that every pair of sets in the array x is disjoint. all_equal(array[int] of var int: x) Constrains the array of objects x to have the same value. Vittorio Maniezzo Università di Bologna 74 33
34 Vincoli globali MiniZinc 1.6 among (var int: n, array[int] of var int: x, set of int: v) Requires exactly n variables in x to take one of the values in v. at_least (int: n, array[int] of var int: x, int: v) Requires at least n variables in x to take the value v. Also available by the name atleast. at_most (int: n, array[int] of var int: x, int: v) Requires at most n variables in x to take the value v. Also available by the name atmost. at_most1 (array[int] of var set of int: s) Requires that each pair of sets in s overlap in at most one element. Also available by the name atmost1. Vittorio Maniezzo Università di Bologna 75 Vincoli globali MiniZinc 1.6 bin_packing (int: c, array[int] of var int: bin, array[int] of int: w) Requires that each item i be put into bin bin[i] such that the sum of the weights of each item, w[i], in each bin does not exceed the capacity c. bin_packing_capa(array[int] of int: c, array[int] of var int: bin, array[int] of int:w) Requires that each item i be put into bin bin[i] such that the sum of the weights of each item, w[i], in each bin b does not exceed the capacity c[b]. bin_backing_load(array[int] of var int: l, array[int] of var int: bin, array[int] of int: w) Requires that each item i be put into bin bin[i] such that the sum of the weights of each item, w[i], in each bin b is equal to the load l[b]. Vittorio Maniezzo Università di Bologna 76 34
35 Vincoli globali MiniZinc 1.6 circuit [array[int] of var int: x) Constraints the elements of x to define a circuit where x[i] = j mean that j is the successor of i. cumulative (array[int] of var int: s, array[int] of var int: d, array[int] of var int: r, var int: b) Requires that a set of tasks given by start times s, durations d, and resource requirements r, never require more than a global resource bound b at any one time. Aborts if s, d, and r do not have identical index sets. Aborts if a duration or resource requirement is negative. Vittorio Maniezzo Università di Bologna 77 Vincoli globali MiniZinc 1.6 count_eq (array[int] of var int: x, var int: y, var int: c) Constrains c to be the number of occurrences of y in x. Also available by the name count. count_geq (array[int] of var int: x, var int: y, var int: c) Constrains c to greater than or equal to the number of occurrences of y in x. count_gt (array[int] of var int: x, var int: y, var int: c) Constrains c to strictly greater than the number of occurrences of y in x. count_leq (array[int] of var int: x, var int: y, var int: c) Constrains c to less than or equal to the number of occurrences of y in x. count_lt (array[int] of var int: x, var int: y, var int: c) Constrains c to strictly less than the number of occurrences of y in x. count_neq (array[int] of var int: x, var int: y, var int: c) Constrains c to not be the number of occurrences of y in x. Vittorio Maniezzo Università di Bologna 78 35
36 Vincoli globali MiniZinc 1.6 decreasing(array[int] of var bool: x) Requires that the array x is in (non-strictly) decreasing order. diffn (array[int] of var int: x, array[int] of var int: y, array[int] of var int: dx, array[int] of var int: dy) Constrains rectangles, given by their origins x,y and sizes dx,dy, to be non-overlapping. disjoint (var set of int: s, var set of int: t) Requires that sets s and t do not intersect. distribute (array[int] of var int: card, array[int] of var int: value, array[int] of var int: base) Requires that card[i] is the number of occurrences of value[i] in base. Vittorio Maniezzo Università di Bologna 79 Vincoli globali MiniZinc 1.6 element (var int: i, array[int] of var bool: x, var bool: y) The same as x[i] = y. That is, y is the ith element of the array x. exactly (int: n, array[int] of var int: x, int: v) Requires exactly n variables in x to take the value v. Vittorio Maniezzo Università di Bologna 80 36
37 Vincoli globali MiniZinc 1.6 global_cardinality (array[int] of var int: x, array[int] of int: cover, array[int] of var int: counts) Requires that the number of occurrences of cover[i] in x is counts[i]. global_cardinality_closed (array[int] of var int: x, array[int] of int: cover, array[int] of var int: counts) Requires that the number of occurrences of cover[i] in x is counts[i]. The elements of x must take their values from cover. global_cardinality_low_up (array[int] of var int: x, array[int] of int: cover, array[int] of int: lb, array[int] of int: ub) Requires that for all i, the value cover[i] appears at least lb[i] and at most ub[i] times in the array x. global_cardinality_low_up_closed (array[int] of var int: x, array[int] of int: cover, array[int] of int: lb, array[int] of int: ub) Requires that for all i, the value cover[i] appears at least lb[i] and at most ub[i] times in the array x. The elements of x must take their values from cover. Vittorio Maniezzo Università di Bologna 81 Vincoli globali MiniZinc 1.6 increasing(array[int] of var bool: x) Requires that the array x is in (non-strictly) increasing order. int_set_channel(array[int] of var int: x, array[int] of var set of int: y) Requires that x[i] = j if and only if i y[j]. inverse(array[int] of var int: f, array[int] of var int: invf) Constrains two arrays to represent inverse functions of each other. All the values in each array must be within the index set of the other array. inverse_set(array[int] of var set of int: f, array[int] of var set of int: invf) Constrains the two arrays f and invf so that a j f[i] if and only if i invf[j]. All the values in each array's sets must be within the index set of the other array. Vittorio Maniezzo Università di Bologna 82 37
38 Vincoli globali MiniZinc 1.6 lex_greater(array[int] of var bool: x, array[int] of var bool: y) Requires that the array x is strictly lexicographically greater than array y. Compares them from first to last element, regardless of indices. lex_greatereq(array[int] of var bool: x, array[int] of var bool: y) Requires that the array x is lexicographically greater than or equal to array y. Compares them from first to last element, regardless of indices. lex_less(array[int] of var bool: x, array[int] of var bool: y) Requires that the array x is strictly lexicographically less than array y. Compares them from first to last element, regardless of indices. lex_lesseq(array[int] of var bool: x, array[int] of var bool: y) Requires that the array x is lexicographically less than or equal to array y. Compares them from first to last element, regardless of indices. lex2(array[int, int] of var int: x) Require adjacent rows and adjacent columns in the the array x to be lexicographically ordered. Vittorio Maniezzo Università di Bologna 83 Vincoli globali MiniZinc 1.6 link_set_to_booleans(var set of int: s, array[int] of var bool: b) The array of booleans b is the characteristic representation of the set s. Aborts if the index set of b is not a superset of the possible values of s. maximum(var int: m, array[int] of var int: x) Constrains m to be the maximum of the values in x. (The array x must have at least one element.) member(array[int] of var bool: x, var bool: y) Requires that y occurs in the array or set x. minimum(var float: m, array[int] of var float: x) Constrains m to be the minimum of the values in x. (The array x must have at least one element.) Vittorio Maniezzo Università di Bologna 84 38
39 Vincoli globali MiniZinc 1.6 nvalue(var int: n, array[int] of var int: x) Requires that the number of distinct values in x is n. partition_set(array[int] of var set of int: s, set of int: universe) Partitions universe into disjoint sets. range(array[int] of var int: x, var set of int: s, var set of int: t) Requires that the image of function x (represented as an array) on set of values s is t. regular(array[int] of var int: x, int: Q, int: S, array[int,int] of int: d, int: q0, set of int: F) The sequence of values in array x (which must all be in the range 1..S) is accepted by the DFA of Q states with input 1..S and transition function d (which maps 1..Q, 1..S to 0..Q) and initial state q0 (which must be in 1..Q) and accepting states F (which all must be in 1..Q). Vittorio Maniezzo Università di Bologna 85 Vincoli globali MiniZinc 1.6 roots(array[int] of var int: x, var set of int: s, var set of int: t) Requires that x[i] t for all i s. sliding_sum(int: low, int: up, int: seq, array[int] of var int: vs) Requires that in each subsequence vs[i],..., vs[i + seq - 1] the sum of the values belongs to the interval [low, up]. sort(array[int] of var int: x, array[int] of var int: y) Requires that the multiset of values in x is the same as the multiset of values in y but y is in sorted order. strict_lex2(array[int, int] of var int: x) Require adjacent rows and adjacent columns in the the array x to be lexicographically ordered. subcircuit(array[int] of var int: x) Constrains the elements of x to define a subcircuit where x[i] = j means that j is the successor of i and x[i] = i means that i is not in the circuit. Vittorio Maniezzo Università di Bologna 86 39
40 Vincoli globali MiniZinc 1.6 sum_pred(var int: i, array[int] of set of int: sets, array[int] of int: c, var int: s) Requires that the sum of c[i1]...c[in] equals s, where i1..in are the elements of the ith set in sets. This constraint is usually named sum, but using that would conflict with the MiniZinc built-in function of the same name. table(array[int] of var bool: x, array[int, int] of bool: t) Represents the constraint x t where we consider each row in t to be a tuple and t as a set of tuples. value_precede(int: s, int: t, array[int] of var int: x) Requires that s precede t in the array x. Vittorio Maniezzo Università di Bologna 87 Applicazioni della CP Molte applicazioni pratiche. Alcune aree principali: Problemi di assegnamento Allocazioni stand negli aeroporti Allocazioni ormeggi alle navi Assegnamento personale Turni delle infermiere Equipaggi ai voli Gestione e configurazione di reti Progetto del cablaggio di una rete Localizzazione delle base station in reti wireless Biologia molecolare Sequenziazione DNA Progetto di circuiti digitali e analogici Vittorio Maniezzo Università di Bologna 88 40
41 Applicazioni della CP L area applicativa di maggior successo è lo scheduling Pianificazione della produzione (InSol Ltd.) Pianificazione delle perforazioni (Saga Petroleum) Pianificazione dei trattamenti forestali Pianficazione delle produzione di jet (Dassault Aviation) Vittorio Maniezzo Università di Bologna 89 Scheduling Affrontato con programmazione a vincoli su domini finiti Strettamente correlato ad altre applicazioni: Scheduling Timetabling Allocazione di risorse Routing Packing Cutting Caratteristiche della programmazione a vincoli che ha reso interessante il suo approccio allo scheduling: flessibilità generalità codifica facile Il problema è NP-completo e già molto studiato nelle comunità di Ricerca Operativa e di Intelligenza Artificiale Vittorio Maniezzo Università di Bologna 90 41
42 risorsa Scheduling: il problema Lo Scheduling riguarda l assegnamento di risorse limitate (macchine, denaro, personale) ad attività (fasi di progetto, servizi, lezioni) sull asse temporale Vincoli restrizioni temporali ordine tra attività due dates - release dates capacità delle risorse tipi diversi di risorse risorse consumabili e rinnovabili Criterio di ottimizzazione makespan (durata del piano) bilanciamento delle risorse ritardo sui tempi di consegna costo dell assegnamento delle risorse Vittorio Maniezzo Università di Bologna 91 Scheduling: attività Variabili decisionali : Istante iniziale delle attività Istante finale delle attività / durata (se multimodale) Risorse utilizzate (se multimodale) Attività alternative Tipi di attività intervallo: non può essere interrotta interrompibile: può essere interrotta da break preemptive: può essere interrotta da altre attività Tipi di risorse: R Unarie max 3 Non rinnovabili 2 4 Rinnovabili Vittorio Maniezzo Università di Bologna tempo 42
43 Scheduling: esempio 6 attività: ogni attività descritta da un predicato task(name,duration,listofprecedingtasks,machine). task(j1,3,[],m1). task(j2,8,[],m1). task(j3,8,[j4,j5],m1). task(j4,6,[],m2). task(j5,3,[j1],m2). task(j6,4,[j1],m2). Le macchine m1 e m2 sono unarie (capacità 1). Richiesto End: massimo tempo di fine schedule. Vittorio Maniezzo Università di Bologna 93 Scheduling: esempio schedule(data, End, TaksList):- maketaskvariables(data,end,tasklist), precedence(data, TaskList), machines(data, TaskList), minimize(labeltasks(tasklist),end). maketaskvariables([],_,[]). maketaskvariables([task(n,d,_,_) T],End,[Start Var]):- Start::[0..End-D], maketaskvariables(t,end,var). precedence([task(n,_,prec,_) T], [Start Var]):- select_preceding_tasks(prec,t,var,precvars,precdurations), impose_constraints(start,precvars,precdurations), precedence(t,var). impose_constraints(_,[],[]). impose_constraints(start,[var Other],[Dur OtherDur]):- Var + Dur <= Start impose_constraints(start,other,otherdur). Vittorio Maniezzo Università di Bologna 94 43
44 Scheduling: esempio machines(data, TaskList):- tasks_sharing_resource(data,tasklist,sameresource,durations), impose_cumulative(sameresource,durations,use). impose_cumulative([],[],_). impose_cumulative([listsameres LSR],[Dur D],[Use U]):- cumulative(listsameres,dur,use,1), impose_cumulative(lsr,d,u). cumulative([start1,start2,start3],[3,8,8],[1,1,1],1) cumulative([start4,start5,start6],[6,3,4],[1,1,1],1) labeltasks([]). labeltasks([task Other]):- indomain(task), labeltasks(other). Vittorio Maniezzo Università di Bologna 95 Scheduling: ottimizzazione minimize: predicato per trovare la soluzione ottima (Branch &Bound) Consideriamo la minimizzazione del makespan: uso una euristica che selezione sempre l attività che può essere assegnata per prima. Nel caso, pospone attività per risolvere conflitti di risorsa. labeltasks([]). labeltasks(tasklist):- find_min_start(tasklist,first,minstart,others), label_earliest(tasklist,first,minstart,others,postponed). label_earliest(tasklist,first,min,others):- % schedule the task First = Min, labeltasks(others). label_earliest(tasklist,first,min,others):- % delay the task First Min, labeltasks(tasklist). Vittorio Maniezzo Università di Bologna 96 44
45 Routing: il problema Il routing è il problema di definire i percorsi di un insieme di veicoli che partano e terminino dallo stesso deposito e che visitino una e una sola volta tutti i clienti di un insieme dato. Vincoli (alcuni) restrizioni temporali: finestre temporali durata massima di un viaggio capacità del veicolo domanda dei clienti Criteri di ottimizzazione (alcuni) numero di veicoli costo dei viaggi tempo dei viaggi Componente di base: Travelling Salesman Problem (TSP) e varianti con finestre temporali. Vittorio Maniezzo Università di Bologna 97 TSP: il problema Sono date: n località (casa del commesso viaggiatore e di n-1 clienti). [d ij ] matrice di distanze, definisce le distanze (in Km, tempo, ) fra ogni coppia di località. Il TSP richiede di determinare il ciclo più corto che parte dalla casa, visita tutti i clienti una sola volta e torna a casa. Versioni simmetrica e asimmetrica, con finestre temporali (TSPTW) e senza, prize collecting, con costi cumulati, Vittorio Maniezzo Università di Bologna 98 45
46 TSP: un modello CP Variabili next associate a ogni nodo. Il dominio di ogni variabile next contiene i possibili nodi da visitare dopo next. n nodi n + 1 variabili Nexti (il deposito viene duplicato) Per ogni i: Nexti i path([next0, Nextn]) alldifferent([next0, Nextn]) ridondante Costo c ij se Nexti = j Si possono anche aggiungere variabili ridondanti Prev che indicano il predecessore del nodo. Vittorio Maniezzo Università di Bologna 99 TSP: codice tsp(data,next,costs): remove_arcs_to_self(next), path(next), alldifferent(next), create_objective(next,costs,z), minimize(labelling(next),z). path: vincolo globale che assicura che non ci siano sottocicli in soluzione. create_objective: crea variabili Costs, e impone un vincolo element tra le variabili Next e Costs. Inoltre, crea una variabile Z che quantifica la funzione obiettivo come somma di costi. Vittorio Maniezzo Università di Bologna
PROBLEMI DI VINCOLI CSP (Constraint satisfaction problems),, X ik. ) che specificano quali valori delle variabili sono compatibili tra loro,
PROBLEMI DI VINCOLI CSP (Constraint satisfaction problems) Dato un insieme finito di variabili X, X,, X n D, D,, D n i cui valori appartengono a domini e un insieme di vincoli c(x i, X i,, X ik ) che specificano
DettagliPROBLEMI DI VINCOLI CSP (Constraint satisfaction problems) trovare una assegnazione di valori alle variabili che soddisfa i vincoli.
PROBLEMI DI VINCOLI CSP (Constraint satisfaction problems) Dato un insieme finito di variabili X, X,, X n i cui valori appartengono a domini D, D,, D n e un insieme di vincoli c(x i, X i,, X ik ) che specificano
DettagliConstraint Satisfaction Problems
Constraint Satisfaction Problems Corso di Intelligenza Artificiale, a.a. 2017-2018 Prof. Francesco Trovò 19/03/2018 Constraint Satisfaction problem Fino ad ora ogni stato è stato modellizzato come una
DettagliCi concentriamo su Programmazione a vincoli su domini finiti
APPLICAZIONI Ci concentriamo su Programmazione a vincoli su domini finiti Applicazioni: Scheduling - Timetabling - Allocazione di risorse Routing Packing - Cutting ottimizzazione Grafica - Visione Le aste
DettagliProblemi di Ottimizzazione
Problemi di Ottimizzazione Obiettivo: misura della qualità di una soluzione. Vincoli: condizioni che devono essere soddisfatte per ottenere una soluzione ammissibile. Problema di Ottimizzazione: determina
DettagliProblemi di soddisfacimento di vincoli. Maria Simi a.a. 2015/2016
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2015/2016 Problemi di soddisfacimento di vincoli (CSP) Sono problemi con una struttura particolare, per cui conviene pensare ad algoritmi specializzati
Dettagli3.4 Metodo di Branch and Bound
3.4 Metodo di Branch and Bound Consideriamo un generico problema di Ottimizzazione Discreta dove X è la regione ammissibile. (P ) z = max{c(x) : x X} Metodologia generale di enumerazione implicita (Land
Dettagli3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura
DettagliTeoria della Complessità Computazionale
Teoria della Complessità Computazionale Daniele Vigo D.E.I.S. - Università di Bologna dvigo@deis.unibo.it Rev. 1.3, 11/00 rev. 1.3 - Novembre 2000 Teoria della Complessità Studia la difficoltà dei problemi
DettagliRichiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena
Richiami di Teoria dei Grafi Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Teoria dei grafi La Teoria dei Grafi costituisce, al pari della Programmazione Matematica, un corpo
DettagliPartizioni intere. =! i# P. Es: Dato {38, 17, 52, 61, 21, 88, 25} possiamo rispondere positivamente al quesito poiché
Partizioni intere PARTIZIONAMENTO: Dato un insieme di n interi non negativi rappresentati in binario, trovare un sottoinsieme P! {1,2,..., n } tale che! i"p a i =! i# P a i Es: Dato {38, 17, 52, 61, 21,
Dettagli2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di
Dettagli3.2 Rilassamenti lineari/combinatori e bounds
3.2 Rilassamenti lineari/combinatori e bounds Consideriamo un problema di Ottimizzazione Discreta min{f(x) : x X} e sia z il valore di una soluzione ottima x X. Metodi di risoluzione spesso generano una
DettagliNP completezza. Problemi astratti
NP completezza Vittorio Maniezzo - Università di Bologna Problemi astratti Un problema è un entità astratta (es. il TSP). Una istanzadel problema è un suo caso particolare in cui vengono specificati tutti
DettagliSCHEDULING - TIMETABLING - ALLOCAZIONE DI RISORSE APPLICAZIONI. SCHEDULING: Attività. SCHEDULING: definizione del problema
APPLICAZIONI Ci concentriamo su Programmazione a vincoli su domini finiti SCHEDULING - TIMETABLING - ALLOCAZIONE DI RISORSE Tre applicazioni con vincoli e caratteristiche comuni: ci concentriamo sullo
Dettagli5.1 Metodo Branch and Bound
5. Metodo Branch and Bound Si consideri il problema min{ c(x) : x X } Idea: Ricondurre la risoluzione di un problema difficile a quella di sottoproblemi più semplici effettuando una partizione (ricorsiva)
DettagliNP completezza. Vittorio Maniezzo - Università di Bologna
NP completezza Vittorio Maniezzo - Università di Bologna Problemi astratti Un problema è un entità astratta (es. il TSP). Una istanzadel problema è un suo caso particolare in cui vengono specificati tutti
DettagliSintesi Sequenziale Sincrona Sintesi Comportamentale di reti Sequenziali Sincrone
Sintesi Sequenziale Sincrona Sintesi Comportamentale di reti Sequenziali Sincrone Il problema dell assegnamento degli stati versione del 9/1/03 Sintesi: Assegnamento degli stati La riduzione del numero
DettagliAlgoritmi esatti. La teoria ci dice che per problemi difficili (come il
p. 1/4 Algoritmi esatti La teoria ci dice che per problemi difficili (come il KNAPSACK o, ancora di più, il TSP ) i tempi di risoluzione delle istanze, calcolati tramite analisi worst-case, tendono a crescere
DettagliCertificati dei problemi in NP
Certificati dei problemi in NP La stringa y viene in genere denominata un certificato Un Certificato è una informazione ausiliaria che può essere utilizzata per verificare in tempo polinomiale nella dimensione
DettagliN-Regine POSSIBILE SOLUZIONE IN PROLOG: GENERATE AND TEST
N-Regine POSSIBILE SOLUZIONE IN PROLOG: GENERATE AND TEST La soluzione è rappresentata da una permutazione della lista: [1,2,3,4,5,6,7,8] La permutazione è una soluzione se le posizioni di ogni regina
DettagliMETODI DELLA RICERCA OPERATIVA
Università degli Studi di Cagliari FACOLTA' DI INGEGNERIA CORSO DI METODI DELLA RICERCA OPERATIVA Dott.ing. Massimo Di Francesco (mdifrance@unica.it) i i Dott.ing. Maria Ilaria Lunesu (ilaria.lunesu@unica.it)
DettagliAlgoritmi Euristici. Molti problemi reali richiedono soluzioni algoritmiche
9 Algoritmi Euristici introduzione Vittorio Maniezzo Università di Bologna 1 Molti problemi reali richiedono soluzioni algoritmiche I camion devono essere instradati VRP, NP-hard I depositi o i punti di
DettagliSistemi con vincoli. Docente: Francesca Rossi.
E-mail: frossi@math.unipd.it Scopo del corso Dare le nozioni di base della programmazione con vincoli Come rappresentare un problema reale con un insieme di vincoli Tecniche principali per risolverlo Approccio
DettagliTail,PermTail), delete1(head,permlist. PermList,PermTail).
N-Regine POSSIBILE SOLUZIONE IN PROLOG: GENERATE AND TEST La soluzione è rappresentata da una permutazione della lista: [1,2,3,4,5,6,7,8] La permutazione è una soluzione se le posizioni di ogni regina
DettagliAutomi e Linguaggi Formali
Automi e Linguaggi Formali Problemi intrattabili, classi P e NP A.A. 2014-2015 Alessandro Sperduti sperduti@math.unipd.it Problemi intrattabili Ci occuperemo solo di problemi decidibili, cioè ricorsivi.
DettagliMassimo flusso e matching
Capitolo Massimo flusso e matching. Problema del massimo matching. Nel problema del massimo matching è dato un grafo non orientato G(V, A); un matching in G è un insieme di archi M A tale che nessuna coppia
DettagliProblemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
DettagliDomini arc-consistenticonsistenti
ECLiPSe ECLiPSe è un linguaggio CLP basato su Prolog che incorpora varie librerie, che forniscono dei risolutori specifici fd sui domini finiti conjunto sugli insiemi eplex reali, vincoli lineari Inoltre,
DettagliTail,PermTail), delete1(head,permlist. PermList,PermTail).
N-Regine POSSIBILE SOLUZIONE IN PROLOG: GENERATE AND TEST La soluzione è rappresentata da una permutazione della lista: [1,2,3,4,5,6,7,8] La permutazione è una soluzione se le posizioni di ogni regina
DettagliPROBLEMI DI SODDISFACIMENTO DI VINCOLI PROGRAMMAZIONE LOGICA A VINCOLI CONSTRAINT GRAPHS. ESEMPIO: Map Coloring
PROGRAMMAZIONE LOGICA A VINCOLI Problemi di soddisfacimento di vincoli: concetti generali Programmazione Logica vantaggi limiti Programmazione Logica a Vincoli dominio e interpretazione controllo modello
DettagliProblemi intrattabili
Tempo polinomiale ed esponenziale Una Tm M ha complessita in tempo T(n) se, dato un input w di lunghezza n, M si ferma dopo al massimo T (n) passi. Problemi intrattabili Ci occuperemo solo di problemi
DettagliY1-Y= Y=\=Xdist, =Xdist,
N-Regine POSSIBILE SOLUZIONE IN PROLOG: GENERATE AND TEST La soluzione è rappresentata da una permutazione della lista: [1,2,3,4,5,6,7,8] La permutazione è una soluzione se le posizioni di ogni regina
DettagliAPPLICAZIONI SCHEDULING - TIMETABLING - ALLOCAZIONE DI RISORSE. Applicazioni: Routing Packing - Cutting. Grafica - Visione Le aste elettroniche
APPLICAZIONI Ci concentriamo su Programmazione a vincoli su domini finiti Applicazioni: Scheduling - Timetabling - Allocazione di risorse Routing Packing - Cutting ottimizzazione Grafica - Visione Le aste
DettagliPossibile applicazione
p. 1/4 Assegnamento Siano dati due insiemi A e B entrambi di cardinalità n. Ad ogni coppia (a i,b j ) A B è associato un valore d ij 0 che misura la "incompatibilità" tra a i e b j, anche interpretabile
DettagliAlgoritmo Branch and Cut (B&C)
Programmazione Lineare Intera: III Algoritmo Branch and Cut Daniele Vigo DEIS Università di Bologna dvigo@deisuniboit rev.0 aprile 2005 Algoritmo Branch and Cut (B&C) Sviluppato negli anni 90, nasce come
DettagliIntroduzione al Column Generation Caso di Studio: il Bin Packing Problem
Introduzione al Column Generation Caso di Studio: il Bin Packing Problem November 15, 2014 1 / 26 Introduzione Il column generation è una metodologia che può essere usata per risolvere problemi di ottimizzazione
DettagliPROGRAMMAZIONE LOGICA A VINCOLI PROGRAMMAZIONE LOGICA A VINCOLI
PROGRAMMAZIONE LOGICA A VINCOLI AI CONSTRAINT SOLVING OPERATIONS RESEARCH CONSTRAINT PROGRAMMING LOGIC PROGRAMMING SOFTWARE ENGINEERING 1 PROGRAMMAZIONE LOGICA A VINCOLI Problemi di soddisfacimento di
DettagliAlgoritmo di Branch & Bound
Sapienza Università di Roma - Dipartimento di Ingegneria Informatica, Automatica e Gestionale Algoritmo di Branch & Bound Docente: Renato Bruni bruni@dis.uniroma.it Corso di: Ottimizzazione Combinatoria
Dettagli6.6 Sequence Alignment
6.6 Sequence Alignment E capitato anche a voi? Di digitare sul computer una parola in maniera sbagliata (per esempio usando un dizionario sul Web): AGORITNI E sentirsi chiedere: «Forse cercavi ALGORITMI?»
DettagliParte V: Rilassamento Lagrangiano
Parte V: Rilassamento Lagrangiano Tecnica Lagrangiana Consideriamo il seguente problema di Programmazione Lineare Intera: P 1 min c T x L I Ax > b Cx > d x > 0, intera in cui A = matrice m x n C = matrice
DettagliEsercizi d'esame su strategie di ricerca, CSP e Giochi. Compiti d'esame 2017 e 2018
Esercizi d'esame su strategie di ricerca, CSP e Giochi Compiti d'esame 2017 e 2018 1 Giugno 2018 Strategia a costo uniforme Si consideri il seguente grafo in cui gli archi sono annotati col costo e si
DettagliIntelligenza Artificiale. Logica proposizionale: calcolo automatico
Intelligenza Artificiale Logica proposizionale: calcolo automatico Marco Piastra Logica formale (Parte 3) - Parte 3 Calcolo automatico Forme normali ed a clausole Risoluzione e refutazione Forward chaining
DettagliPrima prova Intermedia di Ricerca Operativa 2 COMPITO A Esercizio 1 (7 punti): LIFO
Prima prova Intermedia di Ricerca Operativa 2 COMPITO A 13 novembre 2015 Nome e Cognome Matricola: Esercizio 1 (7 punti): Si consideri il seguente problema di programmazione lineare intera. max 32x 1 +
DettagliMetodo di Quine- McCluskey
Metodo di Quine- McCluskey Maurizio Palesi Maurizio Palesi 1 Definizioni Date due funzioni f(x 1,x 2,,x n ) e g(x 1,x 2,,x n ) si dice che f copre g (oppure g implica f) e si scrive f g se f(x 1,x 2,,x
DettagliPROBLEMI DI SODDISFACIMENTO DI VINCOLI
PROBLEMI DI SODDISFACIMENTO DI VINCOLI ESERCIZIO Ci sono 5 scatole (S1,...,S5 nell'ordine) che possono contenere numeri da 1 a 5. Si inseriscano i 5 numeri nelle scatole rispettando il vincolo: Si può
DettagliAlgoritmo dibranch & Bound
Sapienza Università di Roma - Dipartimento di Ingegneria Informatica, Automatica e Gestionale Algoritmo dibranch & Bound Docente: Renato Bruni bruni@dis.uniroma.it Corso di: Ottimizzazione Combinatoria
Dettagli6.5 RNA Secondary Structure. 18 novembre 2014
6.5 RNA Secondary Structure 18 novembre 2014 Calendario Oggi è la lezione 17/24: ultima lezione su Programmazione dinamica Metodo greedy: 18, 19 Grafi: 20, 21, 22, 23 Reti di flusso: 23, 24 (=mercoledì
DettagliTIPOLOGIE ESERCIZI SUI VINCOLI
TIPOLOGIE ESERCIZI SUI VINCOLI Si hanno due categorie di esercizi: Modellazione + risoluzione Risoluzione data la modellazione sotto forma di variaili e vincoli oppure di grafo Per la risoluzione: Tecniche
DettagliECLiPSe è un linguaggio CLP basato su Prolog che incorpora varie librerie, che forniscono dei risolutori specifici. reali, vincoli lineari
ECLiPSe ECLiPSe è un linguaggio CLP basato su Prolog che incorpora varie librerie, che forniscono dei risolutori specifici fd sui domini finiti conjunto sugli insiemi eplex reali, vincoli lineari Inoltre,
DettagliProblemi di localizzazione di servizi (Facility Location Problems)
9. Problemi di Localizzazione di Servizi 1 Problemi di localizzazione di servizi (Facility Location Problems) Dato un insieme di clienti richiedenti una data domanda di merce e dato un insieme di possibili
DettagliTeoria della Complessità Concetti fondamentali
Teoria della Complessità Concetti fondamentali L oggetto della teoria della complessità è stabilire se un problema sia facile o difficile La difficoltà di un problema è una caratteristica generale e non
DettagliProblemi intrattabili, classi P e NP. Problemi intrattabili, classi P e NP
roblemi intrattabili Ci occuperemo solo di problemi decidibili, cioe ricorsivi. Tra loro, alcuni sono detti trattabili, se si puo provare che sono risolvibili in tempo polinomiale in modo deterministico.
DettagliAlgoritmo per A. !(x) Istanza di B
Riduzioni polinomiali Una funzione f: T*!T* è detta computabile in tempo polinomiale se esiste una macchina di Turing limitata polinomialmente che la computi. Siano L 1 e L 2 " T* due linguaggi. Una funzione
DettagliRicerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.
Ricerca Operativa A.A. 2007/2008 17. Esercitazione di laboratorio: Branch and Bound. Luigi De Giovanni - Ricerca Operativa - 17. Esercitazione di laboratorio: Branch and Bound 17.1 . Luigi De Giovanni
DettagliGraphs: Cycles. Tecniche di Programmazione A.A. 2012/2013
Graphs: Cycles Tecniche di Programmazione Summary Definitions Algorithms 2 Definitions Graphs: Cycles Cycle A cycle of a graph, sometimes also called a circuit, is a subset of the edge set of that forms
DettagliFinite Model Theory / Descriptive Complexity: bin
, CMPSCI 601: Recall From Last Time Lecture 19 Finite Model Theory / Descriptive Compleity: Th: FO L DSPACE Fagin s Th: NP SO. bin is quantifier-free.!#"$&% ('*), 1 Space 0 1 ) % Time $ "$ $ $ "$ $.....
DettagliIl metodo dei Piani di Taglio (Cutting Planes Method)
Il metodo dei Piani di Taglio (Cutting Planes Method) E un metodo di soluzione dei problemi (IP) di tipo generale. L idea di base: Se la soluzione di (RL) non è intera allora la soluzione ottima intera
Dettaglii completi l'esecuzione dell'algoritmo di programmazione dinamica per questo problema restituendo il valore ottimo e una soluzione ottima del problema
Compito di Ricerca Operativa II Esercizio ( punti). ia dato il problema di flusso massimo sulla rete in figura (le capacit a degli archi sono riportate sopra di essi). 0 8 i consideri il seguente flusso
Dettaglicsp & backtracking informatica e laboratorio di programmazione Alberto Ferrari Informatica e Laboratorio di Programmazione
csp & backtracking informatica e laboratorio di programmazione Alberto Ferrari Informatica e Laboratorio di Programmazione CSP (Constraint Satisfaction Problem) o CSP = problemi di soddisfacimento di vincoli
DettagliLogica proposizionale
Logica proposizionale Proposizione: frase compiuta che è sempre o vera o falsa. Connettivi Posti in ordine di precedenza: not, and, or, implica, doppia implicazione Sintassi Le proposizioni sono costituite
DettagliMetodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities
Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities L. De Giovanni M. Di Summa In questa lezione introdurremo una classe di disuguaglianze, dette cover inequalities, che permettono di
DettagliCapitolo 3: Ottimizzazione Discreta. E. Amaldi DEI, Politecnico di Milano
Capitolo 3: Ottimizzazione Discreta E. Amaldi DEI, Politecnico di Milano 3.1 Modelli di PLI e PLMI Moltissimi problemi decisionali complessi possono essere formulati come problemi di Programmazione Lineare
DettagliRicerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015
1 Lunedí 20 Aprile 2015 1 Istituto di Analisi dei Sistemi ed Informatica IASI - CNR Rilassamento di un problema Rilassare un problema di Programmazione Matematica vuol dire trascurare alcuni (tutti i)
DettagliFondamenti di Teoria delle Basi di Dati
Fondamenti di Teoria delle Basi di Dati Riccardo Torlone Parte 8: Teoria delle dipendenze Vincoli di integrità Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni
DettagliParte III: Algoritmo di Branch-and-Bound
Parte III: Algoritmo di Branch-and-Bound Divide et Impera Sia z * max {c T x : x S} (1) un problema di ottimizzazione combinatoria difficile da risolvere. Domanda: E possibile decomporre il problema (1)
Dettagli1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;
1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44; c 24 = 15; c 25 = 12; c 34 = 32; c 35 = 55; c 45 = 24 Si calcoli l ottimo duale (formulazione
DettagliPROBLEMA DEL COMMESSO VIAGGIATORE
PROBLEMA DEL COMMESSO VIAGGIATORE INTRODUZIONE Il problema del commesso viaggiatore (traveling salesman problem :TSP) è un classico problema di ottimizzazione che si pone ogni qual volta, dati un numero
DettagliProgrammazione Lineare Intera: Piani di Taglio
Programmazione Lineare Intera: Piani di Taglio Andrea Scozzari a.a. 2014-2015 April 22, 2015 Andrea Scozzari (a.a. 2014-2015) Programmazione Lineare Intera: Piani di Taglio April 22, 2015 1 / 23 Programmazione
DettagliRisoluzione di un problema
Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito
DettagliFONDAMENTI DI INTELLIGENZA ARTIFICIALE 14 Gennaio 2016 Tempo a disposizione: 2 h Risultato: 32/32 punti
FONDAMENTI DI INTELLIGENZA ARTIFICIALE 14 Gennaio 2016 Tempo a disposizione: 2 h Risultato: 32/32 punti Esercizio 1 (6 punti) Si rappresentino in logica dei predicati del I ordine, le seguenti affermazioni:
DettagliFONDAMENTI DI INTELLIGENZA ARTIFICIALE (8 CFU) 13 Gennaio 2015 Tempo a disposizione: 2 h Risultato: 32/32 punti
FONDAMENTI DI INTELLIGENZA ARTIFICIALE (8 CFU) 13 Gennaio 2015 Tempo a disposizione: 2 h Risultato: 32/32 punti Esercizio 1 (6 punti) Si esprimano in logica dei predicati del I ordine le seguenti frasi:
DettagliLezioni di Ricerca Operativa
Lezioni di Ricerca Operativa Massimo Paolucci Dipartimento di Informatica, Sistemistica e Telematica (DIST) Università di Genova paolucci@dist.unige.it http://www.dattero.dist.unige.it Anno accademico
DettagliStrutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
DettagliTeoria della Complessità Computazionale Parte I: Introduzione
Teoria della Complessità Computazionale Parte I: Introduzione Daniele Vigo D.E.I.S. - Università di Bologna dvigo@deis.unibo.it rev. 3.0 - ottobre 2003 Teoria della Complessità Studia la difficoltà dei
Dettaglie Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità
Intelligenza Artificiale I Soddisfacibilità e Algoritmi Marco Piastra Intelligenza Artificiale I - A.A. 2010- Soddisfacibilità e Semantic Tableau [1] Problemi e decidibilità (automatica) Problema Un problema
DettagliAlgoritmo basato su cancellazione di cicli
Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile
DettagliComplessità Computazionale
Complessità Computazionale La teoria della Computabilità cattura la nozione di algoritmo nel senso che per ogni problema sia esso decisionale o di calcolo di funzione stabilisce dei criteri per determinare
DettagliStime dell ottimo - Rilassamenti. PRTLC - Rilassamenti
Stime dell ottimo - Rilassamenti PRTLC - Rilassamenti Schema delle esercitazioni Come ricavare la soluzione ottima Modelli Solver commerciali Come ricavare una stima dell ottimo: rilassamenti Rilassamento
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliProgrammazione Matematica: VI Estensioni dell algoritmo del Simplesso
Programmazione Matematica: VI Estensioni dell algoritmo del Simplesso Daniele Vigo D.E.I.S. Università di Bologna dvigo@deis.unibo.it rev. 1.0 Aprile 2004 Algoritmo del Simplesso L algoritmo del Simplesso
DettagliPIANIFICAZIONE BASATA SU GRAFI
PIANIFICAZIONE BASATA SU GRAFI Nel 1995 viene proposto da Blum e Furst CMU un nuovo pianificatore GRAPHPLAN basato sui grafi Durante la pianificazione viene creato un particolare grafo detto Planning Graph
Dettagli3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI
3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI ESISTENZA DI UN PUNTO DI OTTIMO VINCOLATO Il problema di ottimizzazione vincolata introdotto nel paragrafo precedente può essere formulato nel modo seguente:
DettagliPROGRAMMAZIONE LOGICA A VINCOLI PROGRAMMAZIONE LOGICA A VINCOLI PROGRAMMAZIONE LOGICA A VINCOLI. Michela Milano PROBLEMI DI SODDISFACIMENTO DI VINCOLI
PROGRAMMAZIONE LOGICA A VINCOLI PROGRAMMAZIONE LOGICA A VINCOLI AI CONSTRAINT SOLVING OPERATIONS RESEARCH Michela Milano DEIS - Università di Bologna mmilano@deis deis.unibo.itit http:// ://www-lia.deis.unibo.it
DettagliIl problema del commesso viaggiatore e problemi di vehicle routing
Il problema del commesso viaggiatore e problemi di vehicle routing Laura Galli Dipartimento di Informatica Largo B. Pontecorvo 3, 56127 Pisa laura.galli@unipi.it http://www.di.unipi.it/~galli 2 Dicembre
DettagliAniello Murano Classe dei problemi NP. Nella lezione precedente abbiamo visto alcuni problemi che ammettono soluzione polinomiale
Aniello Murano Classe dei problemi NP 13 Lezione n. Parole chiave: Classe NP Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Introduzione alla lezione Nella lezione
DettagliALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I
ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I Esercizio 1 Dati n oggetti ed un contenitore, ad ogni oggetto j (j = 1,, n) sono associati un peso p j ed un costo c j (con p j e c j interi positivi). Si
DettagliASSEGNAMENTO DELLE OPERAZIONI DI TAGLIO NELLA PRODUZIONE DI CAPI DI ABBIGLIAMENTO
ASSEGNAMENTO DELLE OPERAZIONI DI TAGLIO NELLA PRODUZIONE DI CAPI DI ABBIGLIAMENTO Lo scenario produttivo Una nota azienda produce capi di abbigliamento per l alta moda Ogni capo è costituito da vari pezzi
DettagliPROGRAMMAZIONE LOGICA A VINCOLI PROGRAMMAZIONE LOGICA A VINCOLI
PROGRAMMAZIONE LOGICA A VINCOLI AI CONSTRAINT SOLVING OPERATIONS RESEARCH CONSTRAINT PROGRAMMING LOGIC PROGRAMMING SOFTWARE ENGINEERING 1 PROGRAMMAZIONE LOGICA A VINCOLI Problemi di soddisfacimento di
DettagliTipici tempi di esecuzione. Martedì 7 ottobre 2014
Tipici tempi di esecuzione Martedì 7 ottobre 2014 Punto della situazione Abbiamo definito il tempo di esecuzione di un algoritmo Scelto l analisi asintotica Abbiamo definito le notazioni asintotiche che
DettagliPROGRAMMAZIONE LOGICA A VINCOLI
PROGRAMMAZIONE LOGICA A VINCOLI Michela Milano DEIS - Università di Bologna mmilano@deis deis.unibo.itit http:// ://www-lia.deis.unibo.it/staff/michelamilano/ PROGRAMMAZIONE LOGICA A VINCOLI AI CONSTRAINT
DettagliOttimizzazione Combinatoria 2 Presentazione
Ottimizzazione Combinatoria Presentazione ANTONIO SASSANO Università di Roma La Sapienza Dipartimento di Informatica, Automatica e Gestionale «Antonio Ruberti» Roma, Febbraio Prerequisiti (cosa sapete)
DettagliStruttura del Corso. Durata
Manuel Iori Dipartimento di Scienze e Metodi dell Ingegneria (DISMI) Università degli studi di Modena e Reggio Emilia Via Amendola 2, Pad. Buccola, 42122 Reggio Emilia web: www.or.unimore.it/iori/iori.htm
DettagliLA PROGRAMMAZIONE MATEMATICA (p.m.)
LA PROGRAMMAZIONE MATEMATICA (p.m.) Un problema di programmazione matematica è un problema di ottimizzazione riconducibile alla seguente espressione generale: ricercare i valori delle variabili x 1, x
DettagliESERCIZIO 1 Si faccia riferimento all Allegato A - OPS 2016, problema ricorrente REGOLE E DEDUZIONI, pagina 2.
ESERCIZIO 1 Si faccia riferimento all Allegato A - OPS 2016, problema ricorrente REGOLE E DEDUZIONI, pagina 2. Siano date le seguenti regole: regola(1,[a,p,f],g) regola(2,[c,x],n) regola(3,[n,g],w) regola(4,[p,c,x],d)
DettagliLa Programmazione Dinamica
La Programmazione Dinamica Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova 21/22 La Programmazione Dinamica 2 E un metodo di soluzione di problemi a stadi Ad ogni stadio corrisponde
Dettagli