Esercizi di Programmazione Lineare 1 grafica Si consideri il seguente problema di programmazione lineare: max 3x 1 + 2x 2 s.t. + 2x 1 + x 2 4 2x 1 + x 2 2 + x 1 x 2 1 x 1, x 2 0 a) Risolvere il problema per via grafica. Specificare il valore delle variabili (la soluzione), e il valore della funzione obiettivo dato dalla soluzione ottima. b) Determinare le soluzioni di base associate a tutti i vertici del poliedro delle soluzioni ammissibili. c) Indicare la successione delle basi visitate dall algoritmo del simplesso a partire dall origine. d) Verificare geometricamente che il gradiente della funzione obiettivo può essere espresso come combinazione lineare non negativa dei gradienti dei vincoli attivi solo nel vertice ottimo. Trovare il valore di tale combinazione lineare. e) Determinare per quali valori del termine noto del primo vincolo, la base ottima non cambia. f) Per quali valori del primo coefficiente della funzione obiettivo esistono multiple soluzioni ottime? Illustrare i procedimenti utilizzati. a) La regione delle soluzioni ammissibili è data dal poliedro risultante dall intersezione dei semipiani individuati dai 5 vincoli del problema (contando anche i due vincoli di segno). Il poliedro ha 5 vertici, ovvero l origine (0,0) e i quattro punti A, B, C, e D corrispondenti all intersezione di ciascuna coppia di vincoli. La soluzione ottima si ha nel punto B, in quanto il gradiente c = (3, 2) può essere espresso come combinazione lineare non negativa dei due vincoli attivi in B, ovvero il primo e il secondo vincolo, come mostrato nella Figura 1. Per ricavare il valore di x B basta quindi risolvere il sistema dato dal primo e dal secondo vincolo, ovvero: { +2x1 + x 2 = 4 2x 1 + x 2 = 2 La soluzione di questo sistema da il vettore (x 1, x 2) = ( 1 2, 3). La soluzione ottima del problema di programmazione lineare dato è quindi il vettore x B = (x 1, x 2) = ( 1 2, 3), e il valore ottimo della funzione obiettivo valutata in x B è pari a 7.5. Si può facilmente verificare che in tutti gli altri vertici del poliedro, la funzione obiettivo ha un valore strettamente inferiore a 7.5. b) Si ricordi che ad ogni vertice corrisponde (almeno) una soluzione di base ammissibile. Per il problema dato, le basi corrispondo ai cinque vertici del poliedro sono: x O = (0, 0), x A = (0, 2), x B = ( 1 2, 3), x C = ( 5 3, 2 3 ), x D = (1, 0). 1
3 B 2.5 A 2 c A 1 A 2 1.5 1 C 0.5 0 0.5 1 D 1.5 2 2.5 3 3.5 Figure 1: grafica Esercizio (1). c) Si ricordi che l algoritmo del simplesso si basa sull idea di enumerare in maniera implicita i vertici del poliedro delle soluzioni ammissibili, seguendo una direzione di crescita ammissibile per i vincoli del problema. L enumerazione si basa sull idea di visitare una successione di basi adiacenti. Partendo dall origine, ci sono due possibilità per arrivare al punto ottimo B: O A B, oppure O D C B. d) Per dimostrare che il punto B è il punto di ottimo, si può far vedere che esistono due moltiplicatori non negativi µ 1 0 e µ 2 0 che moltiplicati per i due vincoli attivi in B danno un vettore parallelo al gradiente della funzione di costo c. Ovvero, prima calcoliamo la combinazione lineare non negativa: µ 1 (+2x 1 + x 2 ) µ 1 4 µ 2 ( 2x 1 + x 2 ) µ 2 2 (2µ 1 2µ 2 )x 1 + (µ 1 + µ 2 )x 2 4µ 1 + 2µ 2 in cui vorremo avere: { (2µ1 2µ 2 ) = 3 (c 1 ) (µ 1 + µ 2 ) = 2 (c 2 ) che ammette come soluzione ( µ 1, µ 2 ) = ( 7 4, 1 4 ). Poichè abbiamo µ 1 0 e µ 2 0, abbiamo trovato una combinazione lineare non negativa di due vincoli attivi che ha il gradiente uguale a c: (2 µ 1 2 µ 2 )x 1 + ( µ 1 + µ 2 )x 2 = 3x 1 + 2x 2 4 7 4 + 21 4 = 7 + 1 2 = 7.5 Si osservi che il r.h.s. del vincolo trovato è proprio pari al valore ottimo del problema dato. 2 Soluzioni di basi e soluzione ottima Dato il poliedro P = {x R 2 : Ax b} e un suo vertice x, come in Figura 2, si risponda alle seguenti domande: a) Quante sono le soluzioni di base associate al punto x? 2
A 1 x c P A 4 A 3 A 2 Figure 2: Molteplici soluzioni di base per lo stesso verice. b) [facoltativo] Quali tra le soluzioni di base ammissibili sono ottime? Quante sono esprimibili come combinazione lineare non negativa dei vincoli attivi? a) Le soluzioni di base ottime associate a x sono 6, una per ogni combinazione di vincoli attivi nel punto dato. Poichè x P, sono tutte soluzioni di base ammissibili. b) Tutte le soluzioni di base ammissibili che danno x sono ottime, ma non tutte possono essere rappresentate come combinazione lineare non negative di vincoli attivi, ovvero esiste µ 0 tale per cui µa B = c, dove A B è la matrice indotta dalla base B. Per esempio, non esiste nessuna combinazione lineare non negativa per la base {1, 2} che dia il gradiente c, mentre esiste per la base {2, 4}. Lo si può verificare disegnando i rispettivi gradienti e confrontandoli con il gradiente di c riportato in figura. 3 Direzione di crescita e passo di spostamento Si consideri il seguente problema di programmazione lineare: Data la soluzione x = ( x 1, x 2 ) = ( 2, 2): a) Individuare l insieme dei vincoli attivi. b) Il punto x è una soluzione di base? max x 1 + 4x 2 s.t. x 1 x 2 4 x 1 3 2x 1 3x 2 12 2x 1 + x 2 2 c) Scrivere il problema ristretto e il problema duale ristretto riferiti a x e darne una rappresentazione geometrica. d) Costruire una direzione di crescita ammissibile. e) Trovare il massimo passo di spostamento lungo la direzione trovata. f) Trovare una soluzione duale ammissibile. Illustrare i procedimenti utilizzati. 3
7.5 5 2.5-7.5-5 -2.5 0 2.5 5 7.5-2.5 Figure 3: grafica Esercizio (3). a) Nel punto x dato i vincoli attivi sono il primo e il quarto, in quanto sono i due vincoli soddisfatti all uguaglianza. Si veda la Figura 3. b) Il punto dato è una soluzione di base, in quanto la matrice data dai vincoli attivi I( x) = {1, 4} ha rango pieno (pari a due in questo caso). Tale matrice è la matrice di base corrispondente al vertice del poliedro x: ( ) 1 1 A I = 2 1 c) Per scrivere i problemi primale ristretto e duale ristretto, dobbiamo considerare la matrice data dai vincoli attivi I( x) = {1, 4}, denominanta A I. Si ricorda che il primale ristretto serve per trovare una direzione di crescita ξ = (ξ 1, ξ 2 ), e il duale ristretto, definito sulle variabili µ = (µ 1, µ 2 ), serve per verificare l ottimalità del punto trovato. I due problemi sono dati in Figura 4. d) Si ricorda che se il duale ristretto ammette una soluzione ammissibile, allora il valore ottimo vale 0, sia per il duale ristretto che per il primale ristretto, e quindi il punto x considerato è ottimo. Se tuttavia il sistema µ A I = c ammette soluzione, ma una delle variabili duali µ h è negativa (e quindi non si ha una soluzione ammissibile a causa dei vincoli di segno), allora si può usare tale variabile negativa per cercare una direzione di crescita (si vedano le dispense del corso per i dettagli). In questo caso, il problema (D ) ha soluzione µ = ( 7 3, 5 3 ). Consideriamo la prima componente della soluzione del duale ristretto in quanto negativa, e e costruiamo il vettore u h, che è un vettore di tutti 0, tranne alla 4
(P ) max c ξ A I ξ 0 (P ) max ξ 1 + 4ξ 2 ξ 1 ξ 2 0 2ξ 1 + ξ 2 0 µa I = c µ 0 µ 1 2µ 2 = 1 µ 1 + µ 2 = 4 µ 1, µ 2 0 Figure 4: Coppia di problemi primale e duale ristretto per l esercizio (3). posizione h in cui contiene un 1. In questo caso u h = (1, 0). Per trovare la direzione di crescita risolviamo il sistema A I ξ = u h : { µ1 µ 2 = 1 2µ 1 + µ 2 = 0 Che ha soluzione pari a ξ = ( 1 3, 2 3 ); questa è la direzione di crescita cercata. e) La crescita lunga la direzione trovata viene limitata dai vincoli non attivi Ī( x) = {2, 3} nel punto considerato x. Per ogni vincolo non attivo che si potrebbe violare spostandosi in quella direzione, ossia tale per cui A I ξ > 0, deve valere la condizione λ b A I x A I ξ. Per il secondo vincolo si ha (1, 0) (1/3, 2/3) T = 1/3 > 0, quindi deve valere: λ 3 (1, 0) ( 2, 2)T 1/3 = 15 Per il terzo vincolo si ha (2, 3) T (1/3, 2/3) < 0, e quindi non limita λ. Il passo di spostamento è quindi pare a 15. f) Il nuovo punto che si ottiene con la direzione di crescita e il passo di spostamento trovati ai punti precedenti è: x = x + λξ = ( 2, 2) + 15(1/3, 2/3) = (3, 8) Per trovare una soluzione duale ammissibile possiamo usare le equazioni degli scarti complementari, che scriviamo sotto senza riportare il problema duale (si considerino y 1,..., y 4 come le variabili duali dei quattro vincoli del problema primale): y 1 (4 + x 1 + x 2 ) = 0 (1) y 2 (3 x 2 ) = 0 (2) y 3 (12 2x 1 + 3x 2 ) = 0 (3) y 4 (2 + 2x 1 x 2 ) = 0 (4) x 1 ( 1 + y 1 y 2 2y 3 + 2y 4 ) = 0 (5) x 2 (4 + y 1 + 3y 3 y 4 ) = 0 (6) I vincoli (1) e (3) per essere soddisfatti devono dare y 1 = y 3 = 0. Per soddisfare i vincoli (5) e (6) dobbiamo avere: { 1 + y1 y 2 2y 3 + 2y 4 = 1 y 2 + 2y 4 = 0 4 + y 1 + 3y 3 y 4 = 4 y 4 = 0 e quindi y 2 = 7 e y 4 = 4. Poiché tutte le variabili duali sono non negative abbiamo trovato una coppia primale-duale di soluzioni ottime. La soluzione ottima duale è pari a ȳ = (0, 7, 0, 4). 5
7.5 5 2.5-7.5-5 -2.5 0 2.5 5 7.5 10-2.5 Figure 5: grafica Esercizio (4). 4 Direzione di crescita e passo di spostamento Si consideri il seguente problema di programmazione lineare: Data la soluzione x = ( x 1, x 2 ) = (0, 7): a) Individuare l insieme dei vincoli attivi. b) Il punto x è una soluzione di base? max 3x 1 + x 2 s.t. x 1 + x 2 7 x 2 2 2x 1 3x 2 6 7x 1 + 3x 2 21 c) Scrivere il problema ristretto e il problema duale ristretto riferiti a x e darne una rappresentazione geometrica. d) Costruire una direzione di crescita ammissibile. e) Trovare il massimo passo di spostamento lungo la direzione trovata. f) Trovare una soluzione duale ammissibile. Illustrare i procedimenti utilizzati. a) Nel punto x dato i vincoli attivi sono il primo e il quarto, in quanto sono i due vincoli soddisfatti all uguaglianza. Si veda la Figura (5). b) Il punto è una soluzione di base, in quanto la matrice data dai vincoli attivi I( x) = {1, 4} ha rango pieno (pari a due in questo caso). Tale matrice è la matrice di base corrispondente al vertice del poliedro x: ( ) 1 1 A I = 7 3 6
(P ) max c ξ A I ξ 0 (P ) max 3ξ 1 + ξ 2 ξ 1 + ξ 2 0 7ξ 1 + 3ξ 2 0 µa I = c µ 0 µ 1 7µ 2 = 3 µ 1 + 3µ 2 = 1 µ 1, µ 2 0 Figure 6: Coppia di problemi primale e duale per l esercizio (4). c) I due problemi sono dati in Figura 6. d) Il problema (D ) ha soluzione µ = ( 8 5, 1 5 ). Costruiamo il vettore u h considerando la sola compenente negativa: u h = (0, 1). Per trovare la direzione di crescita risolviamo il sistema A I ξ = u h : { ξ1 ξ 2 = 1 2ξ 1 + ξ 2 = 0 Che ha soluzione pari a ξ = ( 1 10, 1 10 ); questa è la direzione di crescita cercata. e) La crescita lunga la direzione trovata viene limitata dai vincoli non attivi Ī( x) = {2, 3} nel punto considerato x. Per ogni vincolo non attivo che si potrebbe violare spostandosi in quella direzione, ossia tale per cui A I ξ > 0, deve valere la condizione λ b A I x A I ξ. Per il secondo vincolo si ha (0, 1) (1/10, 1/10) T = 1/10 > 0, quindi deve valere: λ 2 (0, 1) (0, 7)T 1/10 = 90 Per il terzo vincolo si ha (2, 3)(1/3, 2/3) T = 1/10 > 0, e quindi deve valere: λ 6 ( 2, 3) (0, 7)T 1/10 = 270 Il passo di spostamento λ è pari al minimo dei due valori, ovvero è uguale a 90. f) Il nuovo punto che si ottiene con la direzione di crescita e il passo di spostamento trovati ai punti precedenti è: x = x + λξ = (0, 7) + 90(1/10, 1/10) = (9, 2) Per trovare una soluzione duale ammissibile si usano gli scarti complementari come nell esercizio precedente. La soluzione ottima duale è pari a ȳ = (3, 2, 0, 0). 7