Branch-and-bound per KNAPSACK

Documenti analoghi
Algoritmi esatti. La teoria ci dice che per problemi difficili (come il

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

Programmazione a numeri interi: il metodo del Branch and Bound

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

i completi l'esecuzione dell'algoritmo di programmazione dinamica per questo problema restituendo il valore ottimo e una soluzione ottima del problema

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

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

5.5 Metodi generali per la soluzione di problemi

Programmazione Matematica: VI Estensioni dell algoritmo del Simplesso

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

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 =

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

Metodi generali per la soluzione di problemi di PLI

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

Permutazioni. 1 Introduzione

1 Il metodo dei tagli di Gomory

Risoluzione di problemi di programmazione lineare tramite generazione di colonne

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

Metodi e Modelli per l Ottimizzazione Combinatoria Metodi Risolutivi per la Programmazione Lineare Intera

L ALGORITMO DEL SIMPLESSO REVISIONATO

Il metodo del simplesso. Il metodo del simplesso p. 1/8

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

Il metodo del simplesso

Programmazione Lineare Intera: Piani di Taglio

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à

Soluzione dei problemi di Programmazione Lineare Intera

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

Soluzione dei problemi di Programmazione Lineare Intera

Calcolare lo Span di un array di numeri

Algoritmi di Ricerca

Ottimizzazione Multi Obiettivo

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 5

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

Domini di funzioni di due variabili. Determinare i domini delle seguenti funzioni di due variabili (le soluzioni sono alla fine del fascicolo):

Gestione della produzione e della supply chain Logistica distributiva

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento

Rilassamento Lagrangiano

Corso di Analisi Numerica

Esercizi soluzione grafica e Branch and Bound. Daniele Vigo

Anno 3. Funzioni esponenziali e logaritmi: le 4 operazioni

Esame di Ricerca Operativa - 21 gennaio 2009 Facoltà di Architettura - Udine - CORREZIONE -

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

Teoria della Programmazione Lineare Intera

Il valore di flusso che si ottiene è

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 ).

Prova in itinere di Metodi di Ottimizzazione AA 2007/2008: compito A

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

Il metodo del simplesso. Il metodo del simplesso p. 1/127

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

Il problema delle azioni

2. Algoritmi e Programmi

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

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

5.4.5 Struttura dell algoritmo ed esempi

Transcript:

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.