La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA Ricerca Operativa - RO - Dott.ssa Michela Lai Esercitazione."— Transcript della presentazione:

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

2 2 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 Programmazione Lineare a variabili Intere

3 3 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): Alcune definizioni

4 4 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 Alcune considerazioni

5 5 Per introdurre l’algoritmo di Branch-and-Bound, consideriamo a titolo di esempio la seguente istanza del problema dello zaino: max 4 x 1 + x x 3 + x 4 5 x x x x 4 ≤ 8 x 1, x 2, x 3, x 4 Є {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). Branch & Bound

6 6 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) Branch & Bound

7 7 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) Branch & Bound

8 8 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? Branch & Bound

9 9 Sia dato il seguente problema (P) di PLI e si risolva il suo rilassamento continuo (P 0 ) 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 x i con valore non intero nella soluzione ottima di (P 0 ) e si crea nell’albero  il problema (P 1 ): ai vincoli del problema (P 0 ) si aggiunge il vincolo:  il problema (P 2 ): ai vincoli del problema (P 0 ) si aggiunge il vincolo: P0P0 P2P2 P1P1 Branch & Bound

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

11 11 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. Branch & Bound

12 12 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. Branch & Bound

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

14 14 Risolviamo graficamente il suo rilassamento continuo (P 0 ): Ottimo (1.25, 3.75) pari a 12.5 Branch & Bound: un esempio max x x 2 x 1 ≥ 0+5u 1 -5x 1 + 3x 2 ≤ 5u 2 x x 2 ≤ 6.5u 3 x 1, x 2 ≥ 0

15 15 Questa soluzione rappresenta un limite superiore (o upper bound) al valore ottimo dell’originario problema di PLI Poiché la soluzione ottima di (P 0 ) è inammissibile per (P), selezioniamo una variabile con valore non intero nella soluzione ottima e generiamo i sottoproblemi (P 1 ) e (P 2 ). 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 x 1 ). Branch & Bound: un esempio

16 16 Ottimo (1, 10/3) pari a 11 Branch & Bound: un esempio max x x 2 x 1 ≥ 0+5u 1 -5x 1 + 3x 2 ≤ 5u 2 x x 2 ≤ 6.5u 3 u ’ 4 x 1, x 2 ≥ 0 Sottoproblema (P 1 ):

17 17 Ottimo (2, 3.214) pari a Branch & Bound: un esempio max x x 2 x 1 ≥ 0+5u 1 -5x 1 + 3x 2 ≤ 5u 2 x x 2 ≤ 6.5u 3 u ” 4 x 1, x 2 ≥ 0 Sottoproblema (P 2 ):

18 18 La soluzione ottima di (P 2 ) 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. (P 2 ) - e una variabile con valore non intero nella soluzione ottima del problema considerato. A partire dal problema (P 2 ), si generano ora i problemi (P 3 ) e (P 4 ). P0P0 P2P2 P1P1 Branch & Bound: un esempio

19 19 Ottimo (2.3, 3) pari a 11.3 Branch & Bound: un esempio max x x 2 x 1 ≥ 0+5u 1 -5x 1 + 3x 2 ≤ 5u 2 x x 2 ≤ 6.5u 3 x 1 ≥ 2u ” 4 u ’ 5 x 1, x 2 ≥ 0 Sottoproblema (P 3 ):

20 20 Soluzione inammissibile Branch & Bound: un esempio max x x 2 x 1 ≥ 0+5u 1 -5x 1 + 3x 2 ≤ 5u 2 x x 2 ≤ 6.5u 3 x 1 ≥ 2u ” 4 u ” 5 x 1, x 2 ≥ 0 Sottoproblema (P 4 ):

21 21 P0P0 P2P2 P1P1 P3P3 P4P4 Branch & Bound: un esempio Si devono ancora esplorare i nodi dell’albero relativi ai problemi (P 1 ) e (P 3 ). Selezioniamo il problema (P 3 ) e generiamo i problemi (P 5 ) e (P 6 ).

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

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

24 24 Il nodo (P 5 ) costituisce una soluzione ammissibile per (P) pari a 11. Non vi è alcuna necessità di generare due ulteriori problemi a partire da (P 1 ) e (P 6 ) in quanto non si otterrebbero soluzioni ammissibili per (P) migliori rispetto a quella ottenuta. P0P0 P2P2 P1P1 P3P3 P4P4 P5P5 P6P6 Branch & Bound: un esempio

25 25 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 Branch & Bound: un esempio

26 26 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 Branch & Bound Conclusioni

27 27 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. Algoritmi euristici

28 28 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à. Algoritmi greedy

29 29 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. Algoritmi greedy Il problema dello zaino

30 30 Sia data la seguente istanza del problema dello zaino: max 7x 1 + 2x 2 + 4x 3 + 5x 4 + 4x 5 + x 6 5x 1 + 3x 2 + 2x 3 + 3x 4 + x 5 + x 6 ≤ 8 x 1, x 2, x 3, x 4, x 5, x 6 Є {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à! Algoritmi greedy Il problema dello zaino

31 31 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. Algoritmo di Kruskal Albero ricoprente di minimo costo

32 32 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 Algoritmo di Kruskal Albero ricoprente di minimo costo

33 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 c ij reale e positivo, che rappresenta la minima distanza tra i e j

34 34 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 Algoritmo “Nearest Neighbour” Il problema del commesso viaggiatore

35 35 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 Algoritmo “Nearest Neighbour” Il problema del commesso viaggiatore

36 36 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 Algoritmo “Nearest Neighbour” Il problema del commesso viaggiatore

37 37 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. Conclusioni


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

Presentazioni simili


Annunci Google