Branch-and-bound per KNAPSACK

Похожие документы
Programmazione Lineare Intera. Programmazione Lineare Intera p. 1/4

Parte III: Algoritmo di Branch-and-Bound

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

Branch-and-bound per TSP

3.4 Metodo di Branch and Bound

Soluzione di problemi di Programmazione Lineare Intera

Esercizi sulla Programmazione Lineare Intera

Possibile applicazione

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

5.5 Metodi generali per la soluzione di problemi

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.

Algoritmo di Branch & Bound

Esame di Ricerca Operativa del 11/07/2016

Parte V: Rilassamento Lagrangiano

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 07/09/2016

Appunti sui Codici di Reed Muller. Giovanni Barbarino

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

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Il metodo dei Piani di Taglio (Cutting Planes Method)

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

Esame di Ricerca Operativa del 03/09/2015

5.3 Metodo dei piani di taglio

2.6 Calcolo degli equilibri di Nash

Si consideri il seguente tableau ottimo di un problema di programmazione lineare

METODI DELLA RICERCA OPERATIVA

Esame di Ricerca Operativa del 09/02/2016

RICERCA OPERATIVA. Tema d esame del 04/03/2008 (Simulazione)

Macchine parallele M 1 M 2 M 3 J 1 J 2 LAVORI J 3 J 4

Esame di Ricerca Operativa del 16/06/2015

Complementi ed Esercizi di Informatica Teorica II

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

1 Il metodo dei tagli di Gomory

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

Problemi di localizzazione di servizi (Facility Location Problems)

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

L ALGORITMO DEL SIMPLESSO REVISIONATO

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

Il metodo del simplesso

Excel: una piattaforma facile per l ottimizzazione. Excel ha un toolbox di ottimizzazione: Risolutore

Cammini minimi fra tutte le coppie

Esercizi di Programmazione Lineare - Dualità

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

Soluzione dei problemi di Programmazione Lineare Intera

Algoritmi di Ricerca

Ottimizzazione Multi Obiettivo

Metodi generali per la soluzione di problemi di PLI

Algoritmi generali per PLI

LE RADICI QUADRATE 9=3. è il simbolo dell operazione e prende il nome di segno di radice

4. METODI DUALI DEL SIMPLESSO

2. ALGORITMO DEL SIMPLESSO

Università Ca Foscari Venezia

Gestione della produzione e della supply chain Logistica distributiva

Rilassamento Lagrangiano

Corso di Analisi Numerica

Esercizi soluzione grafica e Branch and Bound. Daniele Vigo

Anno 3. Funzioni esponenziali e logaritmi: le 4 operazioni

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

Il problema dello zaino

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

LEZIONE 12. v = α 1 v α n v n =

ESPONENZIALI E LOGARITMI. chiameremo logaritmica (e si legge il logaritmo in base a di c è uguale a b ).

Problemi, istanze, soluzioni

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n

Programmazione dinamica

Integrale indefinito

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

Ottimizzazione e Controllo 2015/2016 ESERCITAZIONE

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

2. Algoritmi e Programmi

ESERCIZI SUI PUNTI DI NON DERIVABILITÀ TRATTI DA TEMI D ESAME

Транскрипт:

p. 1/1 Branch-and-bound per KNAPSACK Rispetto allo schema generale visto in precedenza dobbiamo specificare: come si calcola un upper bound su un sottinsieme; come si effettua il branching; come si individuano soluzioni ammissibili con cui, eventualmente, aggiornare il valore del lower bound LB.

p. 2/1 Upper bound U(S) Cominciamo con il calcolare l upper bound U(S) su tutta la regione ammissibile S. L upper bound si calcola utilizzando il rilassamento lineare del problema originale: max n i=1 v ix i n i=1 p ix i b 0 x i 1 i {1,...,n} Questo è un problema di PL, ma è di forma molto semplice e non abbiamo bisogno di scomodare l algoritmo del simplesso per risolverlo.

p. 3/1 Risoluzione del rilassamento lineare Riordinare, eventualmente, gli oggetti in modo non crescente rispetto ai rapporti valore/peso v i p i, cioè si abbia che: v 1 v 2 v n. p 1 p 2 p n

p. 4/1 Si calcolino i valori b p 1 b p 1 p 2 fino ad arrivare al primo valore negativo. b r+1 se vi si arriva (se non vi si arriva vuol dire semplicemente che tutti gli oggetti possono essere messi nello zaino e la soluzione ottima del problema è proprio quella di mettere tutti gli oggetti nello zaino). j=1 p j

p. 5/1 Soluzione rilassamento lineare La soluzione ottima del rilassamento lineare è la seguente ed ha il valore ottimo x 1 = x 2 = = x r = 1 x r+1 = b r j=1 p j p r+1 x r+2 = x r+3 = = x n = 0 r j=1 v j + v r+1 b r j=1 p j p r+1.

p. 6/1 Soluzione ammissibile Notiamo anche che la soluzione x 1 = x 2 = = x r = 1 x r+1 = x r+2 = x r+3 = = x n = 0 ottenuta approssimando per difetto il valore dell unica variabile (la x r+1 ) che può avere coordinate non intere nella soluzione del rilassamento lineare, è appartenente a S (il peso dei primi r oggetti non supera la capacità dello zaino). Quindi tale soluzione può essere utilizzata per il calcolo del lower bound LB.

p. 7/1 Sottinsiemi di S di forma particolare Consideriamo sottinsiemi di S con questa forma: S(I 0,I 1 ) = {N S : l oggetto i N i I 0, l oggetto i N i I 1 } dove I 0,I 1 {1,...,n} e I 0 I 1 =. In altre parole S(I 0,I 1 ) contiene tutti gli elementi di S che non contengono gli oggetti in I 0 e contengono gli oggetti in I 1. Possono invece indifferentemente contenere o non contenere gli oggetti nell insieme con i 1 < < i k. I f = {i 1,...,i k } = {1,...,n} \ (I 0 I 1 ),

p. 8/1 Nota bene Si ha che S = S(, ), cioè la regione ammissibile del problema può essere vista come caso particolare di sottinsieme di forma S(I 0,I 1 ) con I 0 = I 1 =.

p. 9/1 Upper bound per tali sottinsiemi Il nostro originario problema KN AP SACK ristretto al sottinsieme S(I 0,I 1 ) si presenta nella seguente forma: max i I 0 v i x i + i I 1 v i x i + i I f v i x i i I 0 p i x i + i I 1 p i x i + i I f p i x i b x i {0, 1} i I f da cui: max i I 1 v i + i I f v i x i i I f p i x i b i I 1 p i x i {0, 1} i I f

p. 10/1 Continua Possiamo notare che si tratta ancora di un problema di tipo KNAPSACK dove è presente una quantità costante nell obiettivo ( i I 1 v i ), dove lo zaino ha ora capacità b i I 1 p i e dove l insieme di oggetti in esame è ora ristretto ai soli oggetti in I f. Trattandosi ancora di un problema dello zaino, possiamo applicare ad esso la stessa procedura che abbiamo adottato per trovare l upper bound U(S), ovvero si risolve il rilassamento lineare. Tale procedura darà in output oltre all upper bound U(S(I 0,I 1 )), anche una soluzione appartenente a S(I 0,I 1 ) (e quindi a S) utilizzabile per il calcolo del lower bound LB.

p. 11/1 Procedura di calcolo Passo 1 Se b i I 1 p i < 0, il nodo non contiene soluzioni ammissibili (gli oggetti in I 1 hanno già un peso superiore alla capacità b dello zaino). In tal caso ci si arresta e si pone U(S(I 0,I 1 )) =

p. 12/1 Continua Passo 2 Altrimenti, si sottraggano successivamente a b i I 1 p i i pesi degli oggetti in I f nell ordine dato arrestandoci se Caso A si arriva ad un valore negativo, ovvero esiste r {1,...,k 1} tale che b i I 1 p i p i1 p ir 0 ma b i I 1 p i p i1 p ir p ir+1 < 0. Caso B Si sono sottratti i pesi di tutti gli oggetti in I f senza mai arrivare ad un valore negativo.

p. 13/1 Soluzioni ottime Caso A: x i1 = x i2 = = x ir = 1 x ir+1 = b i I 1 p i r j=1 p i j p ir+1 x ir+2 = x ir+3 = = x ik = 0 Caso B: x i1 = x i2 = = x ik = 1

p. 14/1 Passo 3 Output caso A: U(S(I 0, I 1 )) = i I 1 v i + r h=1 v ih + v ir+1 b i I 1 p i r h=1 p i h p ir+1. Output caso B: N = I 1 {i 1,..., i r } con f(n) = r v i + i I 1 U(S(I 0, I 1 )) = k v i + v ih. i I 1 h=1 h=1 v ih N = I 1 I f, con f(n) = U(S(I 0, I 1 )) = k v i + i I 1 h=1 v ih

p. 15/1 Nota bene Nel caso B il sottinsieme S(I 0,I 1 ) verrà sicuramente cancellato. Infatti in tal caso si ha: U(S(I 0,I 1 )) = f(n) LB, da cui segue la cancellazione del sottinsieme.

p. 16/1 Branching Vediamo ora di descrivere l operazione di branching. Dapprima la descriviamo per l insieme S e poi l estendiamo agli altri sottinsiemi generati dall algoritmo. Supponiamo di trovarci, al termine dell esecuzione della procedura per il calcolo di U(S), nel caso A (il caso B è un caso banale in cui tutti gli oggetti possono essere inseriti nello zaino). Avremo quindi un indice r + 1 che è il primo oggetto per cui la sottrazione successiva dei pesi assume valore negativo.

p. 17/1 Continua La regola di branching prescrive di suddividere S nei due sottinsiemi S({r + 1}, ) e S(, {r + 1}), ovvero in un sottinsieme della partizione si aggiunge l oggetto r + 1 all insieme I 0, nell altro lo si aggiunge all insieme I 1.

p. 18/1 Estensione Quanto visto per l insieme S può essere esteso a tutti i sottinsiemi di forma S(I 0,I 1 ): dato un tale sottinsieme, l oggetto i r+1 che appare nel calcolo dell upper bound nel caso A viene aggiunto in I 0 in un sottinsieme della partizione di S(I 0,I 1 ) e in I 1 nell altro sottinsieme, ovvero la partizione di S(I 0,I 1 ) sarà data dai seguenti sottinsiemi S(I 0 {i r+1 },I 1 ) e S(I 0,I 1 {i r+1 }). Si noti che con questa regola di branching tutti i sottinsiemi che appariranno nell insieme C saranno del tipo S(I 0,I 1 ) e quindi un upper bound per essi potrà sempre essere calcolato tramite la procedura vista.