La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA

Presentazioni simili


Presentazione sul tema: "Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA"— Transcript della presentazione:

1 Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Ricerca Operativa - RO - Dott.ssa Michela Lai Esercitazione 5

2 Programmazione Lineare a variabili Intere
Vedremo alcuni algoritmi impiegati per la risoluzione di problemi di programmazione lineare a variabili intere (PLI): Metodi Branch&Bound: Garantiscono l’ottimalità della soluzione determinata. Sono algoritmi divide et impera (dividono ricorsivamente un problema in più sotto-problemi di semplice risoluzione e utilizzano queste soluzioni per risolvere il problema originario a variabili intere) Metodi euristici: Non determinano necessariamente la soluzione ottima, ma possono essere molto più efficienti dei metodi Branch&Bound dal punto di vista computazionale 2

3 Alcune definizioni Sia dato il generico problema di ottimizzazione (P)
e sia z(P) il valore ottimo della funzione obiettivo del problema (P). Si definisce rilassamento di un problema (P) qualsiasi problema dove: Il valore ottimo della funzione obiettivo di fornisce un limite inferiore al valore ottimo della funzione obiettivo di (P): Nel caso di problemi di massimo e il rilassamento fornisce un limite superiore al valore ottimo della funzione obiettivo di (P):

4 Alcune considerazioni
Spesso i rilassamenti sono di più “facile” soluzione rispetto ai problemi originari a variabili intere. Le valutazioni inferiori (o superiori) possono essere ottenute molto più rapidamente rispetto al tempo richiesto per risolvere il problema originario. Talvolta la soluzione di un rilassamento è anche ottima per (P). Rilassamento continuo: è il problema ottenuto da (P) rimuovendo la condizione di interezza sulle variabili

5 Branch & Bound Per introdurre l’algoritmo di Branch-and-Bound, consideriamo a titolo di esempio la seguente istanza del problema dello zaino: max 4 x1 + x2 + 3 x3 + x4 5 x1+ 4 x2 + 3 x3 + 3 x4 ≤ 8 x1, x2, x3, x4 Є {0,1} L’insieme delle soluzioni di questo problema può essere enumerato in un albero delle decisioni, in cui al livello i viene scelto il valore da assegnare alla i-esima variabile (presa in un determinato ordine).

6 Branch & Bound I cammini dalle foglie alla radice individuano le attribuzioni dei valori 0 e 1 alle variabili  determinano quindi tutte le soluzioni. Le soluzioni non necessariamente sono ammissibili per il problema dato (Es.: il cammino A individua una soluzione inammissibile, mentre il cammino B è una soluzione ammissibile)

7 Branch & Bound Nel Branch-and-Bound si costruisce e si esplora l’albero delle decisioni fino a che non sia garantito che la soluzione trovata tra i nodi foglia raggiunti sia la soluzione ottima del problema. Poiché il numero di nodi dell’albero delle decisioni cresce in modo esponenziale con la dimensione del problema, si cerca di visitare esplicitamente il minor numero possibile di nodi e riconoscere in anticipo quando (proseguendo il cammino oltre un certo nodo): si ottengono soluzioni inammissibili (ES.: sottoalbero di radice C) si ottengono soluzioni peggiori della migliore soluzione ammissibile già ottenuta per il problema originario In questi casi interi sottoalberi possono essere scartati o, in altre parole, visitati implicitamente (da qui il nome di algoritmi di enumerazione implicita)

8 Branch & Bound Per determinare se un certo sottoalbero può essere scartato, si risolvono dei rilassamenti del problema originale, ognuno associato ad un nodo dell’albero delle decisioni. Come costruire l’albero delle decisioni? Quali sono i rilassamenti del problema di PLI che si vuole risolvere?

9 Branch & Bound Sia dato il seguente problema (P) di PLI e
si risolva il suo rilassamento continuo (P0) in corrispondenza del nodo radice. Se la soluzione ottima del rilassamento continuo è intera tale soluzione coincide con la soluzione ottima del problema originario. Se non è intera, si seleziona una variabile xi con valore non intero nella soluzione ottima di (P0) e si crea nell’albero il problema (P1): ai vincoli del problema (P0) si aggiunge il vincolo: il problema (P2): ai vincoli del problema (P0) P0 P1 P2

10 Branch & Bound CASO 1 Le soluzioni di (P1) e (P2) sono intere. Si prende quella di valore minimo e si arresta l’algoritmo. CASO 2 Una soluzione è intera (ad esempio P1) e l’altra no: Se z(P1)≤ z(P2) o (P2) inammissibile, la soluzione di (P1) è ottima per (P). Altrimenti, se la soluzione di (P2) non è intera si prende una variabile xi con valore non intero nella soluzione ottima di (P2) e si creano due nuovi problemi: (P3) dove ai vincoli del problema (P2) si aggiunge il vincolo (P4) dove ai vincoli del problema (P2) si aggiunge il vincolo CASO 3 Se le soluzioni di (P1) e (P2) non sono intere, si generano due sottoproblemi da ognuno di essi e così via

11 Branch & Bound Dato un problema di minimo, occorre “potare” l’albero delle decisioni in corrispondenza di un dato nodo se: La soluzione del corrispondente rilassamento è inammissibile La soluzione del corrispondente rilassamento non può generare un nuovo limite superiore rispetto all’ottimo di (P). Ovvero una soluzione ammissibile per (P) minore della migliore soluzione ammissibile determinata fino a quel momento. La soluzione del corrispondente rilassamento è intera ed è migliore dell’attuale limite superiore. In questo caso diventa il nuovo limite superiore. L’algoritmo si arresta quando sono stati visitati tutti i nodi disponibili dell’albero delle decisioni.

12 Branch & Bound Dato un problema di massimo, occorre “potare” l’albero delle decisioni in corrispondenza di un dato nodo se: La soluzione del corrispondente rilassamento è inammissibile La soluzione del corrispondente rilassamento non può generare un nuovo limite inferiore rispetto all’ottimo di (P). Ovvero una soluzione ammissibile per (P) maggiore della migliore soluzione ammissibile determinata fino a quel momento. La soluzione del corrispondente rilassamento è intera ed è migliore dell’attuale limite inferiore. In questo caso diventa il nuovo limite inferiore. L’algoritmo si arresta quando sono stati visitati tutti i nodi disponibili dell’albero delle decisioni.

13 Branch & Bound: un esempio
Esempio. Sia dato ad esempio il seguente problema (P) di PLI: max x1 + 3 x2 s.t. x1 ≥ 0.5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 x1, x2 Є Z+ U {0}

14 Branch & Bound: un esempio
Risolviamo graficamente il suo rilassamento continuo (P0): max x1 + 3 x2 x1 ≥ 0+5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 x1, x2 ≥ 0 Ottimo (1.25, 3.75) pari a 12.5

15 Branch & Bound: un esempio
Questa soluzione rappresenta un limite superiore (o upper bound) al valore ottimo dell’originario problema di PLI Poiché la soluzione ottima di (P0) è inammissibile per (P), selezioniamo una variabile con valore non intero nella soluzione ottima e generiamo i sottoproblemi (P1) e (P2). Esistono molte regole per la scelta della variabile. Trascurando i diversi criteri di scelta possibili, in questo esempio si fissa la variabile di indice più piccolo (fissiamo quindi x1).

16 Branch & Bound: un esempio
Sottoproblema (P1): max x1 + 3 x2 x1 ≥ 0+5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 u’4 x1, x2 ≥ 0 Ottimo (1, 10/3) pari a 11

17 Branch & Bound: un esempio
Sottoproblema (P2): max x1 + 3 x2 x1 ≥ 0+5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 u”4 x1, x2 ≥ 0 Ottimo (2, 3.214) pari a

18 Branch & Bound: un esempio
La soluzione ottima di (P2) rappresenta il limite superiore al valore ottimo dell’originario problema di PLI in questa iterazione. Poiché queste soluzioni sono ancora inammissibili per il problema originario, si seleziona uno dei due problemi - es. (P2) - e una variabile con valore non intero nella soluzione ottima del problema considerato. A partire dal problema (P2), si generano ora i problemi (P3) e (P4).

19 Branch & Bound: un esempio
Sottoproblema (P3): max x1 + 3 x2 x1 ≥ 0+5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 x1 ≥ 2 u”4 u’5 x1, x2 ≥ 0 Ottimo (2.3, 3) pari a 11.3

20 Branch & Bound: un esempio
Sottoproblema (P4): max x1 + 3 x2 x1 ≥ 0+5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 x1 ≥ 2 u”4 u”5 x1, x2 ≥ 0 Soluzione inammissibile

21 Branch & Bound: un esempio
Si devono ancora esplorare i nodi dell’albero relativi ai problemi (P1) e (P3). Selezioniamo il problema (P3) e generiamo i problemi (P5) e (P6).

22 Branch & Bound: un esempio
Sottoproblema (P5): max x1 + 3 x2 x1 ≥ 0+5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 x1 ≥ 2 u”4 x2 ≤ 3 u’5 u’6 x1, x2 ≥ 0 Ottimo (2, 3) pari a 11. Questa è una soluzione ammissibile del problema originario (P), ovvero un limite inferiore sull’ottimo di (P).

23 Branch & Bound: un esempio
Sottoproblema (P6): max x1 + 3 x2 x1 ≥ 0+5 u1 -5x1 + 3x2 ≤ 5 u2 x x2 ≤ 6.5 u3 x1 ≥ 2 u”4 x2 ≤ 3 u’5 u”6 x1, x2 ≥ 0 Ottimo (3, 2.5) pari a 10.5

24 Branch & Bound: un esempio
Il nodo (P5) costituisce una soluzione ammissibile per (P) pari a 11. Non vi è alcuna necessità di generare due ulteriori problemi a partire da (P1) e (P6) in quanto non si otterrebbero soluzioni ammissibili per (P) migliori rispetto a quella ottenuta.

25 Branch & Bound: un esempio
Verificare con Lindo che la soluzione ottenuta sia quella ottima per il problema originario (P). OBJECTIVE FUNCTION VALUE 1) VARIABLE VALUE REDUCED COST X X

26 Branch & Bound Conclusioni
L’efficienza degli algoritmi Branch-and-Bound dipende da diversi fattori, tra cui: Il gap tra la soluzione del rilassamento lineare al nodo radice e la soluzione del problema originario a variabili intere Il metodo utilizzato per risolvere i rilassamenti Le regole per la selezione delle variabili da fissare Le regole per la visita dell’albero Anche utilizzando le migliori strategie per gli aspetti elencati, non si può mai escludere di dover esaminare una frazione consistente dei nodi dell’albero delle decisioni 26

27 Algoritmi euristici Numerosi problemi di ottimizzazione a variabili intere sono “difficili” in quanto non si dispone di tecniche in grado di determinare in modo efficiente la soluzione ottima. In molti problemi diventa pertanto necessario sviluppare algoritmi in grado di fornire una buona soluzione ammissibile, senza garantirne l’ottimalità. Algoritmo euristico: Determina una soluzione non necessariamente ottima per un dato problema (P). Algoritmo esatto: Determina la soluzione ottima per un dato problema (P). Vedremo ora alcuni esempi di algoritmi euristici di tipo greedy. 27

28 Algoritmi greedy Determinano la soluzione di un problema di ottimizzazione (P) attraverso una sequenza di decisioni localmente ottime, senza mai modificare le decisioni prese. Facile implementazione e notevole efficienza computazionale, ma in generale non garantiscono l’ottimalità della soluzione trovata e talvolta neppure la sua ammissibilità.

29 Algoritmi greedy Il problema dello zaino
Questo algoritmo costruisce una soluzione inserendo per primi nello zaino gli oggetti “più promettenti”, cioè quelli che hanno un maggior beneficio per unità di peso. L’algoritmo inizializza l’insieme degli oggetti selezionati come l’insieme vuoto e poi scorre la lista degli oggetti in ordine di beneficio unitario decrescente. L’oggetto selezionato viene accettato solo se la capacità residua dello zaino è sufficiente. In caso contrario viene scartato e si passa all’oggetto successivo nell’ordinamento. L’algoritmo termina quando tutti gli oggetti sono stati esaminati o la capacità residua dello zaino diventa nulla.

30 Algoritmi greedy Il problema dello zaino
Sia data la seguente istanza del problema dello zaino: max 7x1 + 2x2 + 4x3 + 5x4 + 4x5 + x6 5x1 + 3x2 + 2x3 + 3x4 + x5 + x6 ≤ 8 x1, x2, x3, x4, x5, x6 Є {0,1} Implementare il precedente algoritmo greedy e verificare con Lindo se la soluzione ottenuta è ottima oppure no. L’algoritmo greedy produce la soluzione [0,0,1,1,1,1] con f.o.14 e peso totale 7. La soluzione ottima è [1,0,1,0,1,0] con f.o.15 e peso totale 8. In conclusione, l’algoritmo descritto non garantisce l’ottimalità!

31 Algoritmo di Kruskal Albero ricoprente di minimo costo
Definizione: Dato un grafo G(N,A) con |N|=n. Un grafo G*(N*,A*) è un sottografo di G=(N,A) se A* è contenuto in A e N* contiene tutti i nodi estremi degli archi di A*. L’algoritmo di Kruskal è una tecnica greedy che costruisce una soluzione, inserendo gli archi uno alla volta in ordine di costo crescente e verificando ogni volta che il sottografo corrispondente sia privo di cicli. L’algoritmo inizializza T, l’insieme degli archi appartenenti all’albero, come insieme vuoto e poi scorre la lista degli archi in ordine di costo crescente.

32 Algoritmo di Kruskal Albero ricoprente di minimo costo
L’arco (i,j) di volta in volta selezionato viene accettato solo se il sottografo avente tutti gli archi in T U {i, j} è privo di cicli. In caso contrario viene scartato e si passa all’arco successivo nell’ordinamento. L’algoritmo termina quando T contiene esattamente n-1 archi A differenza del caso precente, si può dimostrare che l’algoritmo di Kruskal fornisce delle soluzioni esatte

33 Il problema del commesso viaggiatore
Un commesso viaggiatore deve consegnare le sue mercanzie in n località, compresa quella in cui si trova. Nota la distanza tra località, il commesso viaggiatore vuole organizzare il suo viaggio in modo che la distanza percorsa sia minima e tutte le località siano raggiunte. Dato un grafo non orientato e completo (contenente cioè tutti i possibili archi) G(N,A) con |N|=n e |A|=m=n(n-1)/2 Ad ogni località è associato un nodo Ad ogni arco è associato un costo cij reale e positivo, che rappresenta la minima distanza tra i e j 33

34 Algoritmo “Nearest Neighbour” Il problema del commesso viaggiatore
Questo algoritmo greedy costruisce una soluzione scegliendo ad ogni passo come prossima tappa la località più vicina a quella in cui il commesso viaggiatore si trova attualmente. L’algoritmo inizializza l’insieme P degli archi appartenenti al cammino come l’insieme vuoto e definisce come nodo corrente il nodo iniziale. Ad ogni iterazione, si esaminano tutti gli archi che uniscono il nodo corrente a nodi che non sono ancora toccati dal cammino parziale P. Tra tali archi si seleziona l’arco (i,j) di costo minimo, lo si aggiunge a P e si definisce j come nodo corrente

35 Algoritmo “Nearest Neighbour” Il problema del commesso viaggiatore
L’algoritmo termina, quando tutti i nodi sono toccati da P, inserendo l’arco di ritorno dall’ultimo nodo visitato al nodo iniziale. Sai data la seguente istanza di TSP simmetrico: Implementare l’algoritmo “Nearest Neighbour” prendendo come nodo iniziale quello di indice 1

36 Algoritmo “Nearest Neighbour” Il problema del commesso viaggiatore
L’algoritmo “Nearest Neighbour”, partendo dal nodo 1, produce il ciclo: f.o.=12 Mentre la soluzione ottima è f.o.=11 Anche questo algoritmo greedy non è esatto

37 Una tecnica esatta certifica che la soluzione trovata
Conclusioni Gli algoritmi euristici non determinano necessariamente la soluzione ottima di un problema di ottimizzazione. Tuttavia, essi possono fornire soluzioni di elevata qualità in tempi molto più rapidi rispetto ad una tecnica esatta. Una tecnica esatta certifica che la soluzione trovata è quella ottima.


Scaricare ppt "Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA"

Presentazioni simili


Annunci Google