METODI DELLA RICERCA OPERATIVA

Documenti analoghi
3.4 Metodo di Branch and Bound

Il Branch & Bound. Definizione 1. Sia S R n. La famiglia S = {S 1, S 2,..., S k S} tale che S 1 S 2 S k = S viene detta suddivisione di S.

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Parte III: Algoritmo di Branch-and-Bound

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

Algoritmo di Branch & Bound

Il problema del commesso viaggiatore

Parte V: Rilassamento Lagrangiano

Gestione della produzione e della supply chain Logistica distributiva

Problemi, istanze, soluzioni

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo

Soluzione dei problemi di Programmazione Lineare Intera

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Esame di Ricerca Operativa del 07/09/2016

Esercizi sulla Programmazione Lineare Intera

Il problema dello zaino: dalla gita in montagna ai trasporti internazionali. Luca Bertazzi

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

4.1 Localizzazione e pianificazione delle base station per le reti UMTS

Soluzione di problemi di Programmazione Lineare Intera

5.3 Metodo dei piani di taglio

Progettazione di Algoritmi

Esame di Ricerca Operativa del 11/07/2016

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 15/01/2015

Algoritmo basato su cancellazione di cicli

COMPITO DI RICERCA OPERATIVA. max 5 2x 1 + 3x 2 x 3 = 2 + x 1 5x 2 x 4 = 5 + x 2. x 5 = 1 + x 1 x 2

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

Esame di Ricerca Operativa del 03/09/2015

COMPITO DI RICERCA OPERATIVA. (5 punti) Sia dato il seguente problema di PL: min x 1 + x 2 x 1 + x 2 3 x 1 + x 2 2 2x 1 + x 2 3.

Esame di Ricerca Operativa del 16/06/2015

Branch-and-bound per TSP

Il problema del commesso viaggiatore e problemi di vehicle routing

Alberi binari di ricerca

Esame di Ricerca Operativa del 09/02/2016

5.5 Metodi generali per la soluzione di problemi

Il problema del commesso viaggiatore: da Ulisse alla Logistica integrata. Luca Bertazzi

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

Il metodo dei Piani di Taglio (Cutting Planes Method)

Progettazione di Algoritmi

Progettazione di Algoritmi

Problemi difficili e ricerca esaustiva intelligente

Algoritmi generali per PLI

Esercizio 1. Esercizio 2

Programmazione Lineare Intera. Programmazione Lineare Intera p. 1/4

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

Branch-and-bound per KNAPSACK

Alberi ed Alberi Binari

Esame di Ricerca Operativa del 08/01/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

PROGRAMMAZIONE DINAMICA

Grafi pesati Minimo albero ricoprente

Makespan con set-up dipendenti dalla sequenza. 1/s jk /C max

Euristiche per il Problema del Commesso Viaggiatore

AMPL Problemi su Reti

Introduzione ai grafi

Domande d esame. Ricerca Operativa. G. Liuzzi. Giovedí 14 Maggio Istituto di Analisi dei Sistemi ed Informatica IASI - CNR

Introduzione ai grafi. Introduzione ai grafi p. 1/2

Ottimizzazione nella Gestione dei Progetti - Esercitazione 1: calcolo degli schedule ottimi

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

PROBLEMA DEL COMMESSO VIAGGIATORE:

Note per la Lezione 4 Ugo Vaccaro

3.6 Metodi basati sui piani di taglio

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

Ottimizzazione su grafi: massimo flusso (parte 1) Ottimizzazione su grafi:massimo flusso (parte 1) p. 1/33

Problema del cammino minimo

Problemi di localizzazione di servizi (Facility Location Problems)

Ottimizzazione e Controllo 2015/2016 ESERCITAZIONE

Rilassamento Lagrangiano

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia

Il Metodo Branch and Bound

Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);

Il problema dello zaino

Algoritmi e Strutture Dati

Possibile applicazione

Ricerca Operativa. Claudio Arbib Universitàdi L Aquila. Esercizi di ottimizzazione combinatoria

Transcript:

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) http://sorsa.unica.it/ ESERCITAZIONE N 7 1

Introduzione Vedremo alcuni algoritmi impiegati per la risoluzione di problemi di programmazione lineare a variabili intere (PLI): Metodi Branch-and-Bound Essi garantiscono l ottimalità lità della soluzione determinata t Sono algoritmi divide et impera, in quanto dividono ricorsivamente un problema in più sotto-problemi di semplice risoluzione e utilizzano queste soluzioni al fine di ottenere la soluzione del problema originario Metodi euristici Essi non determinano necessariamente la soluzione ottima, ma possono essere molto più efficienti dei metodi Branch-and-Bound 2 dal punto di vista computazionale

Alcune definizioni Sia dato il generico problema di ottimizzazione e sia il valore ottimo della funzione obiettivo del problema Si definisce rilassamento di un problema qualsiasi problema dove e. Il valore ottimo della funzione obiettivo di fornisce un limite inferiore al valore ottimo della funzione obiettivo di (P), cioè 3

Alcune definizioni Nel caso di problemi di massimo e il rilassamento fornisce un limite superiore al valore ottimo della funzione obiettivo di : Spesso i rilassamenti sono di più facile soluzione rispetto agli problemi originari a variabili intere, ovvero tali 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 Dato un problema di programmazione intera, si chiama rilassamento continuo il problema ottenuto da questo rimuovendo la condizione di interezza delle variabili 4

Branch-and-Bound Per introdurre l algoritmo di Branch-and-Bound, consideriamo il seguente problema a variabili binarie: 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) 5

Branch-and-Bound I cammini dalle foglie alla radice individuano d le attribuzioni dei valori 0 e 1 alle variabili e quindi tutte le soluzioni, non necessariamente ammissibili per il problema dato (ad esempio il cammino dalla radice alla foglia A individua una soluzione inammissibile, mentre il 6 cammino fino a B è una soluzione ammissibile)

Branch-and-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 dato 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 (ad esempio il sottoalbero di radice C nella figura precedente) si ottengono soluzioni peggiori della migliore soluzione ammissibile già ottenuta per il problema originario 7 In questi casi interi sottoalberi possono essere scartati o, in altre parole, visitati implicitamente (da qui il nome di algoritmi di enumerazione implicita)

Branch-and-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? 8

Branch-and-Bound Sia dato il seguente problema di PLI e si risolva il suo rilassamento continuo min c T x Ax = b x 0,intero Se la soluzione ottima del rilassamento continuo è intera, essa coincide con la soluzione ottima del problema originario Se non è intera, si seleziona secondo una determinata regola, una variabile con valore non intero nella soluzione ottima di e si crea un problema, aggiungendo il vincolo ai vincoli di si crea un problema, aggiungendo il vincolo ai vincoli di 9

Branch-and-Bound CASO 1. Le soluzioni di e sono intere, si prende quella di valore minimo e si arresta l algoritmo CASO 2. Una soluzione è intera - ad esempio - e l altra no: Se o è inammissibile, la soluzione di è ottima per Altrimenti, se la soluzione di non è intera, una variabile con valore non intero nella soluzione ottima di si crea un problema, aggiungendo il vincolo ai vincoli di si crea un problema, aggiungendo il vincolo ai vincoli di CASO 3. Se le soluzioni di e non sono intere, si 10 generano due sottoproblemi da ognuno di essi e così via

Branch-and-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 e una soluzione ammissibile per che sia minore della migliore soluzione ammissibile determinata fino a quel momento, ovvero un nuovo limite superiore rispetto all ottimo di La soluzione del corrispondente rilassamento è intera ed è migliore dell attuale limite superiore (nel qual caso essa diventa il nuovo limite superiore) 11 L algoritmo si arresta quando si sono visitati tutti i nodi disponibili dell albero delle decisioni

Branch-and-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 e una soluzione ammissibile per che sia maggiore della migliore soluzione ammissibile determinata fino a quel momento, cioè un nuovo limite inferiore rispetto all ottimo di La soluzione del corrispondente rilassamento è intera ed è migliore dell attuale limite inferiore (nel qual caso essa diventa il nuovo limite inferiore) 12 L algoritmo si arresta quando si sono visitati tutti i nodi disponibili dell albero delle decisioni

Branch-and-Bound: un esempio Esempio. Sia dato ad esempio il seguente problema di PLI: st s.t. 1 2 3 13

Branch-and-Bound: un esempio Risolviamo graficamente il suo rilassamento continuo : 1 Ottimo (1.25, 3.75) pari a 12.5 2 3 14

Branch-and-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 è inammissibile per, selezioniamo una variabile con valore non intero nella soluzione ottima e generiamo i sottoproblemi e Esistono molte regole per la scelta della variabile. Trascurando i criteri di scelta, in questo esempio si fissa la variabile di indice più piccolo 15

Branch-and-Bound: un esempio Sottoproblema 1 2 3 4 Ottimo (1, 10/3) pari a 11 16

Branch-and-Bound: un esempio Sottoproblema 1 2 3 4 Ottimo (2, 3.214) pari a 11.643 17

Branch-and-Bound: un esempio P 0 P 1 La soluzione ottima di rappresenta il limite superiore al valore ottimo dell originario problema di PLI a questa iterazione Poiché queste soluzioni sono ancora inammissibili per il problema originario, si seleziona uno dei due problemi - ad esempio - e una variabile con valore non intero nella soluzione ottima del problema considerato A partire dal problema, si generano ora i problemi e P 2 18

Branch-and-Bound: un esempio Sottoproblema 1 2 3 4 5 Ottimo (2.3, 3) pari a 11.3 19

Branch-and-Bound: un esempio Sottoproblema 1 2 3 4 5 Soluzione inammissibile 20

Branch-and-Bound: un esempio Al momento dobbiamo ancora esplorare i nodi dell albero relativi ai problemi e P 0 P 1 P 2 P 3 P 4 21 Selezioniamo ad esempio il problema e generiamo i problemi e

Branch-and-Bound: un esempio Sottoproblema 1 2 3 4 5 6 22 Ottimo (2, 3) pari a 11. E questa una soluzione ammissibile del problema originario, ovvero un limite inferiore sull ottimo di

Branch-and-Bound: un esempio Sottoproblema 1 2 3 4 5 6 Ottimo (3, 2.5) pari a 10.5 23

Branch-and-Bound: un esempio Avendo ottenuto al nodo una soluzione ammissibile per pari a 11, non vi è alcuna necessità di generare due ulteriori problemi a partire da e, perché non si otterrebbero soluzioni ammissibili per migliori rispetto a quella ottenuta P 0 P 1 P 2 P 3 P 4 P 5 P 6 24

Branch-and-Bound: un esempio Verifichiamo con Lindo che la soluzione ottenuta sia quella ottima per l originario problema OBJECTIVE FUNCTION VALUE 1) 11.00000 VARIABLE VALUE REDUCED COST X1 2.000000-1.000000 X2 3.000000-3.000000 NO. ITERATIONS= 6 BRANCHES= 0 DETERM.= 1.000E 0 25

Conclusioni sul Branch-and-Bound L efficienza degli algoritmi Branch-and-Bound dipende da diversi fattori, tra cui: Il metodo con cui è definito l albero delle decisioni Il metodo utilizzato per risolvere e i rilassamenti Le regole per la selezione delle variabili da fissare Le regole per la visita it dell albero lb 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

Algoritmi euristici Numerosi problemi di ottimizzazione a variabili intere sono difficili, ovvero non si dispone di tecniche in grado di determinare in modo efficiente la soluzione ottima In molti problemi diventa allora necessario sviluppare algoritmi i in grado di fornire una buona soluzione ammissibile, senza garantirne l ottimalità Si dice algoritmo euristico per un dato problema un algoritmo che determini una soluzione non necessariamente ottima del problema Un algoritmo in grado di determinare la soluzione ottima di viene detto esatto Vedremo ora alcuni esempi di algoritmi euristici di tipo greedy 27

Algoritmi greedy Gli algoritmi greedy (voraci) determinano la soluzione di un problema di ottimizzazione attraverso una sequenza di decisioni localmente ottime, senza mai modificare le decisioni prese Questi algoritmi sono di facile implementazione e notevole efficienza computazionale, ma in generale non garantiscono l ottimalità della soluzione trovata, ed a volte neppure la sua ammissibilità 28

Algoritmo greedy per 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 iali a l insieme degli oggetti selezionati come l insieme vuoto e poi scorre la lista degli oggetti in ordine di beneficio unitario non crescente L oggetto di volta in volta selezionato viene accettato se la capacità residua dello zaino è sufficiente, altrimenti 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 29

Algoritmo greedy per il problema dello zaino Sia data la seguente istanza del problema dello zaino: Implementare il precedente algoritmo greedy e verificare con Lindo se la soluzione ottenuta è ottima oppure no L algoritmo greedy produce la soluzione con f.o. 14 e peso totale pari a 7. La soluzione ottima è con f.o. 15epesototale8 In conclusione, l algoritmo descritto non garantisce l ottimalità 30

Algoritmo di Kruskal per il problema dell 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 non decrescente e verificando ogni volta che il sottografo corrispondente sia privo di cicli L algoritmo inizializza linsieme l insieme degli archi appartenenti all alberoalbero l insieme vuoto e poi scorre la lista degli archi in ordine di costo non decrescente 31

Algoritmo di Kruskal per il problema dell albero ricoprente di minimo costo L arco (i,j) di volta in volta selezionato viene accettato se il sottografo avente tutti gli archi in è privo di cicli, altrimenti viene scartato e si passa all arco successivo nell ordinamento L algoritmo termina quando contiene esattamente n-1 archi A differenza del caso precente, si può dimostrare che l algoritmo l di Kruskal fornisce delle soluzioni esatte 32

Algoritmo Nearest Neighbour per 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 iali a 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 larco l arco (i,j) di costo minimo, lo si aggiunge a P e si definisce j come nodo corrente 33

Algoritmo Nearest Neighbour per il problema del commesso viaggiatore L algoritmo termina quando tutti i nodi sono toccati da P, inserendo larco 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 Verificare con Lindo se la soluzione ottenuta è quella ottima 34

Algoritmo Nearest Neighbour per il problema del commesso viaggiatore L algoritmo Nearest Neighbour, partendo dal nodo 1, produce il ciclo fo=12 f.o.=12 Mentre la soluzione ottima è f.o.=11 Anche questo algoritmo greedy non è esatto 35