Analisi di sensitività¶
Parte 4 · Metodi matriciali, sensitività e geometria · Capitolo 14 · Dispensa, volume 4 (PDF) · Esercizi: Analisi di sensitività · App: Analisi di sensitività
14.1 Basi ottime e le loro due condizioni¶
-
I dati di un problema LP sono raramente noti con esattezza: le componenti del vettore dei costi \({\boldsymbol c}\) e del vettore dei termini noti \({\boldsymbol b}\) sono stime, e possono cambiare dopo che il problema LP è stato risolto. L'analisi di sensitività studia come cambiano una soluzione ottima e il valore ottimo quando cambiano i dati.
-
Consideriamo un problema LP in forma standard di massimo con \(n+m\) variabili non negative e \(m\) vincoli lineari di uguaglianza, ottenuto da un problema LP in forma canonica di massimo aggiungendo \(m\) variabili di scarto:
\[\begin{align*} && \max \;\;{\boldsymbol c}' \, {\boldsymbol x} \label{SENS_FORM_STANDARD_OBJ} \tag{14.1a}\\[2ex] && \text{soggetto a} \quad {\boldsymbol A} \; {\boldsymbol x} &= {\boldsymbol b}, & \phantom{j=1111} \label{SENS_FORM_STANDARD_CONS1} \tag{14.1b}\\[2ex] && {\boldsymbol x} &\ge {\boldsymbol 0}. \label{SENS_FORM_STANDARD_CONS2} \tag{14.1c} \end{align*}\]
Definizione 14.1: base ottima
Una base \({\boldsymbol A}_{\pazocal{B}}\) del problema LP (14.1) si chiama base ottima se soddisfa le due condizioni seguenti, e allora la sua soluzione di base ammissibile è una soluzione ottima:
-
ammissibilità primale: \(~\bar{\boldsymbol b} = {\boldsymbol A}_{\pazocal{B}}^{-1} \, {\boldsymbol b} \ge {\boldsymbol 0}\);
-
ammissibilità duale: \(~{{ \bar{\boldsymbol c}}'} = {\boldsymbol c}'_{\pazocal{N}} - {\boldsymbol \pi} \;{\boldsymbol A}_{\pazocal{N}} \le {\boldsymbol 0}\), dove \({\boldsymbol \pi} = {\boldsymbol c}'_{\pazocal{B}} \; {\boldsymbol A}_{\pazocal{B}}^{-1}\).
Le due condizioni sono sufficienti per l'ottimalità; in presenza di degenerazione, una soluzione di base ammissibile ottima può essere associata anche a una base che non è duale ammissibile. Una variazione dei dati preserva l'ottimalità della base finché entrambe le condizioni continuano a valere.
-
Le due condizioni coinvolgono i dati in due modi diversi:
-
il vettore dei termini noti \({\boldsymbol b}\) compare solo nella condizione di ammissibilità primale;
-
il vettore dei costi \({\boldsymbol c}\) compare solo nella condizione di ammissibilità duale.
Di conseguenza, una variazione di \({\boldsymbol b}\) può distruggere solo l'ammissibilità primale della base, e una variazione di \({\boldsymbol c}\) può distruggere solo la sua ammissibilità duale.
-
Esempio 14.1: base ottima
Consideriamo il seguente problema LP in forma canonica di massimo con \(n=2\) variabili non negative e \(m=3\) vincoli lineari di minore o uguale:
La sua forma standard di massimo ha \(n+m=5\) variabili non negative, e la base ottima determinata dall'algoritmo del simplesso è
Il dizionario associato è:
e abbiamo:
Una soluzione ottima è \(\tilde{\boldsymbol x}(\, LP \,) = \begin{pmatrix} 5 \\[0.5ex] \frac{7}{2} \end{pmatrix}\) e il valore ottimo è \(z(\, LP \,) = 32\).
14.2 Variazioni del vettore dei costi¶
- Sostituiamo una componente \(c_k\) del vettore dei costi con \(c_k + \delta\), dove \(\delta \in \R\), e cerchiamo i valori di \(\delta\) per cui la base ottima resta ottima. Poiché \({\boldsymbol b}\) non cambia, la condizione di ammissibilità primale continua a valere, e va verificata solo la condizione di ammissibilità duale.
14.2.1 Coefficiente di costo di una variabile fuori base¶
Se \(k \in \pazocal{N}\), allora \({\boldsymbol c}_{\pazocal{B}}\) non cambia, e quindi neanche \({\boldsymbol \pi}\). Cambia solo il costo ridotto di \(x_k\):
e la base ottima resta ottima se e solo se
- La soluzione ottima e il valore ottimo non cambiano per questi valori di \(\delta\): il dizionario è lo stesso, tranne un costo ridotto.
14.2.2 Coefficiente di costo di una variabile in base¶
Se \(k \in \pazocal{B}\), allora \({\boldsymbol c}_{\pazocal{B}}\) cambia, e quindi cambiano tutti i costi ridotti. Indicando con \(\bar{a}_{kj}\) l'elemento della matrice \(\bar{\boldsymbol A}\) nella riga di \(x_k\) e nella colonna di \(x_j\), abbiamo
e la base ottima resta ottima se e solo se \(\bar{c}_j - \delta \, \bar{a}_{kj} \le 0\) per ogni \(j \in \pazocal{N}\), cioè se e solo se
-
La soluzione ottima non cambia per questi valori di \(\delta\), perché \(\bar{\boldsymbol b}\) resta invariato, ma il valore ottimo diventa
\[ z(\, LP \,) + \delta \; \tilde{x}_k . \]
Esempio 14.2: variazioni del vettore dei costi
Consideriamo la base ottima dell'Esempio 14.1, con \(\pazocal{N}= \{4,~~5\}\), \(\bar{c}_4 = -2\), \(\bar{c}_5 = -1\) e
Coefficiente della variabile in base \(x_1\). Sostituiamo \(c_1 = 5\) con \(5 + \delta\). La riga di \(x_1\) in \(\bar{\boldsymbol A}\) è \(\left(\frac{1}{4}~~\frac{1}{4}\right)\), i cui due elementi sono entrambi positivi, quindi entrambi danno un lower bound su \(\delta\):
e non c'è alcun upper bound, perché nessun elemento della riga è negativo. Di conseguenza,
Coefficiente della variabile in base \(x_2\). Sostituiamo \(c_2 = 2\) con \(2 + \delta\). La riga di \(x_2\) in \(\bar{\boldsymbol A}\) è \(\left(\frac{3}{8}~~-\frac{1}{8}\right)\), con un elemento positivo, che dà un lower bound, e un elemento negativo, che dà un upper bound:
cioè
Per ogni valore di \(c_2\) in questo intervallo, la soluzione ottima resta \(\tilde{\boldsymbol x}(\, LP \,) = \begin{pmatrix} 5 \\[0.5ex] \frac{7}{2} \end{pmatrix}\), mentre il valore ottimo diventa \(32 + \delta \cdot \frac{7}{2}\).
Gli insiemi di livello della funzione obiettivo ruotano al variare di \(c_2\), mentre la soluzione ottima resta il vertice \(\begin{pmatrix} 5 \\[0.3ex] \frac{7}{2} \end{pmatrix}\). I due estremi dell'intervallo hanno un preciso significato geometrico: sono i valori di \(c_2\) per cui gli insiemi di livello diventano paralleli a uno dei due spigoli che si incontrano in quel vertice. Per \(c_2 = 10\) sono paralleli allo spigolo su \(x_1 + 2x_2 = 12\), disegnato in blu, e per \(c_2 = -\frac{10}{3}\) sono paralleli allo spigolo su \(3x_1 - 2x_2 = 8\), disegnato in verde. Oltre questi valori la soluzione ottima si sposta in un vertice adiacente.
14.3 Variazioni del vettore dei termini noti¶
- Sostituiamo una componente \(b_k\) del vettore dei termini noti con \(b_k + \delta\), dove \(\delta \in \R\). Poiché \({\boldsymbol c}\) non cambia, la condizione di ammissibilità duale continua a valere, e va verificata solo la condizione di ammissibilità primale.
I valori delle variabili in base diventano
dove \({\boldsymbol A}_{\pazocal{B}}^{-1} \, {\boldsymbol e}_k\) è la \(k\)-esima colonna della matrice \({\boldsymbol A}_{\pazocal{B}}^{-1}\), i cui elementi indichiamo con \(\beta_{ik}\). La base ottima resta ottima se e solo se
Definizione 14.2: prezzi ombra
Data una base ottima \({\boldsymbol A}_{\pazocal{B}}\) del problema LP (14.1), le componenti del vettore riga
si chiamano prezzi ombra degli \(m\) vincoli lineari.
Finché la base ottima resta ottima, il valore ottimo varia linearmente con \(\delta\):
Il prezzo ombra \(\pi_k\) è quindi il valore marginale del \(k\)-esimo vincolo: misura l'aumento del valore ottimo per ogni aumento unitario di \(b_k\).
-
Per il teorema della dualità forte, il vettore \({\boldsymbol \pi}\) dei prezzi ombra è una soluzione ottima del problema duale, e quindi
\[ z(\, LP \,) = {\boldsymbol \pi} \; {\boldsymbol b} = \sum_{i=1}^m \pi_i \; b_i . \] -
Se il \(k\)-esimo vincolo non è attivo nella soluzione ottima, cioè se la sua variabile è in base con valore strettamente positivo, allora \(\pi_k = 0\): una piccola variazione di \(b_k\) non cambia il valore ottimo.
Esempio 14.3: variazioni del vettore dei termini noti
Consideriamo la base ottima dell'Esempio 14.1, con \(\bar{\boldsymbol b} = \left(5~~\frac{7}{2}~~\frac{13}{2}\right)'\) e \({\boldsymbol \pi} = (0~~2~~1)\).
Primo vincolo. Il suo prezzo ombra è \(\pi_1 = 0\), perché la sua variabile di scarto \(x_3\) è in base con valore \(\frac{13}{2} > 0\): il primo vincolo non è attivo nella soluzione ottima, e una piccola variazione di \(b_1\) non cambia il valore ottimo. La prima colonna di \({\boldsymbol A}_{\pazocal{B}}^{-1}\) è \((0~~0~~1)'\), quindi cambia solo il valore di \(x_3\), e si ottiene
Secondo vincolo. Il suo prezzo ombra è \(\pi_2 = 2\). La seconda colonna di \({\boldsymbol A}_{\pazocal{B}}^{-1}\) è \(\left(\frac{1}{4}~~\frac{3}{8}~~-\frac{7}{8}\right)'\), quindi
cioè
Per ogni valore di \(b_2\) in questo intervallo, il valore ottimo è
Per esempio, con \(b_2 = 13\) abbiamo \(\delta = 1\) e il valore ottimo diventa \(34\); con \(b_2 = 11\) abbiamo \(\delta = -1\) e il valore ottimo diventa \(30\).
Terzo vincolo. Il suo prezzo ombra è \(\pi_3 = 1\), e la sua colonna è \(\left(\frac{1}{4}~~-\frac{1}{8}~~\frac{5}{8}\right)'\), che dà
Aumentando \(b_2\) da \(12\) a \(13\), il secondo vincolo trasla verso l'esterno, la soluzione ottima si sposta da \(\begin{pmatrix} 5 \\[0.3ex] \frac{7}{2} \end{pmatrix}\) a \(\begin{pmatrix} \frac{21}{4} \\[0.3ex] \frac{31}{8} \end{pmatrix}\) e il valore ottimo aumenta di \(\pi_2 = 2\).
14.4 Aggiunta di una nuova variabile¶
- Aggiungiamo una variabile non negativa \(x_{\star}\) al problema LP (14.1), con coefficiente di costo \(c_{\star}\) e colonna \({\boldsymbol A}_{\star} \in \R^{m}\). La base ottima del problema LP originale è ancora una base di quello nuovo, ed è ancora primale ammissibile, perché né \({\boldsymbol A}_{\pazocal{B}}\) né \({\boldsymbol b}\) sono cambiati.
La nuova variabile \(x_{\star}\) è fuori base, e il suo costo ridotto è
-
Se \(\bar{c}_{\star} \le 0\), allora la base è ancora duale ammissibile e la soluzione ottima non cambia: la nuova variabile assume il valore \(\tilde{x}_{\star} = 0\).
-
Se \(\bar{c}_{\star} > 0\), allora la base non è più duale ammissibile: l'algoritmo del simplesso riparte da essa, con \(x_{\star}\) come prima colonna pivot.
Esempio 14.4: aggiunta di una nuova variabile
Consideriamo il problema LP dell'Esempio 14.1 e aggiungiamo una nuova variabile non negativa \(x_{\star}\) con coefficiente di costo \(c_{\star} = 4\) e colonna \({\boldsymbol A}_{\star} = (1~~1~~1)'\), cioè il problema LP diventa:
Il costo ridotto della nuova variabile è
quindi la base \(\pazocal{B}= \{1,~~2,~~3\}\) non è più duale ammissibile: conviene produrre la nuova variabile.
Facciamo ripartire l'algoritmo del simplesso da questa base, con \(x_{\star}\) come colonna pivot. La sua colonna nel dizionario è
e il test dei rapporti dà
realizzato dalla variabile in base \(x_3\), che esce dalla base. Dopo questa sola operazione di pivot tutti i costi ridotti diventano non positivi, e la nuova soluzione ottima è
con valore ottimo
14.5 Aggiunta di un nuovo vincolo¶
-
Aggiungiamo un vincolo lineare
\[ \sum_{j=1}^{n+m} a_{\star j} \; x_j \le b_{\star} \]al problema LP (14.1), insieme alla sua variabile di scarto \(x_{n+m+1} \ge 0\). La base ottima del problema LP originale, estesa con \(x_{n+m+1}\), è una base del nuovo problema LP.
La base estesa è ancora duale ammissibile, perché i costi ridotti non cambiano e il costo ridotto della nuova variabile di scarto è \(0\). La sua ammissibilità primale, invece, dipende dalla soluzione ottima \(\tilde{\boldsymbol x}(\, LP \,)\) del problema LP originale:
-
se \(\tilde{\boldsymbol x}(\, LP \,)\) soddisfa il nuovo vincolo, allora la base resta ottima e la soluzione ottima non cambia;
-
se \(\tilde{\boldsymbol x}(\, LP \,)\) viola il nuovo vincolo, allora la nuova variabile di scarto assume un valore negativo e l'algoritmo del simplesso duale riparte dalla base estesa, con \(x_{n+m+1}\) come prima riga pivot.
Esempio 14.5: aggiunta di un nuovo vincolo
Consideriamo il problema LP dell'Esempio 14.1 e aggiungiamo il nuovo vincolo lineare
con la sua variabile di scarto \(x_6\). La soluzione ottima del problema LP originale lo viola, perché
e quindi il valore della nuova variabile di scarto è
La base estesa \(\pazocal{B}= \{1,~~2,~~3,~~6\}\) è duale ammissibile, perché i costi ridotti sono ancora \(\bar{c}_4 = -2\) e \(\bar{c}_5 = -1\), ma non è primale ammissibile. Applichiamo l'algoritmo del simplesso duale, con \(x_6\) come riga pivot. La riga di \(x_6\) nel dizionario si ottiene sostituendo le equazioni di \(x_1\) e \(x_2\) nel nuovo vincolo:
cioè \(\bar{a}_{64} = - \, \frac{5}{8}\) e \(\bar{a}_{65} = - \, \frac{1}{8}\). Il test dei rapporti dà
quindi la colonna pivot è \(x_4\). Dopo questa sola operazione di pivot duale la base diventa primale ammissibile, e la nuova soluzione ottima è
In viola la soluzione ottima del problema LP originale, che viola il nuovo vincolo, e in blu la soluzione ottima del nuovo problema LP, raggiunta con una sola operazione di pivot duale.
14.6 Riepilogo¶
Data una base ottima \({\boldsymbol A}_{\pazocal{B}}\) di un problema LP, una variazione dei suoi dati si gestisce come segue:
| variazione | condizione da verificare | come ripartire |
|---|---|---|
| \(c_k\) con \(k \in \pazocal{N}\) | ammissibilità duale | algoritmo del simplesso |
| \(c_k\) con \(k \in \pazocal{B}\) | ammissibilità duale | algoritmo del simplesso |
| \(b_k\) | ammissibilità primale | algoritmo del simplesso duale |
| nuova variabile \(x_{\star}\) | ammissibilità duale | algoritmo del simplesso |
| nuovo vincolo | ammissibilità primale | algoritmo del simplesso duale |
In tutti i casi la precedente base ottima viene usata come avvio a caldo: i due algoritmi ripartono da essa, e di solito poche operazioni di pivot bastano a ripristinare l'ottimalità.
Esercizi su questo capitolo: Analisi di sensitività
Laboratorio interattivo¶
Le idee del capitolo, da toccare con mano: muovi i cursori e trascina i punti. Ogni app si apre anche a tutta pagina nel laboratorio interattivo: Analisi di sensitività.