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

Metodo del simplesso: Fase 1

ottimizzazione

Il metodo del simplesso parte da un vertice ammissibile e si sposta verso vertici migliori. Nel problema di produzione il punto di partenza era l'origine, ma questa spesso non è ammissibile.

La Fase 1 risolve proprio questo: costruisce un problema ausiliario, che ha sempre un punto di partenza, e lo usa per trovare un primo vertice del problema originale. Oppure per dimostrare che non esiste.

Esempio: la miscela di mangime

Riprendiamo l'esempio della miscela dall'articolo sul metodo grafico: 10 kg esatti di mangime da due ingredienti, con un massimo di fibra e un minimo di proteine, al costo più basso.

min⁡ φ=2x1+3x23x1+x2≤224x1+2x2≥26x1+x2=10x1, x2≥0\begin{aligned} \min \ \varphi &= 2x_1 + 3x_2 \\ 3x_1 + x_2 &\le 22 \\ 4x_1 + 2x_2 &\ge 26 \\ x_1 + x_2 &= 10 \\ x_1,\ x_2 &\ge 0 \end{aligned}

In forma standard ogni tipo di vincolo si tratta in modo diverso:

  • il vincolo ≤\le riceve uno scarto con il più: 3x1+x2+s1=223x_1 + x_2 + s_1 = 22;
  • il vincolo ≥\ge riceve uno scarto con il meno, che misura l'eccedenza: 4x1+2x2−s2=264x_1 + 2x_2 - s_2 = 26;
  • il vincolo == è già un'equazione.

Nell'origine, x1=x2=0x_1 = x_2 = 0, servirebbe s2=−26s_2 = -26, che non è ammesso, e l'equazione del terzo vincolo darebbe 0=100 = 10. L'origine non è ammissibile, e non c'è una base pronta da cui partire.

Le variabili artificiali

Il trucco è aggiungere una variabile artificiale ti≥0t_i \ge 0 a ogni vincolo che non ha già una base pronta:

3x1+x2+s1=224x1+2x2−s2+t2=26x1+x2+t3=10\begin{aligned} 3x_1 + x_2 + s_1 &= 22 \\ 4x_1 + 2x_2 - s_2 + t_2 &= 26 \\ x_1 + x_2 + t_3 &= 10 \end{aligned}

Ora l'origine è un punto di partenza valido: con x1=x2=s2=0x_1 = x_2 = s_2 = 0 si legge subito s1=22s_1 = 22, t2=26t_2 = 26, t3=10t_3 = 10, tutti non negativi.

Le variabili artificiali però "non esistono": una ti>0t_i > 0 vuol dire che il vincolo originale non è rispettato. Il problema originale si ottiene solo con t2=t3=0t_2 = t_3 = 0.

Il problema ausiliario

Si cerca quindi di portare a zero le variabili artificiali, minimizzando la loro somma:

min⁡ Ψ=t2+t3\min \ \Psi = t_2 + t_3

Ψ\Psi (letta "Psi") misura quanto il punto è lontano dall'essere ammissibile. Non può mai essere negativa, perché le tit_i sono al più positive, quindi il problema ausiliario ha sempre un minimo. Alla fine ci sono due possibilità:

  • minimo Ψ=0\Psi = 0: tutte le variabili artificiali sono nulle e il vertice trovato è ammissibile per il problema originale. È il punto di partenza per la Fase 2, cioè il simplesso normale con l'obiettivo vero;
  • minimo Ψ>0\Psi > 0: non c'è modo di soddisfare tutti i vincoli. Il problema originale non ha soluzioni ammissibili.

Prima di iniziare va fatto un ultimo passaggio. Nella base iniziale, {s1,t2,t3}\{s_1, t_2, t_3\}, l'obiettivo Ψ\Psi deve essere espresso con le sole variabili non di base, ma t2t_2 e t3t_3 sono di base. Si sostituiscono con le loro equazioni:

Ψ=36−5x1−3x2+s2\Psi = 36 - 5x_1 - 3x_2 + s_2
Come si ottiene l'espressione di Ψ

Dalle due equazioni con le variabili artificiali:

t2=26−4x1−2x2+s2t3=10−x1−x2\begin{aligned} t_2 &= 26 - 4x_1 - 2x_2 + s_2 \\ t_3 &= 10 - x_1 - x_2 \end{aligned}

Sommandole:

Ψ=t2+t3=36−5x1−3x2+s2\begin{aligned} \Psi = t_2 + t_3 &= 36 - 5x_1 - 3x_2 + s_2 \end{aligned}

Le iterazioni

Da qui si applica il simplesso, con Ψ\Psi al posto dell'obiettivo. Nell'origine non c'è mangime: mancano 26 unità di proteine (t2=26t_2 = 26) e 10 kg di miscela (t3=10t_3 = 10), quindi Ψ=36\Psi = 36.

Iterazione 1: si aggiunge I1. In Ψ=36−5x1−3x2+s2\Psi = 36 - 5x_1 - 3x_2 + s_2 il coefficiente più negativo è quello di x1x_1, quindi conviene aumentare x1x_1, che finora valeva zero.

Fin dove si può aumentare x1x_1? Ogni vincolo pone un limite, e vale il più stretto:

  • proteine: il deficit si azzera con 26/4=6,526/4 = 6{,}5 kg;
  • fibra: il limite di 22 unità si raggiunge con 22/3≈7,322/3 \approx 7{,}3 kg;
  • quantità: i 10 kg si raggiungono con 10 kg.

Il più stretto è quello delle proteine: con 6,5 kg di I1 il deficit di proteine t2t_2 arriva a zero, e ci si ferma lì.

Nel linguaggio del simplesso si dice che x1x_1 entra in base (smette di valere zero) e t2t_2 esce dalla base (si azzera). La base è l'elenco delle variabili che, nel vertice corrente, possono essere diverse da zero.

Si arriva in A (6,5; 0): le proteine bastano, ma mancano ancora 3,5 kg di miscela, e Ψ=3,5\Psi = 3{,}5.

Iterazione 2: si aggiunge I2. Riscritta rispetto alla nuova base, l'espressione diventa Ψ=3,5−0,5 x2−0,25 s2+1,25 t2\Psi = 3{,}5 - 0{,}5\,x_2 - 0{,}25\,s_2 + 1{,}25\,t_2, e il coefficiente più negativo è quello di x2x_2.

Ora il simplesso aggiunge I2 restando sulla retta delle proteine.

Si arriva in D (3, 7), dove non manca più niente: Ψ=0\Psi = 0.

Punto (x1,x2)(x_1, x_2) t2t_2 t3t_3 Ψ\Psi
O (0, 0) 26 10 36
A (6,5; 0) 0 3,5 3,5
D (3, 7) 0 0 0
0 2 4 6 8 10 0 2 4 6 8 10 x₁x₂ regione della Fase 1 fibra = 22 proteine = 26 totale = 10 kg O: Ψ = 36 A: Ψ = 3,5 D: Ψ = 0 C regione ammissibile

Nel disegno l'area colorata è la regione del problema ausiliario: i punti che rispettano il limite sulla fibra e non superano i 10 kg. Le variabili artificiali la rendono più grande di quella vera, perché coprono proteine e chilogrammi mancanti. La regione ammissibile vera è solo il segmento evidenziato tra D e C, sulla retta dei 10 kg.

La Fase 1 parte da O, scorre lungo l'asse fino ad A e poi lungo la retta delle proteine fino a D, il primo punto del segmento.

Perché la regione ammissibile vera è il segmento DC?

Il vincolo sulla quantità è un'uguaglianza: la miscela deve pesare esattamente 10 kg. Quindi i punti ammessi non formano un'area, ma stanno tutti sulla retta x1+x2=10x_1 + x_2 = 10. Su questa retta vale x2=10−x1x_2 = 10 - x_1, e lo si sostituisce negli altri due vincoli.

Fibra, al massimo 22:

3x1+(10−x1)≤22x1≤6\begin{aligned} 3x_1 + (10 - x_1) &\le 22 \\ x_1 &\le 6 \end{aligned}

Il caso limite è C (6, 4): con più I1 la fibra supera 22.

Proteine, almeno 26:

4x1+2(10−x1)≥26x1≥3\begin{aligned} 4x_1 + 2(10 - x_1) &\ge 26 \\ x_1 &\ge 3 \end{aligned}

Il caso limite è D (3, 7): con meno I1 le proteine non bastano.

Restano i punti della retta con 3≤x1≤63 \le x_1 \le 6: il segmento da D a C.

La Fase 2

Da D (3, 7) si riparte con l'obiettivo originale, φ=2x1+3x2\varphi = 2x_1 + 3x_2. In D vale 27 €. Una sola iterazione porta all'altro estremo del segmento, C (6, 4), dove φ=24\varphi = 24 €: è l'ottimo. Conviene usare più ingrediente I1, che costa meno, fin dove lo permette il limite sulla fibra.

Le variabili artificiali, ormai a zero, si eliminano: il loro unico compito era trovare il punto di partenza.

  • Se l'origine non è ammissibile, il simplesso non ha un punto di partenza.
  • I vincoli ≥\ge ricevono uno scarto con il meno; ai vincoli ≥\ge e == si aggiunge una variabile artificiale ti≥0t_i \ge 0, che fornisce una base iniziale.
  • La Fase 1 minimizza Ψ=∑ti\Psi = \sum t_i, che misura l'inammissibilità. Va prima espressa con le sole variabili non di base.
  • Se il minimo è Ψ=0\Psi = 0, si ha un vertice ammissibile da cui parte la Fase 2. Se è Ψ>0\Psi > 0, il problema non ha soluzioni.