Algoritmo di Branch & Bound

Documenti analoghi
5.5 Metodi generali per la soluzione di problemi

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

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

Il Metodo Branch and Bound

Metodi generali per la soluzione di problemi di PLI

Derivazione numerica. Introduzione al calcolo numerico. Derivazione numerica (II) Derivazione numerica (III)

Esame di Ricerca Operativa del 16/06/2015

Ottimizzazione e Controllo 2015/2016 ESERCITAZIONE

Esercizi soluzione grafica e Branch and Bound. Daniele Vigo

Prerequisiti didattici

Ottimizzazione Multi Obiettivo

IL METODO DEL SIMPLESSO

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I)

Somma di numeri binari

Parte V: Rilassamento Lagrangiano

Risoluzione di problemi ingegneristici con Excel

2.6 Calcolo degli equilibri di Nash

Contenuto e scopo presentazione. Modelli Lineari Interi/Misti. Piani di taglio. Piani di taglio. Piani di taglio Versione 31/08/

Rilassamento Lagrangiano

Esercizi di Ricerca Operativa I

Corso di Matematica per la Chimica

Ricerca Operativa. Docente. 1. Introduzione

4.5 Metodo del simplesso

Metodi e Modelli per l Ottimizzazione Combinatoria Metodi basati su generazione di colonne

Esercizi su ottimizzazione vincolata

Rilassamento Lagrangiano

Un esempio di applicazione della programmazione lineare intera: il Sudoku

Esame di Ricerca Operativa del 18/12/12. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Lezione 2. Sommario. Il sistema binario. La differenza Analogico/Digitale Il sistema binario

Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni

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

Introduzione al Calcolo Scientifico

Ottimizzazione Multi Obiettivo

Indice. Nota degli autori. 1 Capitolo 1 Introduzione alla ricerca operativa

Autorità per le Garanzie nelle Comunicazioni

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

I NUMERI. Si dice "radice quadrata" di un numero positivo a, quel numero positivo b che elevato al quadrato dà come risultato a.

Il problema del commesso viaggiatore

Heap e code di priorità

Indice. 1 Introduzione... 1

I.4 Rappresentazione dell informazione

x 1 x x 1 2 x 2 6 x 2 5 Indici di base Vettore Ammissibile Degenere (si/no) (si/no)

LA PROGRAMMAZIONE MATEMATICA (p.m.)

Cosa è l Informatica?

Esercizi per il corso di ricerca operativa 1

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Problemi, istanze, soluzioni

Note sull implementazione in virgola fissa di filtri numerici

ESERCIZI SVOLTI SUL CALCOLO INTEGRALE

Management Sanitario. Modulo di Ricerca Operativa

Corso di Calcolo Numerico

Schedulazione di attività in presenza di attività interrompibili

1 Definizione di sistema lineare omogeneo.

Esame di stato. Ricerca Operativa. Testideivecchiesamidistatosulsito. Non sono disponibili soluzioni.

Equazioni, funzioni e algoritmi: il metodo delle secanti

10 ottobre Marina Bertolini Dipartimento di Matematica F.Enriques Università degli Studi di Milano

Laboratorio di Ricerca Operativa Cad Ingegneria Gestionale (BGER3 - I semestre) a.a Homework n 33. Docente: Laura Palagi

Algoritmi enumerativi

Esercizi sulla Programmazione Lineare. min. cx Ax b x 0

Metodi e Modelli per l Ottimizzazione Combinatoria Metodi esatti per il problema del commesso viaggiatore

Problemi di Flusso: Il modello del Trasporto

Informatica di Base - 6 c.f.u.

Esame di Ricerca Operativa del 19/01/2016

Caratteristiche di un linguaggio ad alto livello

SUI SISTEMI DI DISEQUAZIONI IN DUE INCOGNITE

1. Considerazioni generali

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12

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

Esame di Ricerca Operativa del 19/01/2016

Cercare il percorso minimo Ant Colony Optimization

Sistemi di 1 grado in due incognite

Metodo dei minimi quadrati e matrice pseudoinversa

SCHEMI DI MATEMATICA

FUNZIONI. }, oppure la

Corso di Laurea in Ingegneria Informatica e Automatica (M-Z) Università di Roma La Sapienza

Il problema del commesso viaggiatore e problemi di vehicle routing

Rappresentazione generale del problema e fasi di progettazione

Modelli di programmazione lineare. Il metodo grafico è basato su linearità della funzione obiettivo linearità dei vincoli

EQUAZIONI DI PRIMO GRADO

Corso di Applicazioni di Intelligenza Artificiale LS. Prof. Paola Mello Anno accademico 2008/2009

Esercizi svolti di Programmazione Lineare. a cura di Laura Scrimali Dipartimento di Matematica e Informatica Università di Catania

Matematica finanziaria

Ottimizzazione Combinatoria Introduzione

12BHD - Informatica - soluzioni Appendice B del quaderno di testo - v. 1.05

Transcript:

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

Vogliamo Risolvere PLI (o PL0) Dato un problema di Programmazione Lineare Intera (o Binaria), vogliamo trovare numericamente, nell insieme ammissibile S, l ottimo * min c T S Come visto, S è spesso espresso come l insieme di punti interi (o binari) all interno di un poliedro P (formulazione scelta, S = P Z n ) min c T P (es. A b) Z n (o {0,} n ) P

Possibili Approcci Dato che generalmente il numero di punti ammissibili è finito, si potrebbe pensare ad una enumerazione Ma, per problemi appena realistici questi punti sono un numero enorme: l enumerazione completa richiederebbe tempi improponibili, come visto nella prima lezione Serve eventualmente un altro tipo di enumerazione Oppure si potrebbe pensare di migliorare la formulazione del problema, o di approssimare per eccesso e per difetto la soluzione fino a far incontrare le due approssimazioni (gap = 0 ottimo) Attenzione: arrotondando all intero più vicino una soluzione del problema di PL non ho nessuna garanzia né di ottimalità né di ammissibilità (soprattutto per problemi binari) P

Idee di Base del Branch & Bound Approccio di soluzione basato sull enumerazione implicita. Idee di base: Partizionare l insieme ammissibile in sottoinsiemi più facili P i (sottoproblemi) P i P j = i P i = P i j Procurarsi una soluzione ammissibile (ottimo corrente) ad esempio risolvendo il problema su alcuni sottoinsiemi, o tramite un euristica Continuare a risolvere il problema sui restanti sottoinsiemi scartando quelli dove quanto di meglio potrei ottenere (dato dal lower bound) non è migliore di quanto già ho (ottimo corrente) analizzando gli altri: aggiornando l ottimo corrente nel caso di soluzioni ammissibili migliori o partizionando ulteriormente i sottoinsiemi non abbastanza facili

Come Fare Ciò? Per mettere in pratica queste idee servono delle tecniche per effettuare: Bounding: tecniche per valutare quanto di meglio potrei ottenere su un sottoinsieme P i Vogliamo approssimare per difetto la soluzione ottima del sottoproblema: trovare lower bound c T * (limitatamente a P i ) Cerco compromesso tra velocità di calcolo e accuratezza del bound: tanti più sottoproblemi posso eliminare, tanto più velocizzo la soluzione del problema complessivo Branching: tecniche per generare i sottoproblemi P i Vogliamo generare sottoproblemi abbastanza facili ma non troppo numerosi

Bounding Rilassamento Lineare (più usato): elimino i vincoli di interezza del sottoproblema P i Ho problemi di PL, risolubili facilmente ad es. col simplesso Il minimo di c T scegliendo tra tutti i punti (interi o meno) sarà del minimo della stessa funzione scegliendo solo tra i punti interi L accuratezza, cioè la distanza dall ottimo intero del sottoproblema, dipenderà dalla qualità della formulazione P i del sottoproblema S i In alcuni casi fortunati potrei trovare direttamente l ottimo intero di S i P i P i S i S i

Bounding Sono possibili anche altre tecniche per individuare un lower bound: Rilassamento di altri vincoli difficili, ottenendo un sottoproblema più facile con insieme ammissibile più grande Aumentando il numero di punti tra cui scegliere, il minimo di c T non potrà che diminuire o restare uguale Modifica della funzione obiettivo in modo che la nuova funzione obiettivo sia c T sul sottoinsieme P i (= ci dia un lower bound) ma renda il sottoproblema più facile

Branching Binario agli interi più vicini (più usato): se risolvendo il rilassamento lineare trovo una soluzione che ha componenti non intere (dette frazionarie), ad es. k con valore v k P i era un sottoinsieme non abbastanza facile lo partiziono in P i+ e P i+ P i+ = P i {: k v k } P i+ P i+ P i+ = P i {: k v k } v k v k v k k Così elimino una striscia di P i che però non contiene soluzioni intere: tagliando in questo modo avrò prima o poi soluzioni intere ai rilassamenti Per problemi binari semplicemente fisso la variabile a 0 e a

Assemblando le Parti Siamo adesso in grado di costruire uno schema complessivo di Branch & Bound per problemi di minimo del tipo descritto min c T P Z n (o {0,} n ) Indichiamo con L la lista dei sottoproblemi P i da risolvere (problemi aperti); con o l ottimo corrente, con UB (upper bound) il valore c T o c T * ; con LB i e (S i ) rispettivamente il lower bound trovato per il sottoproblema P i e la soluzione ad esso corrispondente

Schema del Branch & Bound per min inizializzazione: L= P 0, indef., UB= +inf. L =? no scegli P i L si è l ottimo * cercato,stop calcola LB i e (S i ) con rilass. LB i < UB? no Scegli componente fraz. k per branching L = L {P i+, P i+ } no (P i ) intero? aggiorna UB:=LB i e := (P i ) si si

Scelta del sottoproblema P i L Ulteriori Aspetti quello con minimo LB (best bound: più promettenti) LIFO (last in first out) FIFO (first in first out) Scelta della variabile di branching k variabile più intera variabile più frazionaria ordine predefinito Precisione numerica nei confronti e tolleranza interi Tutte le scelte influenzano l evoluzione dell algoritmo, quindi i tempi di calcolo Purtroppo non esiste una scelta che sia sempre la migliore per tutti i problemi

Osservazioni È un algoritmo esatto, cioè garantisce, dato tempo sufficiente e a meno di imprecisioni numeriche (sempre presenti su macchine reali) di trovare l ottimo se esso esiste Per problemi di ma è tutto speculare: dai ril. lin. ottengo UB i e l ottimo corrente è un LB, che inizializzo a -inf L evoluzione dell algoritmo è rappresentabile come la visita di un albero (detto albero di branching, vedremo in seguito su un esempio) Implica la risoluzione di un gran numero di rilassamenti lineari, infatti la PLI è più complessa della PL Se ho formulazioni buone dei vari problemi ho LB migliori: posso allora cercare di migliorare queste formulazioni (detto Branch & Cut) Se ho una formulazione iniziale così buona (ottima) che la soluzione del primo rilassamento è già intera, ho la soluzione ottima intera senza alcun branching (cioè velocemente)

P 0 ma + 4 + 4 + 0 Z 5 3 0 Esempio vincolo vincolo A B,5 4 5 e disponiamo anche di una soluzione ammissibile B ˆ = 3 B ˆ = LB = ˆ = 4, A ˆ =,3 UB = 3,4 6,5 obiettivo 4 P 5 P

Esempio + + + 5 0 0 3 5 4 4 ma Z,5 6,5 4 5 LB = C = =,5 ˆ 5 ˆ C UB = P

Esempio P ma + 4 + 4 + 0 4 Z 5 3 0 LB = ˆ = 4 D UB = 3 ˆ =,5 3,5 D P 3 3 4 5 6,5 P 4 P =

Esempio + + + 4 0 0 3 5 4 4 ma Z LB = E = = ˆ 4 ˆ E UB =,5 6,5 4 5 3 aggiorna LB ottima intera P 3

Albero di Branching L evoluzione dell algoritmo si può rappresentare così P 0 =(4,;,3) z =3,4 P =(4;,5) z =3 P =(5;,5) z = P 3 =(4; ) z = P 4 inammissibile

Esempio ma + -4 + 6 9 + 4, 0, Z obiettivo P 0 vincolo s 0 = 3/ = 5/ U 0 = 7/ s 0 soluzione frazionaria, non ho ottimo corrente, devo fare branching, ad esempio su 3/ vincolo 4 P P

Esempio ma + -4 + 6 9 + 4, 0, Z P s = = U = soluzione intera, aggiorno ottimo corrente, no branching s

ma + -4 + 6 9 + 4, 0, Z P Esempio s = = 3/6 U = 0/3 U > valore ottimo corrente, la soluzione è frazionaria, sono costretto a fare branching s P 3 3 P 4

Esempio ma + -4 + 6 9 + 4 3, 0, Z P 4 problema inammissibile, lo chiudo

ma + -4 + 6 9 + 4, 0, Z P 3 Esempio s 3 = 3/4 = U 3 = 3/4 U 3 > valore ottimo corrente, la soluzione è frazionaria, sono costretto a fare branching 0 s 3 P 5 P 6

ma + -4 + 6 9 + 4, 0, Z P 6 Esempio s 6 = = U 6 = 3 U 6 > valore ottimo corrente, la soluzione è intera, aggiorno ottimo corrente s 6

ma + -4 + 6 9 + 4 0, 0, Z P 5 Esempio s 5 = 0 = 3/ U 5 = 3 U 5 valore ottimo corrente, allora posso chiudere il problema e l ottimo corrente s 6 è l ottimo complessivo s 5