1 Programmazione Lineare Intera

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

A T x b x 0. che chiameremo problema primale, possiamo associare ad esso un altro problema di PL, detto problema duale, definito come segue.

Possibile applicazione

1 Il metodo dei tagli di Gomory

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

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

Programmazione Lineare Intera: Piani di Taglio

Dualitá. Dualitá p. 1/4

Branch and Bound. Branch and Bound p. 1/3

Programmazione Matematica / A.A Soluzioni di alcuni esercizi

COMPITO DI RICERCA OPERATIVA APPELLO DEL 07/04/04

Ricerca Operativa. Ricerca Operativa p. 1/6

Parte IV: Rafforzamento di formulazioni e algoritmo dei piani di taglio

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.

PROGRAMMAZIONE LINEARE A NUMERI INTERI

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

5.3 Metodo dei piani di taglio

Programmazione Matematica / A.A Soluzioni di alcuni esercizi

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

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

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

Risoluzione di problemi di programmazione lineare tramite generazione di colonne

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

3.6 Metodi basati sui piani di taglio

Problema del trasporto

Problema di flusso massimo

Programmazione lineare

Esercizi sulla Programmazione Lineare Intera

Programmazione Lineare Intera

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

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

Branch-and-bound per KNAPSACK

Branch-and-bound per KNAPSACK

5.5 Metodi dei piani di taglio

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.

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.

Massimo flusso e matching

Dualitá in Programmazione Lineare e alcune conseguenze

TEORIA della DUALITÀ. Una piccola introduzione. Ricerca Operativa. Prof. R. Tadei. Politecnico di Torino. Teoria della Dualità / 1.

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

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

Algoritmi generali per PLI

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla teoria della dualità in programmazione lineare

PROGRAMMAZIONE LINEARE E DUALITA'

Algoritmi generali per PLI

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

Geometria della programmazione lineare

Università Ca Foscari Venezia

Tecniche di Decomposizione per Programmazione Lineare Intera (Mista)

3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI

Teoria della Programmazione Lineare. Teoria della Programmazione Lineare p. 1/8

Il modello duale. Capitolo settimo. Introduzione

Il metodo dei Piani di Taglio (Cutting Planes Method)

2.6 Calcolo degli equilibri di Nash

Ricerca Operativa. Programmazione Lineare. Università Mediterranea di Reggio Calabria Decisions Lab

Prima prova Intermedia di Ricerca Operativa 2 COMPITO A Esercizio 1 (7 punti): LIFO

7.9 Il caso vincolato: vincoli di disuguaglianza

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

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

5.4.5 Struttura dell algoritmo ed esempi

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;

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

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

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

Programmazione Matematica: VI Estensioni dell algoritmo del Simplesso

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

2. ALGORITMO DEL SIMPLESSO

Il metodo del simplesso

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

Esame di Ricerca Operativa del 07/06/2019

Esercizi di PLI. a cura di A. Agnetis. Risolvere il seguente problema di PLI con l algoritmo dei piani di Gomory:

LEZIONE 3. a + b + 2c + e = 1 b + d + g = 0 3b + f + 3g = 2. a b c d e f g

Ricerca Operativa A.A. 2017/2018

( ) le colonne della matrice dei coefficienti, con. , risulta A 3 = A 1 + 4A 2 + 4A 5, A 4 = A 1 + A 2,

Rango di una matrice e teorema di Rouché-Capelli

Trasformazione di Problemi Non Lineari

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

La funzione esponenziale e logaritmica

Tagli Split per Programmazione Lineare Intera Mista

La Rappresentazione dell Informazione

Appunti sui Codici di Reed Muller. Giovanni Barbarino

ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I

FONDAMENTI DI RICERCA OPERATIVA Prof. M.Trubian a.a. 2008/09 Prima prova in itinere: 25/11/08

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

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

I sistemi lineari Prof. Walter Pugliese

Programmazione Lineare

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

Programmazione Lineare: problema del trasporto Ing. Valerio Lacagnina

Condizioni di Karush-Kuhn-Tucker e Programmazione Lineare

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

Insiemi ed applicazioni

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

a 11 a 12 a 1n a 21 a 22 a 2n a m1 a m2 a mn mentre le variabili decisionali sono rappresentate dal vettore colonna n-dimensionale x,

La dualità nella Programmazione Lineare

Ricerca Operativa 2. Ricerca Operativa 2 p. 1/6

1 Modelli di Programmazione Lineare

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

4. METODI DUALI DEL SIMPLESSO

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

Transcript:

1 Programmazione Lineare Intera Fino ad ora abbiamo affrontato problemi in cui le variabili potevano assumere valori reali. Ora invece ci concentreremo su problemi in cui le variabili possono assumere solo valori interi. Per prima cosa vedremo un paio di esempi di problemi reali in cui le variabili possono assumere solo valori interi. 1.1 Il problema dello zaino Sono dati n tipi di oggetti. Agli oggetti di tipo i, i = 1,..., n, sono associati un peso p i e un valore v i. É inoltre dato uno zaino con capacitá pari a b. Il problema dello zaino consiste nel decidere quanti oggetti di ciascun tipo inserire nello zaino, tenendo conto che non si puó superare la capacitá dello zaino e che si vuole massimizzare il valore complessivo degli oggetti inseriti. Agli oggetti di tipo i associo una variabile x i che rappresenta il numero di oggetti di tipo i da inserire nello zaino. Si noti che tali variabili saranno necessariamente non negative e possono assumere solo valori interi. Abbiamo un unico vincolo nel problema, quello di non superare la capacitá b dello zaino. Tale vincolo é espresso dalla seguente disequazione: n p i x i b. i=1 L obiettivo, da massimizzare, é rappresentato dalla seguente formula: n v i x i. i=1 Quindi il modello del problema é il seguente max n i=1 v ix i n i=1 p ix i b x i 0, x i I i = 1,..., n dove I indica l insieme degli interi. Esiste anche una variante del problema, detta problema dello zaino binario, in cui esiste un solo esemplare di ogni tipo di oggetto e quindi le variabili x i possono assumere i due soli valori 0 (se non si inserisce l oggetto i) oppure 1 (se lo si inserisce). Variabili che possono assumere due soli valori vengono dette binarie. Il modello é il seguente: max n i=1 v ix i n i=1 p ix i b x i 0, x i {0, 1} i = 1,..., n 1

Esempio 1 Si supponga di avere tre tipi 1,2 e 3 di oggetti, con pesi e valori p 1 = 5 p 2 = 7 p 3 = 9 v 1 = 11 v 2 = 14 v 3 = 18. Si supponga inoltre di avere uno zaino con capacitá pari a 18. Il modello per il problema dello zaino é il seguente: max 11x 1 + 14x 2 + 18x 3 5x 1 + 7x 2 + 9x 3 18 x 1, x 2, x 3 0, x 1, x 2, x 3 I mentre per il problema dello zaino binario l unica differenza é rappresentata dal fatto che le variabili possono assumere i soli valori 0 e 1: max 11x 1 + 14x 2 + 18x 3 5x 1 + 7x 2 + 9x 3 18 x 1, x 2, x 3 0, x 1, x 2, x 3 {0, 1} 1.2 Problemi di produzione e distribuzione di prodotti Supponiamo di avere m negozi che hanno bisogno di un certo prodotto e n centri di produzione dove tale prodotto puó essere realizzato. Avremo inoltre le seguenti indicazioni. Il negozio i richiede una quantitá pari ad a i unitá di prodotto. Il centro di produzione j ha la possibilitá di realizzare fino ad un massimo di M j unitá di prodotto. Trasportare un unitá di prodotto dal centro di produzione j al negozio i ha un costo pari a c ij. Attivare il centro di produzione j ha un costo fisso pari a k j. Tale costo interviene se si produce anche una sola unitá di prodotto nel centro di produzione j ed é indipendente dalla quantitá prodotta (si pensi ai costi di attivazione dei macchinari che sono gli stessi sia che si produca una sola unitá di prodotto, sia che se ne producano migliaia). Il problema consiste nel decidere, per ogni centro di produzione j e negozio i, quante unitá di prodotto realizzare nel centro di produzione j perché siano inviate al negozio i, tenuto conto che si devono soddisfare le richieste di tutti i negozi, non si possono superare le capacitá produttive dei singoli centri e che si vuole realizzare il tutto minimizzando i costi. 2

Per prima cosa identifichiamo le variabili del problema. Per ogni coppia negozio i, i = 1,..., m, e centro di produzione j, j = 1,..., n, definiremo una variabile x ij che rappresenta le unitá di prodotto realizzate nel centro di produzione j per essere inviate al negozio i. Tali variabili sono ovviamente non negative e possono assumere solo valori interi. Oltre a tali variabili, introduciamo anche delle variabili binarie y j da associare a ciascun centro di produzione. La variabile y j assumerá valore 0 se il centro di produzione j non viene attivato, ovvero non viene realizzato alcun prodotto in esso, mentre assume il valore 1 se il centro viene attivato. Per esprimere il vincolo che deve essere soddisfatta la richiesta a i di prodotti del negozio i, richiederemo che la somma dei prodotti realizzati nei vari centri di produzione j per il negozio i sia pari ad a i, il che corrisponde alla seguente equazione: n x ij = a i. j=1 Nel centro di produzione j la quantitá massima di prodotto realizzabile é pari a 0 se il centro non viene attivato (ovvero se y j = 0) ed é pari a M j se il centro viene attivato (ovvero se y j = 1). Il vincolo sul massimo numero di prodotti realizzabili nel centro j é quindi rappresentato dalla seguente disequazione: m x ij M j y j. i=1 Per quanto riguarda i costi, avremo dei costi di trasporto dai centri di produzione j ai negozi i rappresentati dalla seguente espressione: m i=1 j=1 n c ij x ij. A questi dovremo aggiungere i costi fissi k j per i soli centri di produzione j attivati (per i quali cioé si ha y j = 1). Tali costi sono rappresentati dalla seguente espressione n k j y j. j=1 (Si noti che i centri di produzione non attivati, cioé con y j = 0, non portano alcun contributo a tali costi). I costi complessivi sarano dati dalla somma di costi di trasporto e costi fissi: m i=1 j=1 n c ij x ij + n k j y j. j=1 3

Tabella 1: N1 N2 N3 C1 2 1 5 C2 1 5 3 C3 4 3 1 C4 2 3 3 Quindi il modello del problema é il seguente: min m n i=1 j=1 c ijx ij + n j=1 k jy j n j=1 x ij = a i i = 1,..., m m i=1 x ij M j y j j = 1,..., n x ij 0, x ij I i = 1,..., m, j = 1,..., n y j {0, 1} j = 1,..., n Esempio 2 Si considerino 3 negozi N1, N2, N3 di elettrodomestici con richieste di lavatrici pari rispettivamente a 500, 700 e 800. Si considerino inoltre 4 centri di produzione C1, C2, C3, C4 con capacitá di produzione massima pari rispettivamente a 1500, 2000, 2500 e 2500. I costi per trasportare una singola lavatrice da un centro di produzione Cj ad un negozio Ni sono riportati in Tabella 1, mentre i costi fissi per i centri di produzione sono rispettivamente pari a 100, 150, 150 e 200. Il modello risultante é il seguente: min 2x 11 + x 12 + 4x 13 + 2x 14 + x 21 + 5x 22 3x 23 + 3x 24 + 5x 31 + 3x 32 + 1x 33 + 3x 34 tenuto conto che 100y 1 + 150y 2 + 150y 3 + 200y 4 x 11 + x 12 + x 13 + x 14 = 500 x 21 + x 22 + x 23 + x 24 = 700 x 31 + x 32 + x 33 + x 34 = 800 x 11 + x 21 + x 31 1500y 1 x 12 + x 22 + x 32 2000y 2 x 13 + x 23 + x 33 2500y 3 x 14 + x 24 + x 34 2500y 4 x ij 0, x ij I i = 1, 2, 3 j = 1, 2, 3, 4 y 1, y 2, y 3, y 4 {0, 1} 4

1.3 Uso delle variabili binarie per modellare vincoli logici Le variabili binarie vengono utilizzate per modellare decisioni del tipo fare o non fare una cosa, svolgere o non svolgere un attivitá. Data la variabile binaria x, ad essa si associa il valore 0 se si decide di non fare una cosa e il valore 1 se si decide di farla. Tali variabili vengono spesso utilizzate per modellare vincoli di tipo logico attraverso equazioni o disequazioni. Nel seguito verranno dati alcuni esempi di questo. Il vincolo logico se non svolgo l attivitá 1 allora non svolgo neppure l attivitá 2 puó essere espresso tramite il vincolo x 2 x 1 dove x 1 e x 2 sono ovviamente le variabili binarie associate rispettivamente alle attivitá 1 e 2. Il vincolo logico se svolgo l attivitá 3 allora svolgo almeno una tra le attivitá 4 e 5 puó essere espresso tramite il vincolo x 3 x 4 + x 5 Il vincolo logico se svolgo l attivitá 6 allora devo svolgere sia l attivitá 7 che l attivitá 8 puó essere espresso tramite il vincolo oppure attraverso la coppia di vincoli 2x 6 x 7 + x 8 x 6 x 7 x 6 x 8. 1.4 Relazione tra un problema lineare intero e il suo rilassamento lineare Si consideri un problema di Programmazione Lineare Intera (abbreviato con PLI nel seguito) in forma canonica: w = max c T x A T x b x 0, x I n dove ricordiamo che I denota l insieme degli interi. Si indicherá con Z a la regione ammissibile di questo problema, e quindi Z a = {x I n : A T x b, x 0}, e con Z ott l insieme delle sue soluzioni ottime: Z ott = {x Z a : c T x c T x x Z a }. 5

Chiameremo rilassamento lineare del problema di PLI, il problema di Programmzaione Lineare Ordinaria (abbreviato con PLO nel seguito) ottenuto dal problema di PLI omettendo la richiesta che le variabili siano intere, e quindi z = max c T x A T x b x 0 Esempio 3 Si consideri il seguente problema di PLI: max x 1 + x 2 x 1 + 2x 2 4 2x 1 + x 2 4 x 1, x 2 0, x 1, x 2 I. Si determinino per via grafica la soluzione del problema di PLI e del suo rilassamento lineare. Come al solito, indicheremo con S a e S ott rispettivamente la regione ammissibile e l insieme delle soluzioni ottime del problema di PLO. Possiamo notare che Z a S a e che i due problemi hanno la stessa funzione obiettivo c T x. Da ció conseguono le seguenti relazioni tra il problema di PLI e il problema di PLO suo rilassamento lineare. 1. Se S a =, allora Z a =. 2. Se l obiettivo del problema di PLI é illimitato, allora lo é anche quello del suo rilassamento lineare. 3. Se S ott e Z ott, allora il valore ottimo w del problema di PLI non puó essere superiore al valore ottimo z del suo rilassamento lineare, ovvero w z 4. Se S ott contiene un punto x a coordinate tutte intere, allora x Z ott e w = z, come accade nel seguente esempio max x 2 x 1 + 2x 2 4 2x 1 + x 2 4 x 1, x 2 0, x 1, x 2 I. 6

Altri casi possibili nelle relazioni tra un problema di PLI e il suo rilassamento lineare sono le seguenti. 1. Z a = ma S ott, come nel seguente esempio: max x 2 x 1 1 4 x 1 3 4 x 2 2 x 1, x 2 0, x 1, x 2 I. 2. Z a = ma l obiettivo del rilassamento lineare é illimitato, come nel seguente esempio: max x 2 x 1 1 4 x 1 3 4 x 1, x 2 0, x 1, x 2 I. 3. Se A, b e c contengono solo valori razionali, allora Z ott implica S ott. Se vi sono coefficienti irrazionali allora puó accadere che Z ott ma il rilassamento lineare ha obiettivo illimitato, come nel seguente esempio: max x 2 x 2 = 2x 1 x 1, x 2 0, x 1, x 2 I. dove Z a (e quindi Z ott ) contiene la sola origine, ma l obiettivo del rilassamento lineare é illimitato. Un importante osservazione é la seguente. I problemi di PLO sono in generale molto piú semplici da risolvere dei problemi di PLI 1. In particolare il rilassamento lineare di un problema di PLI é tipicamente molto piú facile da risolvere del problema di PLI stesso. Questa osservazione puó spingere a risolvere i problemi di PLI con la seguente procedura: risolvo il rilassamento lineare del problema di PLI; 1 Nella teoria della complessitá i problemi di PLO sono classificati tra quelli risolvibili in tempo polinomiale, mentre quelli di PLI sono verosimilmente solo risolvibili in tempo esponenziale 7

arrotondo le variabili nella soluzione ottima che non hanno valore intero ma decimale (se ne esistono: nel caso in cui non ne esistano la soluzione del rilassamento lineare é anche soluzione del problema di PLI). In realtá questa procedura rischia di restituire risultati molto inesatti. Ad esempio, in precedenza abbiamo visto un caso dove il rilassamento lineare ha soluzione ottima mentre il problema di PLI ha regione ammissibile vuota. In tal caso, applicando la procedura vista sopra, restituiremmo una soluzione ottima per un problema che non ha neppure una soluzione ammissibile. Va detto comunque che una procedura di questo tipo é accettabile quando si ha a che fare con variabili che assumono valori molto elevati. Se nella soluzione ottima del rilassamento lineare ho una variabile con valore pari a 20000.4 e la arrotondo a 20000, posso introdurre un errore ma essendo la parte decimale (0.4) quasi irrilevante rispetto al valore 20000.4 della variabile, tale errore é tipicamente trascurabile. Al contrario, con variabili intere che assumono valori piccoli, ad esempio 1.4, l arrotondamento a 1 del valore di tale variabile puó causare errori non trascurabili, come conseguenza del fatto che la parte decimale (0.4) non é affatto irrilevante rispetto al valore di 1.4. Questo é in particolare vero quando si ha a che fare con variabili binarie, con le quali la procedura vista sopra va certamente evitata. Restano allora da indicare procedure di risoluzione per i problemi di PLI applicabili in tutti i casi. Una di queste verrá vista nel seguito. 1.5 Algoritmi di taglio Per introdurre gli algoritmi di taglio dobbiamo prima introdurre il concetto di taglio valido per un problema di PLI. Sia dato un problema di PLI con il suo rilassamento lineare. Sia x una soluzione ottima del rilassamento lineare, che si suppone abbia almeno una coordinata non intera (se tutte le sue coordinate fossero intere allora x Z ott ). Definizione 1 Una disequazione w T x v si definisce taglio valido per il problema di PLI se non é soddisfatta da x ma é soddisfatta da tutti i punti nella regione ammissibile del problema di PLI, ovvero w T x > v w T x v x Z a Il concetto di taglio valido conduce alla definizione degli algoritmi di taglio. In essi si comincia risolvendo il rilassamento lineare del problema di PLI. Se questo ha soluzione a coordinate tutte intere, essa é soluzione anche del problema di PLI. Altrimenti si genera (in modi che vedremo in seguito) un taglio valido, si aggiunge questo taglio ai vincoli del rilassamento lineare e si risolve il problema di PLO ottenuto con questa aggiunta. Se la soluzione ottima ha coordinate tutte intere, essa é soluzione anche del problema di PLI. Altrimenti si genera un nuovo taglio valido, si aggiunge anche questo taglio ai vincoli del rilassamento 8

lineare e si risolve il problema di PLO ottenuto con questa ulteriore aggiunta. Si itera questa procedura fino a quando non si ottiene una soluzione intera. Dato il problema di PLI max c T x a T i x b i i = 1,..., m x j 0, x j I j = 1,..., n formalmente, lo schema di un algoritmo di taglio é il seguente. Inizializzazione Si risolva il rilassamento lineare max c T x a T i x b i x j 0 i = 1,..., m j = 1,..., n del problema di PLI. Se S a =, allora Z a =. Tralasceremo il caso di obiettivo illimitato del rilassamento lineare e quindi l unica altra possibilitá é che esista una soluzione ottima, indicata con x 1. Si ponga k = 1. Passo 1 Se x k ha coordinate tutte intere, allora si restituisca x k Z ott. Altrimenti si vada al Passo 2. Passo 2 Si generi un taglio valido w T k x v k che non sia soddisfatto da x k ma sia soddisfatto da tutti i punti in Z a, ovvero w T k x k > v k w T k x v k x Z a. Passo 3 Si aggiunga il nuovo taglio valido ai vincoli originari del problema e ai tagli validi generati in precedenza e si risolva il problema di PLO max c T x a T i x b i wr T x v r x j 0 i = 1,..., m r = 1,..., k j = 1,..., n Se tale problema ha regione ammissibile vuota possiamo concludere che Z a =. Altrimenti sia x k+1 la sua soluzione ottima. Passo 4 Si ponga k = k + 1 e si ritorni al Passo 1. Resta ancora da chiarire come si genera un taglio valido. Ci sono molti modi per generare tagli validi. Qui ne descriveremo un paio con alcune considerazioni sull efficienza. In entrambi i casi si richiede di compiere la seguente operazione, 9

fondamentale per il funzionamento della procedura, prima di iniziare a risolvere il problema: tutti i coefficienti e termini noti dei vincoli devono essere resi interi. Ad esempio, nel problema di PLI max x 1 + x 2 x 1 3 2 x 2 3 2 x 1, x 2 0, x 1, x 2 I. dovremo moltiplicare entrambi i vincoli per 2 in modo da rendere tutti i coefficienti e i termini noti interi, ottenendo quindi il problema: max x 1 + x 2 2x 1 3 2x 2 3 x 1, x 2 0, x 1, x 2 I. Questa trasformazione garantisce che le variabili u i che verranno associate a ciascun vincolo saranno anch esse vincolate ad assumere valori interi quando le x j assumono valori interi, la qual cosa non si puó garantire senza la trasformazione. Nell esempio verranno aggiunte ai due vincoli le variabili u 1 e u 2 nel modo seguente max x 1 + x 2 u 1 = 3 2x 1 u 2 = 3 2x 2 x 1, x 2, u 1, u 2 0, x 1, x 2, u 1, u 2 I. dove u 1, u 2 I non avrebbe potuto essere garantito senza la trasformazione. 1.6 Tagli di Dantzig Supponiamo di aver risolto il rilassamento lineare e di aver ottenuto con la base ottima {y 1,..., y n } la soluzione di base y j = 0 j = 1,..., n y n+i = β i i = 1,..., m a coordinate non tutte intere (ovvero almeno uno dei β i non é intero). Questo ci dice che fissando tutte le variabili in base a 0 non otteniamo una soluzione a coordinate intere. Quindi per entrare in Z a almeno una delle variabili in base 10

u 1 u 2 x 1-1/2 0 3/2 x 2 0-1/2 3/2 z -1/2-1/2 3 Tabella 2: deve avere valore positivo. Essendo tali variabili vincolate ad assumere valori interi, questo equivale a dire che almeno una delle variabili deve assumere valore 1, o, equivalentemente, che la somma delle variabili in base deve essere 1. Da ció possiamo scrivere il seguente taglio valido detto taglio di Dantzig. y 1 + + y n 1. Vediamo di ricavare il taglio di Dantzig per il nostro esempio. Applicando l algoritmo del simplesso si arriva alla Tabella 2 che é la tabella ottima. La soluzione ottima x 1 = 3/2, x 2 = 3/2 del rilassamento lineare ha coordinate non intere. Quindi posso introdurre un taglio. In base a quanto visto il taglio di Dantzig si ottiene ponendo 1 le variabili in base, cioé u 1 + u 2 1. Possiamo anche esprimere questo vincolo nelle variabili originarie x 1 e x 2. Ricordando che u 1 = 3 2x 1 e u 2 = 3 2x 2 si ha che il vincolo equivale a: 2x 1 + 2x 2 5. Come controllo si verifichi che il taglio non é soddisfatto dalla soluzione ottima x 1 = 3/2, x 2 = 3/2 del rilassamento lineare ma é soddisfatto da tutti i punti in Z a. A questo punto l algoritmo di taglio prescrive di aggiungere il taglio ai vincoli precedenti e risolvere il problema ottenuto in questo modo. Per fare ció aggiungiamo una nuova variabile u 3 da associare al taglio, ponendo u 3 = u 1 + u 2 1. A questo punto abbiamo giá pronta la tabella relativa alla base {u 1, u 2 } del nuovo problema. Infatti sará sufficiente aggiungere alla Tabella 2 una riga relativa alla variabile u 3 come mostrato in Tabella 3. Si nota immediatamente che la base {u 1, u 2 } non é ammissibile (come deve essere perché sia tagliata la soluzione ottima del rilassamento lineare), ma l ultima riga continua ad avere valori negativi e quindi la base corrispondente del duale {x 1, x 2, u 3 } é ammissibile. Questo ci consente di utilizzare l algoritmo del simplesso duale. Applicando tale algoritmo si giunge alla Tabella 4 che é ottima. La soluzione ottima x 1 = 1, x 2 = 3/2 del nuovo problema ha una coordinata non intera. Quindi devo introdurre un nuovo taglio di Dantzig. In base a quanto visto il taglio di Dantzig si 11

u 1 u 2 x 1-1/2 0 3/2 x 2 0-1/2 3/2 u 3 1 1-1 z -1/2-1/2 3 Tabella 3: u 3 u 2 x 1-1/2 1/2 1 x 2 0-1/2 3/2 u 1 1-1 1 z -1/2 0 5/2 Tabella 4: ottiene ponendo 1 le variabili in base, cioé u 3 + u 2 1. Possiamo anche esprimere questo vincolo nelle variabili originarie x 1 e x 2. Ricordando che u 3 = u 1 + u 2 1, u 1 = 3 2x 1 e u 2 = 3 2x 2 si ha che il vincolo equivale a: 2x 1 + 4x 2 7. Come controllo si verifichi che il taglio non é soddisfatto dalla soluzione ottima x 1 = 1, x 2 = 3/2 del nuovo problema ma é soddisfatto da tutti i punti in Z a. A questo punto l algoritmo di taglio prescrive di aggiungere il taglio ai vincoli precedenti e risolvere il problema ottenuto in questo modo. Per fare ció aggiungiamo una nuova variabile u 4 da associare al taglio, ponendo u 4 = u 2 + u 3 1. A questo punto abbiamo giá pronta la tabella relativa alla base {u 2, u 3 } del nuovo problema. Infatti sará sufficiente aggiungere alla Tabella 4 una riga relativa alla variabile u 4 come mostrato in Tabella 5. Si nota immediatamente che la u 3 u 2 x 1-1/2 1/2 1 x 2 0-1/2 3/2 u 1 1-1 1 u 4 1 1-1 z -1/2 0 5/2 Tabella 5: 12

base {u 2, u 3 } non é ammissibile (come deve essere perché sia tagliata la soluzione ottima del problema), ma l ultima riga continua ad avere valori negativi e quindi la base corrispondente del duale {x 1, x 2, u 1, u 4 } é ammissibile. Questo ci consente di utilizzare l algoritmo del simplesso duale. La procedura viene ripetuta fino a quando si ottiene una soluzione a coordinate tutte intere. Ci si puó chiedere se possiamo garantire che l algoritmo di taglio che usa i tagli di Dantzig termina in un numero finito di iterazioni. La risposta é negativa. Si possono costruire esempi in cui anche aggiungendo infiniti tagli l algoritmo non restitusice mai una soluzione ottima del problema di PLI. Questo mostra come i tagli di Dantzig possano essere molto inefficienti. Ci si chiede allora se esistono tagli piú efficienti, per i quali é possibile garantire la restituzione di una soluzione ottima in un numero finito di iterazioni. Tagli di questo tipo sono i tagli di Gomory, che ci apprestiamo a descrivere. 1.7 Tagli di Gomory Supponiamo di essere giunti alla tabella ottima del rilassamento lineare relativa alla base {y 1,..., y n } e di avere che la soluzione di base corrispondente ha almeno una variabile fuori base con valore non intero. Sia y n+k una tale variabile e sia la seguente la riga relativa a y n+k nella tabella ottima: y n+k α k1 α k2 α kn β k con β k 0 e non intero. Si ricordi che il significato di tale riga é il seguente y n+k = α k1 y 1 + α k2 y 2 + + α kn y n + β k. (1) Si consideri ora il seguente taglio, detto taglio di Gomory f k1 y 1 + f k2 y 2 + + f kn y n f k 0 dove f kj, j = 1,..., n, é la mantissa di α kj, cioé f kj = α kj α kj 0 ( a rappresenta la parte intera di a ovvero il piú grande intero a), mentre f k é la mantissa di β k, cioé f k = β k β k > 0, dove f k > 0 é una conseguenza della non interezza di β k. Possiamo associare come di consueto a questo taglio una nuova variabile y n+m+1 nel modo seguente y n+m+1 = f k1 y 1 + f k2 y 2 + + f kn y n f k (2) 13

ed il nostro taglio equivale a richiedere che si abbia y n+m+1 0. Vogliamo dimostrare la seguente osservazione. Osservazione 1 Il taglio di Gomory é un taglio valido. Dimostrazione Per prima cosa dimostriamo che la soluzione ottima del rilassemento lineare non soddisfa questo vincolo. Notiamo che per tale soluzione ottima si ha y 1 = = y n = 0 e quindi y n+m+1 = f k < 0. Quindi la soluzione ottima del rilassamento lineare non soddisfa, come desiderato, il nostro taglio. Resta da far vedere che il taglio é soddisfatto da ogni punto in Z a. Prendiamo un generico punto y 1,..., y n, y n+1,..., y n+m in Z a. Sostiuiamo le coordinate di tale punto in (1) e (2) ed otteniamo rispettivamente y n+k = α k1 y 1 + α k2 y 2 + + α kn y n + β k. (3) y n+m+1 = f k1 y 1 + f k2 y 2 + + f kn y n f k. (4) Ció che si vuole dimostrare é che il valore di y n+m+1 é 0 e cioé che la generica soluzione ammissibile in Z a y 1,..., y n, y n+1,..., y n+m (5) soddisfa il taglio. Per prima cosa dimostraimo che in corrispondenza di ogni punto (5) in Z a si ha che il valore di y n+m+1 é intero. Per dimostrare questo sommiamo (3) e (4). Ricordando la definizione delle f kj e di f k, la somma ha come risultato y n+m+1 = y n+k α k1 y 1 α k2 y 2 α kn y n + β k Questo mostra che in corrispondenza di ogni punto in Z a il valore y n+m+1 é un valore intero (le parti intere sono tutti valori interi e le variabili y j, j = 1,..., n; in Z a assumono valori interi). Da (4) abbiamo anche che y n+m+1 + f k = f }{{} k1 y }{{} 1 0 0 + f }{{} k2 0 y 2 }{{} 0 + + f }{{} kn 0 y n }{{} 0 Questo ci dice che, in corrispondenza di ogni punto (5) di Z a, si ha che y n+m+1 + f k é 0 ed inoltre sappiamo che 0 < f k < 1 e in precedenza abbiamo dimostrato che y n+m+1 assume valori interi in corrispondenza di ogni punto di Z a. Ció. 14

u 1 u 2 x 1-1/2 0 3/2 x 2 0-1/2 3/2 u 5 1/2 0-1/2 z -1/2-1/2 3 Tabella 6: é possibile soltanto se y n+m+1 0 in corrispondenza di ogni punto di Z a, come si voleva dimostrare. Vediamo ora di applicare l algoritmo di taglio con i tagli di Gomory nell esempio visto in precedenza. Fino alla risoluzione del rilassamento lineare non ci sono differenze rispetto a quanto visto con i tagli di Dantzig. Quindi riprendiamo con la Tabella 2 ottima per il rilassamento lineare. Si nota che la soluzione ottima non ha coordinate tutte intere. Per generare un taglio di Gomory dobbiamo considerare una riga con un β k non intero. Per convenzione prendiamo la prima dall alto e quindi la riga relativa alla variabile x 1. Il taglio é definito come segue: ( 1 2 1 2 ) u 1 + (0 0 )u 2 ( 3 2 3 2 ) 0, cioé 1 2 u 1 1 2 0. Ricordando la definizione di u 1 possiamo definire questo taglio in funzione delle variabili originarie, ottenendo x 1 1. Si puó verificare che il taglio non é soddisfatto dalla soluzione ottima x 1 = 3/2, x 2 = 3/2 del rilassamento lineare, ma é soddisfatto da tutti i punti di Z a. A questo punto l algoritmo di taglio prescrive di aggiungere il taglio ai vincoli precedenti e risolvere il problema ottenuto in questo modo. Per fare ció aggiungiamo una nuova variabile u 5 da associare al taglio, ponendo u 5 = 1 2 u 1 1 2 A questo punto abbiamo giá pronta la tabella relativa alla base {u 1, u 2 } del nuovo problema. Infatti sará sufficiente aggiungere alla Tabella 2 una riga relativa alla variabile u 5 come mostrato in Tabella 6. Si nota immediatamente che la base {u 1, u 2 } non é ammissibile (come deve essere perché sia tagliata la soluzione ottima del rilassamento lineare), ma l ultima riga ha valori negativi e quindi la base corrispondente del duale {x 1, x 2, u 5 } é ammissibile. Questo ci consente di utilizzare l algoritmo del simplesso duale. Applicando tale algoritmo si ottiene la Tabella 7 che é ottima. Si nota che la soluzione ottima non ha coordinate 15

u 5 u 2 x 1-1 0 1 x 2 0-1/2 3/2 u 1 2 0 1 z -1-1/2 5/2 Tabella 7: u 5 u 2 x 1-1 0 1 x 2 0-1/2 3/2 u 1 2 0 1 u 6 0 1/2-1/2 z -1-1/2 5/2 Tabella 8: tutte intere (x 2 = 3/2). Per generare un taglio di Gomory prendiamo la prima riga dall alto con un β k non intero e quindi la riga relativa alla variabile x 2. Il taglio é definito come segue: (0 0 )u 5 + ( 1 2 ) ( 1 3 u 2 2 2 ) 3 0, 2 cioé 1 2 u 2 1 2 0. Ricordando la definizione di u 2 possiamo definire questo taglio in funzione delle variabili originarie, ottenendo x 2 1. Si puó verificare che il taglio non é soddisfatto dalla soluzione ottima x 1 = 1, x 2 = 3/2 del problema appena risolto, ma é soddisfatto da tutti i punti di Z a. A questo punto l algoritmo di taglio prescrive di aggiungere il taglio ai vincoli precedenti e risolvere il problema ottenuto in questo modo. Per fare ció aggiungiamo una nuova variabile u 6 da associare al taglio, ponendo u 6 = 1 2 u 2 1 2 A questo punto abbiamo giá pronta la tabella relativa alla base {u 2, u 5 } del nuovo problema. Infatti sará sufficiente aggiungere alla Tabella 7 una riga relativa alla variabile u 6 come mostrato in Tabella 8. Si nota immediatamente che la base {u 2, u 5 } non é ammissibile (come deve essere perché sia tagliata la soluzione ottima del problema precedente), ma l ultima riga ha valori negativi e quindi la base corrispondente del duale {x 1, x 2, u 1, u 6 } é ammissibile. Questo ci 16

u 5 u 6 x 1-1 0 1 x 2 0-1 1 u 1 2 0 1 u 2 0 2 1 z -1-1 2 Tabella 9: consente di utilizzare l algoritmo del simplesso duale. Applicando tale algoritmo si ottiene la Tabella 9 che é ottima. La soluzione ha coordinate tutte intere e quindi l algoritmo si arresta restituendo come soluzione ottima x 1 = 1 e x 2 = 1 con valore ottimo pari a 1. Ci si puó chiedere se siamo stati solo fortunati oppure con i tagli di Gomory l algoritmo di taglio termina sempre in un numero finito di iterazioni. Vale la seguente osservazione. Osservazione 2 Se ad ogni iterazione il taglio di Gomory viene realizzato a partire dalla prima riga dall alto con un β k non intero, allora l algoritmo termina in un numero finito di iterazioni. 17