Un’ulteriore implementazione del Metodo del Simplesso è nota come Metodo del Simplesso Tabellare.
Pur essendo meno efficiente in termini di complessità computazionale rispetto al Simplesso Revisionato, il Simplesso Tabellare presenta il vantaggio di riportare in forma compatta tutti i dati necessari alla computazione
in un’unica tabella, detta anche tableau.
A differenza del Simplesso Revisionato in cui viene aggiornata ad ogni iterazione la matrice inversa , il Simplesso Tabellare aggiorna ad ogni iterazione la seguente matrice
le cui colonne sono gli n+1 vettori
Sia B(l) l’indice della variabile candidata ad uscire dalla base e sia j l’indice della variabile candidata ad entrare in base:
la colonna è detta colonna zero e contiene i valori assunti dalle variabili correntemente in base;
la j.ma colonna è detta colonna di pivot;
la riga l.ma è detta riga di pivot;
l’elemento all’incrocio della colonna e della riga di pivot è detto elemento di pivot.
Nota: l’elemento di pivot è sempre positivo.
Infatti, se , ciò comporterebbe la terminazione dell’algoritmo con valore ottimo della funzione obiettivo pari a
.
Le informazioni contenute nelle righe del tableau hanno la seguente interpretazione.
Dati i vincoli del problema e data la matrice corrente di base B, i vincoli possono anche essere equivalentemente espressi come
che è esattamente l’informazione contenuta nelle righe del tableau.
Per quanto riguarda la determinazione del valore di e della variabile
candidata ad uscire dalla base, ci si rende immediatamente conto che basta controllare i valori
dati dal rapporto fra l’ i.ma entrata della colonna zero e l’ i.ma entrata della colonna di pivot, tali che sia positivo: il più piccolo di tali rapporti fornisce il valore da assegnare a
e determina anche la variabile
.
Alla fine di ogni iterazione del Simplesso Tabellare è necessario aggiornare il tableau
per ottenere il tableau
dove è la nuova matrice di base.
Siffatto aggiornamento è realizzato applicando al tableau
una serie di operazioni di riga elementari atte a trasformare la colonna j.ma del tableau nel vettore unitario .
Al tableau tipicamente è aggiunta anche una riga zero, il cui primo elemento situato nell’angolo in alto a sinistra
corrisponde a
cioè al valore cambiato di segno che la funzione obiettivo assume in corrispondenza della corrente soluzione ammissibile di base .
I restanti n elementi della riga zero corrispondono al vettore dei costi ridotti
Dunque, il tableau presenta la seguente struttura:
Più in dettaglio, il tableau presenta la seguente struttura:
Guardando i costi ridotti contenuti nella riga zero,
→ o si verifica la validità delle condizioni di ottimalità della soluzione corrente;
→ oppure si individua l’indice j della variabile entrante in base e una volta determinato j, eventualmente anche la riga zero subisce le opportune trasformazioni affinché sia reso nullo.
Esempio
Si consideri il seguente problema di PL:
la cui regione ammissibile P è rappresentata in Figura.
Si noti che il problema ammette 5 soluzioni ammissibili di base:
E è l’unica soluzione ottima.
Per formulare il problema in forma standard, occorre introdurre tre variabili di slack:
La soluzione
secondo la quale le variabili di base sono , cioè B(1)=4, B(2)=5 e B(3)=6, è una soluzione ammissibile e può dunque essere usata come soluzione iniziale per il simplesso.
La matrice di base corrispondente ad essa è
Supponiamo di voler risolvere il problema applicando il Metodo del Simplesso Tabellare.
Per ottenere la riga zero, basta osservare che
Dunque, il tableau iniziale è
I iterazione:
Scegliamo di far entrare in base x_1, avendo costo ridotto negativo. Dunque, la colonna pivot è la colonna
E’ necessario, ora, stabilire quale sia la variabile uscente dalla base. A tale scopo, calcoliamo i rapporti
e la variabile uscente sarà quella cui corrisponde il minimo rapporto.
Sia che
sono possibili candidate e si sceglie di far uscire dalla base
(Regola di Bland).
L’elemento di pivot è, dunque, l’elemento in tabella contrassegnato da un asterisco.
Le variabili della nuova base sono , cioè
.
Applicando opportune operazioni elementari alle righe del tableau orientate a trasformare la colonna di pivot nel vettore colonna
si ottiene il seguente tableau:
La nuova soluzione di base nello spazio corrisponde al punto D=(10, 0, 0).
Essa è una soluzione degenere, dato che il valore della variabile di base è nullo (infatti, D attiva quattro vincoli).
II iterazione:
Sia che
sono variabili potenzialmente candidate ad entrare in base, dato che entrambe hanno un costo ridotto negativo.
Supponiamo che sia ad entrare in base. Dunque, la colonna pivot u è
Al fine di stabilire quale sia la variabile uscente dalla base, calcoliamo i rapporti
Sia
che
sono possibili candidate e si sceglie di far uscire dalla base
.
L’elemento di pivot è, dunque, l’elemento in tabella contrassegnato da un asterisco.
Le variabili della nuova base sono , cioè
.
Applicando opportune operazioni elementari alle righe del tableau orientate a trasformare la colonna di pivot nel
vettore colonna
si ottiene il seguente tableau:
La nuova soluzione di base nello spazio corrisponde al punto B=(0, 0, 10).
III iterazione:
x_2 è l’unica candidata ad entrare in base e la colonna pivot u è
Al fine di stabilire quale sia la variabile uscente dalla base, calcoliamo i rapporti
e si individua in la variabile uscente. L’elemento di pivot è, dunque, l’elemento in tabella contrassegnato da un asterisco.
Le variabili della nuova base sono , cioè
.
Applicando opportune operazioni elementari alle righe del tableau orientate a trasformare la colonna di pivot nel
vettore colonna
si ottiene il seguente tableau:
A questo punto, l’algoritmo termina restituendo come soluzione ottima la soluzione corrispondente al punto E, cioè
, con valore della funzione obiettivo pari a -136.
Si noti che il Metodo del Simplesso si è spostato da un vertice (soluzione ammissibile di base) ad uno adiacente
secondo il percorso A-D-B-E.
Facendo scelte diverse circa le variabili entranti e quelle uscenti, l’algoritmo avrebbe potuto scegliere un percorso diverso.
1. Presentazione del Corso ed Introduzione alla Programmazione Mat...
2. Introduzione ai Problemi di PL
6. Algoritmo del Simplesso Revisionato
7. Algoritmo del Simplesso Tabellare
10. Soluzione di Problemi di PL tramite Algoritmo del Simplesso
11. Problemi di Programmazione Lineare Intera
12. PLI con matrice dei vincoli unimodulare
13. Problemi di PLI: Branch & Bound
14. Il Problema dello Zaino 0/1 e il Problema dello Zaino Frazionar...
15. Il Problema dello Zaino 0/1: un algoritmo B&B
16. Il Problema dello Zaino 0/1: un algoritmo di Programmazione Din...
17. Richiami di Teoria dei Grafi: definizioni e notazioni
18. Il Problema del Vertex Cover Minimo di un Grafo
19. Il Problema dell'Albero di Copertura Minimo (MST)
20. Il Problema dell'Albero di Copertura Minimo (MST): esempio
D. Bertsimas e J.N. Tsitsiklis, Introduction to Linear Optimization, Belmont - Massachusetts (USA), Dynamic Ideas and Athena Scientific, 2008.
M. Fischetti, Lezioni di Ricerca Operativa, Padova, Edizioni Libreria Progetto Padova, 1999.
S. Martello, Fondamenti di Ricerca Operativa L-A, Bologna, Società Editrice Esculapio, 2004.
S. Martello, Ricerca Operativa LS, Bologna, Società Editrice Esculapio, 2004.
Dispense del Corso di Ricerca Operativa presso l'Università degli Studi di Pisa.
Dispense ed Appunti del Corso prodotte da Paola Festa.