L ANALISI POST-OTTIMALE La soluzione ottima di un problema di programmazione lineare (variabili che costituiscono la base ottima e rispettivi valori) deriva dalla struttura del modello (variabili, vincoli, obiettivo) ed è, in particolare, determinata dai valori assegnati ai parametri (A, b, c). La variazione di uno qualsiasi dei parametri del problema può indurre variazioni nel valore, all'ottimo, delle variabili (e della funzione obiettivo) ed, eventualmente, produrre variazioni nella composizione della base. Se si vuole applicare il contenuto decisionale fornito dalla soluzione del modello, sorge, per l'imprecisione e la variabilità dei parametri del problema, la necessità di disporre di informazioni relative alla robustezza della soluzione ottima, cioè della sua capacità di resistere a variazioni dei parametri. Questo è l obiettivo dell analisi post-ottimale (o sensitivity analysis).
Le analisi normalmente utilizzate appartengono a due categorie: quelle che consentono di individuare i limiti all'interno dei quali una base si mantiene ottima allorché viene alterato uno solo tra i termini noti o uno solo tra i coefficienti di costo (analisi di stabilità) quelle che consentono di individuare la successione di basi ottime che si presenta allorché il vettore dei termini noti o quello dei coefficienti di costo divengono funzioni lineari di un parametro scalare (analisi parametrica).
L ANALISI DI STABILITÀ Oggetto dell'analisi di stabilità è l'individuazione dell'intervallo di valori all'interno del quale un singolo termine noto o un singolo coefficiente di costo può variare senza che si alteri la composizione della base ottima. La soluzione ottima di un problema p.l. presenta caratteristiche principali: Ax* b è ammissibile: x* 0 soddisfa il test di ottimalità: { c ð * A 0 L'analisi di stabilità si fonda sulla considerazione che una alterazione indotta nel vettore dei termini noti può far cadere la condizione di ammissibilità della soluzione; una alterazione nel vettore dei coefficienti di costo può far cadere il rispetto del test di ottimalità L'imposizione del mantenimento della condizione che sarebbe alterata consente di individuare
l'intervallo di stabilità della soluzione ottima. CAMPO DI VARIAZIONE DI UN TERMINE NOTO Si vuole individuare l'intervallo di valori all'interno del quale un generico termine noto b i può variare senza che, per questo, la soluzione del problema cessi di essere ottima. Si indichino con b i e b i le variazioni limite in aumento ed in diminuzione ricercate. Posto: b = b b b = b b i i i i i i l'intervallo di variazione di b i all'interno del quale la soluzione continua ad essere ottima risulta, dunque: ( b, i b i ) La procedura per individuare tale intervallo si basa sull'osservazione che variazioni sui termini noti possono far cadere l ammissibilità della soluzione ottima.
Si supponga, allo scopo, che il vettore dei termini noti b venga alterato e sia b' il nuovo vettore. Il vettore x B * delle variabili basiche corrispondente alla matrice di base ottima B*: x B * = (B*) - b per l'alterazione del vettore dei termini noti diviene: x' B = (B*) - b' La base B* rimane ottima sin quando il vettore x' B soddisfa la condizione di ammissibilità, ovvero fin quando è rispettata la condizione: x' B = (B*) - b' 0
Calcolo di b i Si indichi con x B il vettore delle variabili basiche allorché si sia posto di b i = b i b i (le variabili che costituiscono la base non variano, quello che varia è il loro valore), si ha: x B = (B*) - (b u i b i ) (*) avendo indicato con u i il vettore colonna unitario con l'unità nella posizione i esima e la (*) può essere scritta: x B = x B * (B*) - u i b i D'altro canto, il prodotto (B*) - u i fornisce la i esima colonna di (B*) -, sia essa β i, e di conseguenza: x B = x B * β i b i (**) Perché x B continui ad essere ammissibile devono essere verificate le m relazioni scalari derivanti dalla (**):
x* B,h β h,i b i 0 (h =,,...,m) (***) Le eventualità che possono verificarsi sono due: β h,i 0 (h =,,..., m). In questo caso la condizione di ammissibilità rimane verificata qualunque sia il valore di b i, in quanto il primo membro delle (***) è costituito dalla somma di due addendi positivi. Si verifica cioè che b i tende all'infinito e con esso b i. L'intervallo di stabilità è, quindi, aperto a destra. β h,i < 0, per alcuni valori di h. In tal caso il valore di b i è limitato. Da ciascuna delle relazioni (***) corrispondenti a tali valori dell indice h è possibile calcolare un valore b i al di sopra del quale la variabile basica corrispondente e, dunque, la x B, cessa di essere ammissibile. Tali valori sono forniti da: b i x B,h */( β h,i ) (β h,i < 0) b i non può superare il valore corrispondente al minimo di tali rapporti senza che le condizioni di ammissibilità vengano alterate.
Indicando con w il valore dell'indice h in corrispondenza del quale si verifica il minimo, si può scrivere: b i = x B,w */( β w,i ) = = min h [x B,h */( β h,i )] (β h,i <0) Per b i=b i b i, la x B,w * si annulla (la soluzione di base ottima diviene degenere). Se si superasse questo valore la composizione della base ottima verrebbe alterata.
Calcolo di bi Procedendo in modo del tutto analogo a quanto fatto per il calcolo di b i, applicando la condizione di ammissibilità si ricava: xb,h βh,i bi 0 (h =,,..., m) Le eventualità che possono riscontrarsi sono due: βh,i 0 (h =,,..., m). In tal caso la condizione di ammissibilità rimane in ogni caso verificata qualunque sia il valore di bi essendo il primo membro composto da una somma di termini positivi. bi tende all'infinito e con esso bi. L'intervallo di stabilità è, quindi, aperto a sinistra. βh,i > 0 per alcuni valori di h. In tal caso il valore di bi è limitato. Da ciascuna delle relazioni (9.8) relative a tali valori di h è possibile individuare un valore bi al di sopra del quale la variabile basica corrispondente e, dunque, la x B -, cessa di essere ammissibile. Tali
valori sono forniti da: bi xb,h * /βh,i (βh,i > 0) bi non può superare il valore corrispondente al minimo di tali rapporti senza che le condizioni di ammissibilità vengano alterate. Indicando con t il valore dell'indice h corrispondente a tale minimo, si può scrivere: bi = xb,t * /βt,i = = minh [xb,h * /βh,i] (βh,i > 0) Per b - i=bi bi la xb,t * si annulla (la soluzione di base ottima diviene degenere); se si andasse al di là di questo valore la composizione della base ottima verrebbe alterata.
Effetti sul valore della funzione obiettivo Le alterazioni apportate al generico termine noto bi possono indurre variazioni, sul valore all ottimo z* della funzione obiettivo. I valori di tali variazioni, corrispondenti ad alterazioni unitarie dei termini noti, sono fornite dalle componenti del vettore π* dei moltiplicatori del simplesso all ottimo (valori delle variabili duali). Si rammenti, infatti, che: il coefficiente di costo modificato c'j di una variabile non basica xj indica la variazione che z subirebbe se xj passasse da zero ad uno; ciò è vero anche per le slack (vincoli ) e per le artificiali (vincoli = ), le cui variazioni, per la natura stessa di tali variabili, equivalgono a variazioni in senso opposto dei corrispondenti termini noti; le componenti di π (cambiato di segno) coincidono con i coefficienti di costo modificati delle variabili in base nella prima tabella del simplesso (slack e/o artificiali);
dunque, la variazione che z subirebbe per un alterazione unitaria del termine noto b i, è fornita dalla componente i esima del vettore π*. ESEMPIO SULL'ANALISI DI STABILITÀ PER VARIAZIONE DI UN TERMINE NOTO Si consideri il problema di programmazione lineare: z s.a = 6.x 8x 5x 4x 3x x 3x 6x x, x Max! 90 (a) 4 (b) 00 (c) 0 di cui si riportano le successive tabelle, sino a quella ottima, ottenute effettuandone la risoluzione con l'algoritmo del simplesso standard.
x x y y y 3 -z b y 5 4 0 0 0 90 y -3 0 0 0 4 y3 3 6 0 0 0 00 -z 6. 8 0 0 0 0 x x y y y 3 -z b y 0-0 0 4 x -3/ 0 / 0 0 y 3 0 0-3 0 8 -z 8. 0 0-4 0-96 x x y y y 3 -z b y 0 0 3/4 -/ 0 49/3 x 0 0 /8 /8 0 3/ x 0 0 -/4 / 0 7/3 -z 0 0 0./4-8./ -38.3
x x y y Y 3 -z b y 0 0 4/3 -/9 0 96/9 x 0 -/6 0 5/8 0 5/9 x 0 /3 0 -/9 0 70/9 -z 0 0-0.7 0 -.6/3-49.6 Risoluzione con il simplesso standard Riordinando le righe della tabella ottima si ottiene: x x y y y 3 -z b x 0 /3 0 -/9 0 70/9 x 0 -/6 0 5/8 0 5/9 y 0 0 4/3 -/9 0 96/9 -z 0 0-0.7 0 -.6/3-49.6 Le colonne della Tabella relative alle variabili slack forniscono l'inversa della matrice costituita dalle colonne, della tabella iniziale, relative alle variabili presenti nella base ottima (x, x, y):
B* = 5 3 3 4 6 0 0 ; ( B* ) = / 3 / 6 4 / 3 0 0 / 9 5/8 / 9 Si vuole determinare l'intervallo di stabilità della soluzione ottima per variazioni del termine noto della primo vincolo. Posto: si deve verificare: b = 90 b 70 / 9 5 / 9 96 / 9 b / 3 / 6 4 / 3 0 Essendovi una sola componente negativa in β, la individuazione del valore b è immediata: 5/9 b (-/6) = 0 da cui: b = 30/3
Analogamente, per il calcolo di b, posto: b = 90 - b le relazioni di ammissibilità divengono: 70 / 9 5/ 9 96/ 9 Äb / 3 / 6 4 / 3 0 Considerando le componenti positive di β si hanno le due relazioni: 70/9 - (/3) b = 0 ; 96/9 - (4/3) b = 0 dalle quali risulta, rispettivamente : ( b )'= 70/3; ( b )''= 49/3 b è fornito, allora, dal minimo tra i due valori: b = 49/3 Dai valori di b e b risulta: b = /3 b = 500/3
Per valutare l'influenza delle variazioni di b sul valore della funzione obiettivo, si esamina la componente π* del vettore π*: π* = (0.7, 0,.6/3) Essendo π* =0.7, si ricava che una riduzione unitaria di b condurrebbe ad una riduzione del valore della funzione obiettivo pari a 0.7, così come un aumento unitario di b migliorerebbe il valore della funzione obiettivo di 0.7. In corrispondenza dei limiti di stabilità: b = 49/3 b = 30/3 si ricava: z = (-0.7) 49/3 = - 34.3/3 z = (0.7) 30/3 = 6/3
Analisi grafica. In Figura sono riportati il dominio di ammissibilità del problema posto e la direzione di gradz. Il vertice ottimo G corrisponde alla soluzione b.a. avente in base le variabili (x, x, y). x a b F D G 6 c O grad (z) 6 8 H 4 I x La variazione del termine noto di una equazione vincolare modifica il dominio delle soluzioni in quanto a tale variazione corrisponde una traslazione del vincolo. La retta (a) di equazione:
5x 4x = 90 b all'aumentare di b si allontana dall'origine. Corrispondentemente il vertice ottimo G si sposta lungo il segmento GI giungendo in I per b = 30/3. Per b = 90 30/3 (Figura 9.; retta a ), la soluzione diviene degenere (x = 0). x D b F G b b 6 grad (z) a a a O 6 8 4 I c x Per b > 30/3 l'intersezione tra la retta (a) e la retta (c) passa nel II quadrante. Per la presenza dei vincoli di fisica realizzabilità il vincolo (a)
diviene sovrabbondante. La base ottima diviene (x, y, y). In modo del tutto analogo si vede che la retta (a) di equazione: 5x 4x = 90 - b all'aumentare di b si sposta verso l'origine. Il vertice ottimo scorre, corrispondentemente, lungo il segmento GF. Per b = 49/3 si ha y = 0 corrispondente alla coincidenza tra i vertici G ed F. Per b > 49/3 il vincolo (c) diviene sovrabbondante. La base ottima diviene (x, x, y3).
INTRODUZIONE DI NUOVE VARIABILI IN UN PROBLEMA DI PROGRAMMAZIONE LINEARE Si consideri il problema di programmazione lineare: z s.a = 5x 4x 6x x 3x x x, x 9 0 Max! (a) (b) di cui si riporta, la tabella finale dell algoritmo del simplesso: x x y y -z B x 0 4/7 /7 0 0 x 0-3/7 /7 0 8 -z 0 0-9/7 -/7-60 Tabella ottima e si supponga di voler introdurre in esso una nuova variabile, x 3, che dia luogo al seguente problema:
z = s.a 5x 4x 6x x 3x x x, x 8x 3 x x 0 3 3 Max! 9 (a) (b) Per valutare l effetto della introduzione della nuova variabile, si calcoli, utilizzando il vettore π* = [9/7, /7] il valore del coefficiente di costo modificato c 3 : c 3 = c 3 - π* p 3 =8-[9/7, /7] = = 8 9/7 /7=8 3/7= 5/7 Dunque, la variabile x 3 è candidata ad entrare in base ed è, quindi, in grado di cambiare la soluzione ottima trovata. Si calcola, allora, la colonna p 3 modificata rispetto alla base ottima:
4/7 /7 p 3 = B - p 3 = 3/7 /7 6/7 = /7 e la si introduce nella tabella finale già disponibile: x x X 3 y y -z b x 0 6/7 4/7 /7 0 0 x 0 -/7-3/7 /7 0 8 -z 0 0 5/7-9/7 -/7-60 L elemento pivot è a,3. L operazione pivot intorno a tale perno fornisce: x x x3 y y -z b X3 0 7/6 /3 /6 0 70/3 X /6 0 -/3 /6 0 34/3 -z 0-5/4 0 -/ -4/4 40/ La soluzione ottima è: x = 34/3; x 3 = 70/3; z= 40/