<marco />
← Tutti gli articoli
11 min di lettura

Analisi di sensitività: cosa succede se i dati cambiano

ottimizzazione

Trovato l'ottimo, arrivano le domande: e se avessimo un'ora di lavoro in più? E se il prezzo di un prodotto salisse? Conviene lanciare un prodotto nuovo? L'analisi di sensitività (o di post-ottimalità) risponde senza rifare il simplesso da capo: usa il tableau finale per capire fino a dove la soluzione ottima resta valida e cosa succede quando smette di esserlo.

L'esempio: le vernici

Un colorificio produce quattro vernici, V1–V4, e vuole massimizzare il profitto settimanale. Ogni ettolitro richiede ore di lavoro in due reparti:

V1 V2 V3 V4 Ore disponibili
Miscelazione (h/hl) 2 1 1 1 100
Confezionamento (h/hl) 1 1 2 3 150
Profitto (€/hl) 35 40 70 80

In forma matriciale, con x=(x1,x2,x3,x4)x = (x_1, x_2, x_3, x_4) gli ettolitri prodotti a settimana:

max⁡ ω=p⊤xA x≤b,x≥0\max \ \omega = p^\top x \qquad A\,x \le b, \quad x \ge 0 A=[21111123]b=[100150]A = \begin{bmatrix} 2 & 1 & 1 & 1 \\ 1 & 1 & 2 & 3 \end{bmatrix} \qquad b = \begin{bmatrix} 100 \\ 150 \end{bmatrix} p⊤=(35, 40, 70, 80)p^\top = (35,\ 40,\ 70,\ 80)

Il simplesso trova l'ottimo: produrre 50 hl di V2 e 50 hl di V3, nient'altro, per un profitto di 5.500 € a settimana. Le ore di entrambi i reparti sono usate tutte (s1=s2=0s_1 = s_2 = 0). Il tableau finale contiene tutto quello che serve:

x1x_1 x2x_2 x3x_3 x4x_4 s1s_1 s2s_2 termine noto
riga di x2x_2 3 1 0 −1 2 −1 50
riga di x3x_3 −1 0 1 2 −1 1 50
obiettivo −15 0 0 −20 −10 −30 −5.500

Nelle colonne degli scarti si legge l'inversa della base (come spiegato nel simplesso con le matrici):

B−1=[2−1−11]B^{-1} = \begin{bmatrix} 2 & -1 \\ -1 & 1 \end{bmatrix}

Tre formule bastano

Tutta l'analisi si basa sulle tre relazioni che legano la soluzione ai dati, dove c=−pc = -p perché il simplesso lavora sul problema di minimo:

wB=B−1brN⊤=cB⊤B−1N−cN⊤φ=cB⊤B−1b\begin{aligned} w_B &= B^{-1} b \\ r_N^\top &= c_B^\top B^{-1} N - c_N^\top \\ \varphi &= c_B^\top B^{-1} b \end{aligned}

Quando un dato cambia, cambiano queste quantità. La base resta quella ottima finché valgono due condizioni:

  • ammissibilità: i valori delle variabili di base restano wB≥0w_B \ge 0;
  • ottimalità: i costi ridotti delle variabili non di base restano rN≤0r_N \le 0.

Quanto vale un'ora in più: i prezzi ombra

Se il reparto miscelazione avesse 101 ore invece di 100, il profitto crescerebbe di 10 €. Il numero si legge nel tableau: è il costo ridotto dello scarto s1s_1, cambiato di segno. Allo stesso modo un'ora in più di confezionamento vale 30 €.

Sono i prezzi ombra (o valori interni) delle risorse: quanto rende un'unità in più di ciascuna. Coincidono con la soluzione del problema duale. Il confezionamento è la risorsa più preziosa: se si può comprare un'ora di lavoro in più, conviene metterla lì.

Fino a dove vale: i termini noti

Il prezzo ombra vale solo finché la base ottima non cambia. Se le ore di miscelazione diventano 100+δ100 + \delta, cambiano i valori delle variabili di base:

wB=B−1(b+e1 δ)=[50+2δ50−δ]w_B = B^{-1}(b + e_1\,\delta) = \begin{bmatrix} 50 + 2\delta \\ 50 - \delta \end{bmatrix}

Perché restino non negativi serve −25≤δ≤50-25 \le \delta \le 50, cioè ore di miscelazione tra 75 e 150. In tutto questo intervallo conviene ancora produrre solo V2 e V3, ogni ora vale 10 € e il profitto va da 5.250 a 6.000 €. Fuori dall'intervallo una delle due variabili diventerebbe negativa, e la base ottima cambia.

Per il confezionamento, con B−1e2=(−1,1)B^{-1} e_2 = (-1, 1), lo stesso conto dà x2=50−δx_2 = 50 - \delta e x3=50+δx_3 = 50 + \delta: il prezzo ombra di 30 € vale per ore di confezionamento tra 100 e 200, con un profitto da 4.000 a 7.000 €.

Fino a dove vale: i profitti

Qui conta se il prodotto è già in produzione o no.

Un prodotto non prodotto: V1. x1x_1 è non di base. Se il suo profitto sale di δ\delta, cambia solo il suo costo ridotto, che diventa −15+δ-15 + \delta. La base resta ottima finché è ≤0\le 0, cioè finché p1≤50p_1 \le 50 €/hl. Il costo ridotto −15-15 si legge così: per rendere conveniente V1, il suo profitto deve salire di più di 15 €. A 50 €/hl esatti produrla o no è indifferente: il profitto resta 5.500 €.

Se per esempio p1p_1 sale a 65 €/hl, il costo ridotto diventa positivo, V1 entra in base e un'iterazione del simplesso porta al nuovo ottimo: circa 16,7 hl di V1 e 66,7 hl di V3, per 5.750 €. Lo stesso ragionamento per V4, con costo ridotto −20-20, dà p4≤100p_4 \le 100 €/hl.

Un prodotto già in produzione: V2. x2x_2 è di base, quindi il suo profitto entra in cBc_B, e un cambiamento sposta tutti i costi ridotti insieme. Imponendo che restino tutti ≤0\le 0 si trova che la produzione ottima non cambia finché 35≤p2≤6035 \le p_2 \le 60 €/hl. Cambia invece il profitto, perché si continua a produrre la stessa quantità di V2 a un prezzo diverso.

Il conto per il profitto di V2

Il simplesso lavora sul problema di minimo, dove il coefficiente di V2 è c2=−p2c_2 = -p_2. Se il profitto aumenta di δ\delta, il coefficiente scende di δ\delta. x2x_2 è la prima variabile di base, quindi cBc_B diventa cB−δ e1c_B - \delta\, e_1, e i costi ridotti delle non di base diventano:

r~N⊤=rN⊤−δ e1⊤B−1N\tilde r_N^\top = r_N^\top - \delta\, e_1^\top B^{-1} N

e1⊤B−1Ne_1^\top B^{-1} N è la prima riga del tableau, letta nelle colonne delle non di base x1x_1, x4x_4, s1s_1, s2s_2: (3; −1; 2; −1)(3;\ -1;\ 2;\ -1). Imponendo che tutti i costi ridotti restino ≤0\le 0:

−15−3δ≤0 ⇒ δ≥−5−20+δ≤0 ⇒ δ≤20−10−2δ≤0 ⇒ δ≥−5−30+δ≤0 ⇒ δ≤30\begin{aligned} -15 - 3\delta \le 0 &\ \Rightarrow\ \delta \ge -5 \\ -20 + \delta \le 0 &\ \Rightarrow\ \delta \le 20 \\ -10 - 2\delta \le 0 &\ \Rightarrow\ \delta \ge -5 \\ -30 + \delta \le 0 &\ \Rightarrow\ \delta \le 30 \end{aligned}

Valgono tutte per −5≤δ≤20-5 \le \delta \le 20, cioè 35≤p2≤6035 \le p_2 \le 60 €/hl. Il limite superiore viene da V4: se V2 rende molto, conviene spostare il confezionamento da V3 a V4 e produrre più V2. Il limite inferiore viene da V1: sotto i 35 €/hl conviene produrre V1 al posto di V2. Il valore del profitto nell'intervallo è 5.500+50 δ5.500 + 50\,\delta €, perché si continuano a produrre 50 hl di V2.

Prodotti nuovi e vincoli nuovi

Un prodotto nuovo. Si pensa di produrre V5, che richiede 1 ora di miscelazione e 1 di confezionamento per ettolitro. Conviene? Basta calcolare quanto valgono, ai prezzi ombra, le risorse che consumerebbe:

10⋅1+30⋅1=40 €/hl10 \cdot 1 + 30 \cdot 1 = 40 \ \text{€/hl}

V5 conviene solo se il suo profitto supera 40 €/hl: in quel caso il suo costo ridotto è positivo, entra in base, e il simplesso riparte dal tableau attuale. Se rende meno, togliere risorse a V2 e V3 per produrlo farebbe perdere più di quanto guadagna.

Un vincolo nuovo. Il magazzino può contenere al massimo 90 hl a settimana: x1+x2+x3+x4≤90x_1 + x_2 + x_3 + x_4 \le 90. La soluzione attuale produce 50+50=10050 + 50 = 100 hl, quindi lo viola. Si aggiunge il vincolo al tableau e si riottimizza: il nuovo ottimo è 30 hl di V2 e 60 di V3, per 5.400 €. Se invece la soluzione attuale avesse rispettato il nuovo vincolo, sarebbe rimasta ottima senza fare niente.

  • L'analisi di sensitività usa il tableau finale per rispondere alle domande "e se…?" senza risolvere di nuovo.
  • La base resta ottima finché valgono ammissibilità (wB≥0w_B \ge 0) e ottimalità (rN≤0r_N \le 0).
  • I prezzi ombra (costi ridotti degli scarti, cambiati di segno) dicono quanto vale un'unità in più di ogni risorsa. Coincidono con la soluzione duale e valgono solo in un intervallo dei termini noti.
  • Il profitto di un prodotto non prodotto cambia solo il suo costo ridotto. Quello di un prodotto in produzione li cambia tutti.
  • Un prodotto nuovo conviene se rende più delle risorse che consuma, valutate ai prezzi ombra. Un vincolo nuovo va controllato sulla soluzione attuale.