Massimo flusso e matching

Documenti analoghi
Esercizi per il corso di ricerca operativa 1

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Esame di Ricerca Operativa del 11/02/2015

COMPITO DI RICERCA OPERATIVA APPELLO DEL 07/04/04

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

Esame di Ricerca Operativa del 18/06/18

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

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Esame di Ricerca Operativa del 08/09/17

Esame di Ricerca Operativa del 11/07/2016

Esame di Ricerca Operativa. x 1 +2 x 2 6 x 1 +x 2 6 x 1 4 x 1 1

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

COMPITO DI RICERCA OPERATIVA. max x 1 + x 2 x 1 + x 2 1 x 1 + x 2 2. Lo si trasformi in forma standard e se ne determini una soluzione ottima.

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 05/09/18

Esame di Ricerca Operativa del 07/09/2016

Esame di Ricerca Operativa del 06/02/17

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 8 5x 1 3x 2 x 3 = 1 + 4x 1 + x 2 x 4 = 1 x 1 + x 2 x 5 = 5 x 1 x 2

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

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

5.1 Metodo Branch and Bound

Esame di Ricerca Operativa del 19/01/2016

Esame di Ricerca Operativa del 12/02/18. P 1 P 2 P 3 P 4 P 5 P 6 Peso bagaglio km di viaggio

Esame di Ricerca Operativa del 09/06/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

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

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

Esame di Ricerca Operativa del 21/06/17

Esame di Ricerca Operativa del 19/01/2016

Fac-simile dell esame di Ricerca Operativa. max 7 x 1 2 x 2 3 x 1 +x 2 2 x 1 2 x 2 3 x x 1 +x x 1 x 2 5

Esame di Ricerca Operativa del 16/06/2015

Esame di Ricerca Operativa del 09/06/14. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Esame di Ricerca Operativa del 25/06/12

COMPITO DI RICERCA OPERATIVA. min 2x 1 x 2 + x 3 x 4 x 1 x 2 + x 3 + x 4 = 5 x 1 + x 2 + x 3 3. x 1, x 2, x 3, x 4, x 5 I

Esame di Ricerca Operativa del 21/07/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

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

Esame di Ricerca Operativa del 03/09/2015

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

Matrici unimodulari e totalmente unimodulari

5.3 Metodo dei piani di taglio

Esercizi sulla Programmazione Lineare Intera

Esame di Ricerca Operativa del 11/1/19

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

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 09/02/2016

Esame di Ricerca Operativa del 16/02/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Gestione della produzione e della supply chain Logistica distributiva

RICERCA OPERATIVA (a.a. 2011/12) Nome: Cognome: Matricola:

Esame di Ricerca Operativa del 16/07/18

Esame di Ricerca Operativa del 30/06/14. max 4 x 1 7 x 2 x 1 +7 x 2 7 x 1 4 x 2 7 x 1 +5 x 2 5 x 1 x 2 5 x 2 1 x 1 +4 x 2 6

Esame di Ricerca Operativa

Possibile applicazione

min det det Allora è unimodulare se e solo se det 1, 1, 0 per ogni sottomatrice quadrata di di qualsiasi dimensione.

RICERCA OPERATIVA. Tema d esame del 13/12/2005

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

Gestione della produzione e della supply chain Logistica distributiva. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Il valore di flusso che si ottiene è

3.3 Problemi di PLI facili

Esame di Ricerca Operativa del 04/07/17

Esame di Ricerca Operativa del 15/01/19. max 6 x 1 x 2 6 x x x 1 +2 x x 1 3 x x 1 4 x x 1 +2 x x 1 x 2 19

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 =

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

METODI DELLA RICERCA OPERATIVA

Esame di Ricerca Operativa del 20/02/18

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

Formulazioni. Consideriamo il seguente problema di Knapsack 0-1. max (5x x 2. ) st 3x x 2. < 6 x {0,1} 2

città

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

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

3.2 Rilassamenti lineari/combinatori e bounds

DUALIT A ESERCITAZIONI DI RICERCA OPERATIVA 1

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

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

Esame di Ricerca Operativa del 03/07/18. Base x degenere y Indice Rapporti Indice entrante uscente

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

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

Esame di Ricerca Operativa del 23/02/17

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

Il metodo dei Piani di Taglio (Cutting Planes Method)

3.4 Metodo di Branch and Bound

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

min 2x 1 +4x 2 2x 3 +2x 4 x 1 +4x 2 +2x 3 + x 4 =6 2x 1 + x 2 +2x 3 + x 5 =3 x 0.

Se il grafo è bipartito, un accoppiamento viene anche detto assegnamento.

Flusso a Costo Minimo

ESERCIZIO 1: Punto 1

3.6 Metodi basati sui piani di taglio

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

Transcript:

Capitolo Massimo flusso e matching. Problema del massimo matching. Nel problema del massimo matching è dato un grafo non orientato G(V, A); un matching in G è un insieme di archi M A tale che nessuna coppia di archi di M abbia un nodo in comune. Si richiede di trovare il matching di cardinalità massima. Nel seguito si considerano solo problemi su grafo bipartito. Il problema ammette il seguente modello di Programmazione Lineare, max (i,j) A x ij (.) x ij i V (.) (i,j) δ(i) x ij {, }, (i, j) A, (.) dove δ(i) è l insieme degli archi incidenti sul nodo i. ESERCIZIO.. Determinare per ognuno dei seguenti grafi bipartiti un massimo matching, partendo dai matching iniziali M specificati di seguito. (a) M =. (b) M =, e M = {(a, b ), (a, b ), (a, b )}. (c) M =, e M = {(a, b ), (a, b )}. (d) M =, e M = {(a, b ), (a, b ), (a, b )}.

CAPITOLO. MASSIMO FLUSSO E MATCHING a b a b a b a b a b a b a b a b a b a b a b a b b a b a b a b (a) (b) (c) (d). Problema del massimo flusso. Nel problema del massimo flusso sono dati un grafo orientato G(V, A) con capacità c ij > specificate per ogni arco (i, j) A, un nodo sorgente s ed un nodo destinazione d, e si richiede di determinare il massimo flusso che può transitare sulla rete tra s e d rispettando le capacità degli archi. Un modello in Programmazione Lineare del problema è max f (.) (s,j) A j : (i,j) A (j,d) A x sj = f (.) x ij j : (j,i) A x ji =, i V {s, d}, (.6) x jd = f (.7) x ij c ij, (i, j) A (.8) x ij, (i, j) A. (.9) ESERCIZIO.. Per ognuno dei grafi di Figura., determinare il massimo flusso tra la sorgente s e la destinazione d, partendo dal flusso iniziale indicato. Determinare anche un taglio di capacità minima. (a) x s =, x =, x =, x =, x 6 =, x 6d =, x =, x d = (tutte le altre x ij = ). (b) (e) Flusso nullo. ESERCIZIO.. Dire se e quando la regione di ammissibilità del problema del massimo flusso può essere un poliedro illimitato (troncone). ESERCIZIO.. Si supponga di avere un problema di massimo flusso con capacità associate ai nodi anzichè agli archi; si suppone cioè che gli archi abbiano capacitrà infinita, ma in ogni nodo i possa transitare al massimo una quantità c i di flusso. Proporre una procedura per risolvere tale problema.

.. PROBLEMA DEL MASSIMO FLUSSO. s s 7 8 6 6 (a) 8 6 8 (c) s 6 6 d d 7 9 s 9 6 (e) 8 s 7 7 8 8 8 8 d 6 d (b) (d) 6 8 d Figura.: Reti di flusso con archi capacitati. ESERCIZIO.. (a) Scrivere il duale del problema del massimo flusso (usare variabili u i i V per i vincoli di bilanciamento e variabili w ij per i vincoli di capacità). (b) Verificare che, ad ogni taglio (U, V U) indotto da un insieme U V (con s U), é possibile associare una soluzione ammissibile duale, definita da { {, se i U,, se i U, j / U, u i = w ij =, se i / U,, altrimenti. ESERCIZIO.6. Scrivere le condizioni di complementarietà primale-duale per il problema del flusso massimo ed il suo duale.

CAPITOLO. MASSIMO FLUSSO E MATCHING

Capitolo Metodi per la programmazione intera ESERCIZIO.. Risolvere i seguenti programmi lineari interi per mezzo dell algoritmo di Gomory. max x x x x + x x + x x x x,..., x, intere. (a) max x + x x x + x + x = 8 x + x + x = 9 x x + x 6 = 7 x,..., x, intere. (b) max x + x x x + x x + x = x + x + x = x,..., x, intere. (c) max x + x x

6 CAPITOLO. METODI PER LA PROGRAMMAZIONE INTERA x x x = x + x + x + x = 7 x,..., x, intere. (d) max x x + x x x + x = x + x + x = x,..., x, intere. (e) max x + x x + x + x = x + x = x + x = x,..., x, intere. (f) ESERCIZIO.. Risolvere i programmi a variabili intere dell esercizio. utilizzando il metodo del branch and bound. Il problema del commesso viaggiatore (TSP) Il problema del commesso viaggiatore (Travelling Salesman Problem, TSP) consiste nel trovare, dato un insieme di citt a N = {,,..., n} ed una matrice di costi di viaggio c ij, i, j N, un ciclo chiuso (i, i,..., i n, i n+ i ) che tocchi tutte le città una ed una sola volta, minimizzando il costo totale di viaggio z = n c ik i k+. k= Tradizionalmente il problema è modellato come la ricerca di un ciclo hamiltoniano su un grafo G(V, A) con i costi c ij associati agli archi (i, j) A N N. Nella sua variante asimmetrica il problema ammette il seguente modello. min z = n i= j= n c ij x ij (.)

7 n x ij = j N, (.) j= n x ij = i N, (.) i= x ij S S N, S >. (.) i,j S x ij {, } i, j N, (.) dove x ij = iff l arco (i, j) fa parte del ciclo hamiltoniano; senza perdita di generalità, si può considerare la matrice c ij completa, definendo c ij = se (i, j) / A (il collegamento non può essere utilizzato). ESERCIZIO.. (a) Dimostrare che, aggiungendo una stessa costante ε a tutti i costi c ij di una stessa riga i, ogni soluzione x ij ottima del TSP rispetto ai costi c ij rimane ottima anche rispetto ai costi così modificati. (b) Definiti u i e v j, i, j N e la matrice dei costi ridotti c ij come u i = min j N {c ij} i N, v j = min i N {c ij u i } j N, c ij = c ij u i v j i, j N, dimostrare che LB = n i= u i + n j= v j è un lower bound valido per il TSP definito dalle (.) (.). ESERCIZIO.. Risolvere le istanze del problema del commesso viaggiatore associate alle seguenti matrici di costi c ij (c ij = quando l arco (i, j) non esiste) utilizzando il metodo del branch and bound. 8 6 (a) 6 8 7 6 6 6 8 6 6 (c) 8 7 9 8 6 9 8 8 8 7 (b) 6 (d)

8 CAPITOLO. METODI PER LA PROGRAMMAZIONE INTERA 8 7 8 (e) 8 8 6 7 (f)

Capitolo Massimo flusso e matching.. (a) = {(a, b ), (a, b ), (a, b )} è immediato. (b) Da M = {(a, b ), (a, b ), (a, b )} si etichetta a (E, ), b (O, a ), a (E, b ), b (O, a ), a (E, b ), b (O, a ), a (E, b ), b (O, a ). b è esposto, ed il cammino alternante individuato è ((a, b ), (b, a ), (a, b ), (b, a ), (a, b ), (b, a ), (a, b )), Quindi il matching risulta, dopo l aumento: = {(a, b ), (a, b), (a, b ), (a, b )}. Riapplicando la procedura di etichettatura, non si possono etichettare altri nodi esposti, quindi è ottimo. (c) Ottimo = {(a, b ), (a, b ), (a, b )}. (d) Ottimo = {(a, b ), (a, b ), (a, b ), (a, b )}... (a) A partire dal flusso iniziale specificato (totale f = ), si ottiene il primo grafo di scarto, riportato di seguito. s 7 6 7 6 d Si noti che (, ), (6, ), (d, 6) sono archi backward. Un possibile cammino orientato s d è (s,, d), che dà = min {7, } =. Si aumenta quindi di il flusso lungo gli archi (s, ) e (, d) del grafo originale, ottenendo x s = x d = e portando il flusso totale a f =. Ridisegnando il grafo di scarto per il nuovo 9

CAPITOLO. MASSIMO FLUSSO E MATCHING flusso, si ottiene s 6 7 6 6 d sul quale esiste il cammino s d (,,, 6, d). Si noti che questo cammino utilizza l arco backward (, ). Risulta = min {,,, } =, ed i nuovi flussi degli archi interessati sono x s =, x = =, x 6 = + =, x 6d = + =, ed il nuovo valore di flusso nella rete è f = + =. Il nuovo grafo di scarto è il seguente. s 8 6 6 6 d Sull ultimo grafo di scarto nonesistono cammini orientati s d (facile verifica), quindi un flusso massimo è dato da x s =, x =, x =, x 6 =, x 6d =, x s =, x =, x d =, x s =, x d =, con f =. Un taglio di capacità minima è determinato dall insieme dei nodi raggiungibili da s sull ultimo grafo di scarto mediante cammini orientati. Qui, U = {s,,,,, } è un taglio di capacità minima (verificare che C(S U ) = ). (b) Ottimo f =, U = {s,, }. (c) Ottimo f = 6, U = {s,,,,, 6}. (d) Ottimo f =, U = {s}. (e) Ottimo f = 9, U = {s,, }... Se i vincoli di capacità x ij c ij sono specificati per tutti gli archi del grafo, la regione di ammissibilità non può essere un troncone (i valori di ogni variabile sono limitati superiormente). Se invece il grafo contiene archi a capacità illimitata (vincolo x ij c ij assente) e se esiste un circuito formato da archi

di tale genere, la regione di ammissibilità è un poliedro illimitato. Infatti, sia C = (i, i,..., i m, i ), i k V un insieme di nodi tale che (i, i ), (i, i ),..., (i m, i m ), (i m, i ) A, e che nessun vincolo x ik i k+ c ik i k+ sia presente nella formulazione. Data una soluzione ammissibile x ij, (i, j) A della formulazione (.) (.9), si consideri la soluzione definita da { x x ij + ε se i, j C, ij = (i, j) A, ε >. x ij altrimenti, Per ogni ε >, x ij è una soluzione ammissibile in quanto (i) x ij > e (ii) i vincoli di bilanciamento del flusso sono rispettati, infatti per ogni i V :. se i / C, (i,j) A x ij (j,i) A x ij = (i,j) A x ij (j,i) A. se i C, esiste uno ed un solo arco del ciclo entrante in i, ed uno ed un solo arco del ciclo uscente da i, quindi x ij x ij = x ij + ε x ij ε (i,j) A (j,i) A (i,j) A = (i,j) A x ij (j,i) A x ij, (j,i) A quindi l ammissibilità di x ij implica l ammissibilità di x ij. Scegliendo valori di ε arbitrariamente grandi si possono quindi generare soluzioni ammissibili di (.) (.9) con vaori arbitrariamente grandi delle variabili. Si noti comunque che la presenza di cicli a capacità illimitata non implica che la rete ammetta un flusso illimitato: perché questo accada, occorre che esista un cammino orientato da s a d costituito da archi a capacità illimitata... È sufficiente, dato il grafo G capacitato sui nodi, costruire un grafo G capacitato sugli archi, definito come segue. Ad ogni nodo i con capacità c i di G corrispondono in G due nodi i, i collegati da un singolo arco (i, i ) di capacità c i. Ad ogni arco (i, j) di G corrisponde l arco (i, j ) di capacità infinita. Su G si può applicare il tradizionale algoritmo per trovare il flusso massimo... Definite le variabili u i, i V associate ai vincoli di conservazione del flusso, e le variabili w ij, (i, j) A associate ai vincoli di capacità, si noti che ogni colonna della matrice dei vincoli (eccetto la colonna della variabile f) corrisponde ad un arco (i, j) A ed ha esattamente tre (se tutti gli archi sono a capacità finita) elementi non nulli: + sulla riga dell i-esimo vincolo di bilanciamento, sulla riga del j-esimo vincolo di bilanciamento e + sulla riga del corrispondente vincolo di capacità. Il duale del modello del massimo flusso è quindi min c ij w ij (..) (i,j) A x ij,

CAPITOLO. MASSIMO FLUSSO E MATCHING u i u j + w ij (i, j) A, (..) u d u s = (..) u i libere, i V, w ij, (i, j) A, (..) dove il vincolo (..) tiene conto della colonna della variabile f (variabile che qui è considerata libera). (b) Per la serie di vincoli u i u j + w ij, si può verificare che, per ogni taglio (U, V U), per i valori specificati risulta, per (i, j) A: u i u j w ij u i u j + w ij i U, j / U i / U, j U i U, j U i / U, j / U Anche u d u s = risulta soddisfatto dalla definizione, in quanto s U e d / U..6. Rispetto alla formulazione duale ottenuta, le condizioni di complementarietà primale-duale si possono scrivere come x ij > = u i u j + w ij =, (i, j) A, x ij < c ij = w ij =, (i, j) A, w ij > = x ij = c ij, (i, j) A, u i u j + w ij > = x ij =, (i, j) A.

Capitolo Metodi per la programmazione intera.. Il problema in forma standard risulta min x + x + x x +x +x = x +x +x = x x x 6 = x,..., x 6, intere, con x, x, x 6 variabili di slack/surplus, la cui interezza segue dall interezza di tutti i coefficienti e termini noti. Rilassando il vincolo di interezza ed applicando l algoritmo del simplesso si ottiene il seguente tableau ottimo per il rilassamento continuo del problema. x x x x x x 6 x 6 x x z Poiché la soluzione prodotta non è intera, si seleziona una riga k con termine noto non intero e si genera il taglio di Gomory ad essa associato. Il taglio in questione per la riga della x 6 è + x + x,

CAPITOLO. METODI PER LA PROGRAMMAZIONE INTERA che inserito nel precedente tableau produce x x x x x x 6 y x 6 x x y z dalla quale, con un passo di simplesso duale si ottiene x x x x x x 6 y x 6 x x x z corrispondente ad un ottimo intero. (b) Applicando l algoritmo del simplesso si arriva al seguente tableau ottimo. x x x x x x 6 8 x x 9 9 x 6 z 8 La soluzione non è intera; generando il taglio sulla riga di x ( + x + x ) si ha x x x x x x 6 y 8 x x 9 9 x 6 y z 8 da cui si ottiene x x x x x x 6 y x x 7 x 6 9 x z 6 ottimo intero. (c) Soluzione ottima con x =, x =, x =, x = x =, con valore ottimo z = 7. (d) Soluzione ottima con x = 7, x =, x =, x = x =, con valore ottimo z =. (e) Soluzione ottima con x =, x =, x =, x =, valore ottimo z =. (f) Non esiste soluzione intera.

.. (a) Come primo passo si risolve il rilassamento continuo (o lineare) del problema, partendo dalla forma standard min x + x + x x + x + x = x + x + x = x x x 6 = x,..., x 6. Risolvendo il problema di prima fase ed applicando il simplesso si perviene al seguente tableau ottimo. x x x x x x 6 x 6 x x z (Nodo ) Il nodo radice ha quindi LB =. La soluzione trovata non è intera, quindi si assume z =. A questo punto si sceglie una variabile con valore frazionario per eseguire l operazione di branch. In questo caso si è scelto x, generando i branch x e x (nodi e rispettivamente). Disponendo del tableau ottimo ottima del nodo radice, i rilassamenti continui associati ai nodi figli possono essere risolti in modo incrementale, facendo uso del simplesso duale come accade nel metodo di Gomory. In particolare facendo uso dell uguaglianza relativa ad x si possono esprimere i due vincoli addizionali come x x x x x + y =, x x x x x y =, facendo uso della variabile di slack y e della variabile di surplus y rispettivamente. Nota: questi vincoli non sono tagli di Gomory, ma per la forma in cui sono stati posti possono essere introdotti nel tableau e la riottimizzazione dei sottoproblemi avviene tramite il simplesso duale; questo evita di riavviare il simplesso da zero per risolvere i nuovi nodi. Per il nodo, inserendo y nel tableau ottimo del nodo padre si ottiene allora x x x x x x 6 y x 6 x x y z

6 CAPITOLO. METODI PER LA PROGRAMMAZIONE INTERA e quindi x x x x x x 6 y x 6 x x x z (Nodo ) Il nodo viene quindi chiuso per ottimalità, e si ha z = LB =. Per il nodo, aggiungendo il vincolo x si ottiene il tableau x x x x x x 6 y x 6 x x y z (Nodo ) che presenta la condizione di illimitatezza duale; quindi il sottoproblema associato a questo nodo ha regione ammissibile vuota ed il nodo viene chiuso. Non essendoci altri nodi da processare, l algoritmo si arresta con la soluzione ottima trovata al nodo. L albero di branch è riportato in Figura.(a). (b) Soluzione ottima con x =, x = 7, x 6 = 9, x =, x = x =, con valore ottimo z = 6. (c) La soluzione del rilassamento continuo fornisce il seguente tableau ottimo. x x x x x 7 x x z 8 (Nodo ) Effettuando il branch su x si generano i nodi (x ) e (x ). Per il nodo, inserendo il vincolo x si ha da cui x x x x x y 7 x x y z 8 x x x x x y x x x z = LB = ; (Nodo )

7 Per il nodo si ha da cui x x x x x y x 7 x y z 8 x x x x x y x x x z = LB = (Nodo ) Nessuno dei due nodi presenta una soluzione intera, pertanto si assume ancora z =. Uno dei nodi deve quindi essere selezionato per effettuare un branch. Operando sul nodo, si generano i nodi (x ) e (x ). Per il nodo, procedendo in modo analogo a prima si introduce il vincolo x x x y x x y + y =, nel tableau ottimo del nodo padre e si ha e quindi x x x x x y y x x x y z x x x x x y y x x x x z 7 (Nodo ) Avendo soluzione intera, il nodo è chiuso per ottimalità; inoltre si imposta z = 7, ed in base a questo si può cancellare il nodo che ha un lower bound di > z. Infine, si verifica facilmente che il nodo viene chiuso per inammissibilità. L albero di branch è riportato in Figura.(c). (d) Soluzione ottima con x = 7, x =, x =, x = x =, valore ottimo z =. (e) Soluzione ottima con x =, x =, x =, x =, valore ottimo z =. (f) Non ha soluzioni intere.

8 CAPITOLO. METODI PER LA PROGRAMMAZIONE INTERA x x (a) x x x x (c) Figura.: Alberi di branch... (a) Aggiungendo ε a tutti i costi di una stessa riga k la funzione obiettivo del nuovo problema con costi c ij = { c ij, i k, c ij + ε, i = k. si esprime come z = c ij x ij i j = c ij x ij + (c kj x ij + εx kj x ij ) i k j j = c ij x ij + c kj x kj + ε x kj i k j j j = c ij x ij + ε i j = z + ε (Nota che j x ij = i.) Quindi i due problemi differiscono per una costante additiva nella funzione obiettivo, cosa che non cambia la struttura della soluzione ottima. Analogo ragionamento vale sulle colonne. (b) Per il punto (a), il problema TSP definito sui costi c ij = c ij u i v j ( ) ha la stessa soluzione ottima del problema originale, a parte la costante additiva i u i + j v j = LB in funzione obiettivo, quindi detti z e z i valori ottimi dei due problemi risulta. z = z + LB.

9 Ora, si osservi che il problema definito da n n min z = c ij x ij i= j= n x ij j N, j= n x ij i N, (P) i= x ij {, } i, j N, è un rilassamento del TSP (ogni soluzione ammissibile delle (.) (.) è anche soluzione ammissibile di (P)), e quindi se zp è il valore ottimo di (P) risulta z zp. Inoltre per i costi c ij = c ij u i v j esiste almeno un costo nullo su ogni riga e su ogni colonna; la soluzione ottima x ij di (P), a costo z P =, è data allora da { x se c ij =, ij = altrimenti. E quindi z = LB + z LB +z P = LB... (a) Le operazioni dell algoritmo di branch and bound procedono come segue. Nodo. Si effettua l operazione di riduzione sulla matrice dei costi, per righe e per colonne, ottenendo 8 6 = 9 =. 9 Su questa matrice ridotta non esiste un ciclo hamiltoniano a costo nullo. Solo gli archi (, ), (, ) e (, ) hanno penalità non nulla. LB = 7, z = +, p =, p = p =.

CAPITOLO. METODI PER LA PROGRAMMAZIONE INTERA L arco (, ) è selezionato per l operazione di branch. Nodo. La matrice dei costi ridotti diventa, ponendo c = : = 9. 9 Si ottiene quindi LB = LB + =, z = +. Nodo. Rimuovendo la riga e la colonna dalla matrice ridotta del nodo si ottiene 9 (già ridotta). Non si trova un ciclo hamiltoniano di costo nullo a questo nodo. Il nodo ha il lower bound (LB = LB + = 7) più basso tra i nodi aperti, quindi viene selezionato per proseguire l esplorazione. Solo gli archi (, ), (, ), (, ) hanno penalità non nulle. Quindi LB = LB + = 7, z = +, p = 9, p = p =. Il branch avviene sull arco (, ). Nodo. Ponendo c = si ottiene la matrice = 9, quindi LB = LB +9 = 6. Sulla matrice del nodo, tenendo conto dell arco preselezionato (, ), si può costruire il ciclo hamiltoniano a costo ridotto nullo C = {(, ), (, ), (, ), (, ), (, )}; questo rappresenta una soluzione ammissibile di costo z(c) = LB = 6; il nodo viene chiuso per ottimalità e si pone z = min {+, 6} = 6. LB = 6, z = 6. Nodo. Eliminando la riga e la colonna dalla matrice ridotta del nodo e ponendo c = (arco che crea un sottociclo nella soluzione parziale

{(, ), (, )} si ottiene = LB = LB + = 9, p = p =, p = p =. Il nodo ha il lower bound minore tra tutti i nodi aperti, e quindi viene effettuato un branch su un arco a penalità massima in questo caso è stato scelto (, ). Nodo. Forzando a il costo dell arco (, ) si ottiene la matrice =, dalla quale si può ricavare la soluzione completa {(, ), (, ), (, ), (, )}, di costo 9 < z (nuova miglior soluzione); quindi LB = 9, z := 9; il nodo viene chiuso per ottimalità; il nodo a questo punto risulta chiuso per bound (LB z). Nodo 6. Eliminando la riga e la colonna si ottiene la matrice ( ) = ( ) = LB 6 = 9 z; Il nodo 6 viene chiuso per bound. A questo punto la lista dei nodi aperti è stata svuotata, e quindi una soluzione ottima è {(, ), (, ), (, ), (, )}, di costo z = 9. L albero di branch associato a questo problema è riportato in figura.. Per gli altri esercizi si riportano una soluzione ottima ed il costo associato. (b) {(, ), (, ), (, ), (, ), (, )}, z = 7. (c) {(, ), (, ), (, ), (, ), (, )}, z =. (d) {(, ), (, ), (, ), (, ), (, )}, z = 9. (e) {(, ), (, ), (, ), (, ), (, )}, z = 9.

CAPITOLO. METODI PER LA PROGRAMMAZIONE INTERA x = x = x = x = x = x = 6 Figura.: Albero di branch per TSP.