La trasformazione del sistema di relazioni vincolari in un sistema di equazioni risulta più o meno immediata, in relazione ai tipi di vincoli che compongono il modello. Si distinguono due casi:
In questa lezione si descrive l’algoritmo del simplesso nel caso che il sistema di vincoli sia costituito solo da disequazioni del tipo ≤.
Si esamina anche il caso delle soluzioni basiche ammissibili degeneri.
Se i vincoli del modello sono tutti del tipo ≤ il sistema di equazioni ottenuto con l’aggiunta delle variabili slack è in forma canonica rispetto ad esse. E’ quindi possibile determinare immediatamente una prima soluzione basica ammissibile. Essa corrisponde al vertice origine degli assi. Esso appartiene al dominio di ammissibilità proprio perché i vincoli sono tutti del tipo ≤.
Nel seguito, attraverso un esempio numerico, si descrive l’algoritmo articolato nei seguenti passi:
Analisi dei coefficienti cj delle variabili non basiche
z = 11x1 + 10x2 . Nell’origine x1 = x2 = 0 → z = 0
Se x1 passa da 0 a 1, z passa da 0 a 11 e quindi c1 = 11 rappresenta il tasso di variazione della funzione z per una variazione unitaria di x1 .
Analogamente, se x2 passa da 0 a 1 z passa da 0 a 10 e quindi c2=10 rappresenta il tasso di variazione della funzione z per una variazione unitaria di x2 . In altri termini:
Poiché il problema è a massimizzare, se cj > 0 è possibile migliorare la z (cioè trovare una soluzione migliore) se xj passa da 0 a 1. Ci interessano pertanto le variabili con cj > 0 che sono quindi candidate ad entrare nella soluzione.
In generale si sceglie la variabile a cui corrisponde il cj migliore (cioè più elevato in modulo):
xs: cs = maxj {cj , cj > 0, ∀j non basico}
per un problema a massimizzare;
xs: cs = minj {cj , cj < 0, ∀j non basico}
per un problema a minimizzare.
Nella prima soluzione y1 = 20, y2 = 6.5, y3 = 36, y4 = 16. Se x1 entra nella soluzione il suo valore diventa > 0 e quindi le yi cambiano:
Poiché nessuna delle yi può diventare negativa, da ogni equazione possiamo ricavare il valore limite che x1 può assumere senza che la yi si annulli.
Nella 1° equazione y1 aumenta al crescere di x1 .
Nella 2° equazione il coefficiente della x1 è 0 e quindi, qualunque sia x1, y2 non cambia.
Nella 3° equazione y3 diminuisce all’aumentare di x1 e si annulla per x1 = 36/3 = 12
Nella 4° equazione y4 diminuisce all’aumentare di x1 e si annulla per x1 = 16/2 = 8
Per fare in modo che nessuna yi si annulli è necessario scegliere il minimo dei valori limite calcolati per x1.
Mini bi/ai1 (ai1>0) = Min {36/3, 16/2}= 16/2 = 8 → Variabile uscente y4 nella 4° equazione.
Dalle equazioni 3 e 4 del modello si possono ricavare le espressioni di y3 e y4 in funzione di x1 e x2.
y3 = 36 – 3x1 – 4 x2
y4 = 16 – 2x1 – x2
In figura sono riportati gli andamenti di y3 e y4 , cioè delle variabili che diminuiscono all’aumentare di x1.
Si può vedere che all’aumentare di x1 y4 si annulla per prima.
Dividere tutti gli elementi della riga pivot r (er) per ais, ottenendo una nuova configurazione er‘ = er / ars,
che presenterà quindi sicuramente un 1 nell’elemento di posto rs (ars‘ = 1);
Trasformare ciascuna riga i del sistema in modo da indurre la presenza di uno 0 nell’elemento di posto is (ais = 0, “i =1,…, m);
L’operazione da compiere è la seguente:
a ciascuna riga si sottrae la riga pivot trasformata (er‘ )
moltiplicata per l’elemento della riga i
che è nella colonna pivot s (ais ) : ei‘ = ei – ais er‘
La nuova soluzione basica ammissibile (s.b.a.) differisce dalla precedente per una sola variabile:
Il test di ottimalità è soddisfatto se:
∀j corrispondente ad una variabile xj non basica, si verifica:
Una soluzione basica ammissibile di un problema m x n (m vincoli ed n variabili) è degenere quando una (o più) delle m variabili basiche assume valore nullo.
La soluzione presenterà quindi m’ < m variabili strettamente positive ed n – m’ > n – m variabili nulle.
Le variabili basiche nulle si definiscono variabili degeneri.
In presenza di degenerazione uno o più termini noti bi sono nulli ed il valore calcolato con l’espressione θ = min {bi /ais : i ∈ {1,…, m}, ais > 0} sarà anch’esso nullo (a meno che non sia ais ≤ 0 per ogni riga i con bi = 0).
Il risultato dell’operazione di pivoting sarà allora un cambiamento di soluzione basica ammissibile non collegato ad uno spostamento da un vertice ad un altro, perché θ = 0 e la variabile xs entra in base con valore nullo.
2. Ottimizzazione non lineare monodimensionale
3. Ottimizzazione non lineare multidimensionale non vincolata
4. Ottimizzazione non lineare multidimensionale vincolata
5. Ottimizzazione lineare: formulazione di modelli
6. Ottimizzazione lineare: Algoritmo del Simplesso
7. Ottimizzazione lineare: Algoritmo del Simplesso - II parte
8. Ottimizzazione lineare: Algoritmo del Simplesso - III parte
9. Ottimizzazione lineare: il metodo del Big M
10. Ottimizzazione lineare: il metodo delle due fasi
11. Ottimizzazione lineare: Algoritmo del Simplesso revisionato
12. Ottimizzazione lineare: Analisi post-ottimale
13. Ottimizzazione lineare: il modello duale
15. Ottimizzazione intera: il metodo del piano di taglio
16. Ottimizzazione intera: il metodo Branch and Bound
17. Ottimizzazione su rete: Introduzione alla Teoria dei Grafi
18. Ottimizzazione su rete: Problemi di percorso
19. Ottimizzazione su rete: Problemi di flusso
20. Ottimizzazione su rete: Problemi di progetto, circuito e locali...