Lezione n° 13
Algoritmo del Simplesso:
- Metodo delle 2 Fasi - Esempio
Lezioni di Ricerca Operativa
Corso di Laurea in Informatica Università degli Studi di Salerno
Prof. Cerulli – Dott.ssa Gentili – Dott. Carrabs
Metodo Delle Due Fasi
T
n
min z c x
Ax b (1) x 0 (2) x R
=
=
≥
∈
Dato il seguente problema di PL in forma STANDARD:
con A(m.n) e b ≥ 0. Supponiamo di volerlo risolvere utilizzando l’algoritmo del simplesso.
Ci occorre una base iniziale
Metodo Delle Due Fasi
Se tra le colonne di A non è presente la matrice Identità non è facile individuare m colonne di A linearmente
indipendenti.
Si modifica allora artificialmente il sistema dei vincoli:
0 ,
0
0
min
≥
≥
→
≥
= +
→
=
y x
x
b y
I x
A b
x A
x cT
con l’aggiunta di una variabile artificiale yi ad ogni
vincolo del sistema. Nel nuovo sistema è presente una matrice identità (associata alle variabili y).
Metodo Delle Due Fasi
0 ,
0 min
≥
≥
= +
∑
y x
b y
I x
A
y
i
i
Una soluzione (x’,y’) del nuovo sistema sarà soluzione anche del sistema di partenza se e solo se y’=0.
Per ottenere una tale soluzione (se esiste) risolviamo il seguente problema di PL.
Metodo Delle Due Fasi
Per risolvere tale problema possiamo utilizzare
il simplesso utilizzando come base iniziale le colonne della matrice (A,I) associate alle variabili artificiali y.
Quindi nella prima fase si risolve il problema:
0 ,
0 min
≥
≥
= +
= ∑
y x
b y
I x
A
y g
i
i Inizialmente tutte le variab. y sono in base mentre tutte le variabili x sono fuori base.
Metodo Delle Due Fasi
Alla fine della prima fase possono verificarsi due casi, l’ottimo della F.O:
1) g* >0 ⇒ Ax=b non ammette soluzione. Non si passa alla seconda fase
2) g* =0 ⇒ Ax=b ammette soluzione (a meno di soluzioni degeneri).
Si passa alla seconda fase: si risolve il problema iniziale utilizzando la base ottima della prima fase come base iniziale della seconda fase.
Metodo Delle Due Fasi: Esempio
0
4 2
1
2 min
2 1
2 1
2 1
≥
≤ +
≥ +
−
−
=
x
x x
x x
x x
z
0
4
2
1
2 min
4 2
1
3 2
1
2 1
≥
= +
+
=
− +
−
−
=
x
x x
x
x x
x
x x
z
Problema della Prima fase
0 ,
0
4
2
1
min
4 2
1
1 3
2 1
1
≥
≥
= +
+
= +
− +
=
y x
x x
x
y x
x x
y g
⎥⎦
⎢ ⎤
⎣
= ⎡
0 1
0
2
1
1 0
1
- 1
1
x x
x x
x1 2 3 4 5
A
Metodo Delle Due Fasi: Esempio
Matr. Identità Base Iniziale
0
4
2
1
min
4 2
1
5 3
2 1
5
≥
= +
+
= +
− +
=
x
x x
x
x x
x x
x
Per uniformità poniamo g
y1=x5.
{ }5,4 N {1,2,3}
B = =
Metodo Delle Due Fasi: Esempio
⎥⎦
⎢ ⎤
⎣
= ⎡
1 0
0 1
AB xB = A bB−1 ⇔ xB = Ib ⇔ xB = b
⎥⎦
⎢ ⎤
⎣
= ⎡
⎥⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
=
⎥ =
⎦
⎢ ⎤
⎣
⎡
4 1 4
1 1 0
0 b 1
A-B1
4
5 b
x
x x5 = x1 , 4 = 4
Test di Ottimalità: calcolo di zj – cj per j ∈N
{ }5,4 N {1,2,3}
B= =
[ ]1 0 I 11 0 1
)
( 1 1 ⎥ − =
⎦
⎢ ⎤
⎣
= ⎡
z − c [ ] 0 1
2 I 1 0 1 )
( 2 2 ⎥ − =
⎦
⎢ ⎤
⎣
= ⎡
z − c
[ ]1 0 I 01 0 1
)
( 3 3 ⎥ − = −
⎦
⎢ ⎤
⎣
= ⎡−
z − c
Metodo Delle Due Fasi: Esempio
x2 entra in base Quale variabile esce dalla base?
Regola del minimo rapporto:
-1 B 2 2
1 1
A a I
2 2
y ⎡ ⎤ ⎡ ⎤
= = ⎢ ⎥ = ⎢ ⎥
⎣ ⎦ ⎣ ⎦
⎥⎦
⎢ ⎤
⎣
= ⎡
⎥ =
⎦
⎢ ⎤
⎣
⎡
4 1
4
5 b
x x
{ }1,2
min 1
0 :
min 2
1 1
2 ⇒ = =
⎪⎭
⎪⎬
⎫
⎪⎩
⎪⎨
⎧ >
=
= ∈ y x
y b y
x b jk
jk j B
k j
x5 esce dalla base; x2 entra in base con valore 1
{ }2,4 N {1,5,3}
B = =
Nuova base:
Metodo Delle Due Fasi: Esempio
⎥⎦
⎢ ⎤
⎣
= ⎡
1 2
0 1
AB ⎥
⎦
⎢ ⎤
⎣
= ⎡
−
1 2 -
0 1
1 AB
⎥⎦
⎢ ⎤
⎣
= ⎡
⎥⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
=
⎥ =
⎦
⎢ ⎤
⎣
⎡
2 1 4
1 1 2 -
0 1 b
A-B1
4
2 b
x x
Test di Ottimalità: calcolo di zj – cj per j ∈N
{ }2,4 N {1,5,3}
B= =
[ ]0 0 A 01 0 0
)
( 3 3 -B1 ⎥ − =
⎦
⎢ ⎤
⎣
= ⎡−
z − c
[ ]0 0 A 11 0 0
)
( 1 1 -B1 ⎥ − =
⎦
⎢ ⎤
⎣
= ⎡
z − c
[ ]0 0 A 10 1 1
)
( 5 5 -B1 ⎥ − = −
⎦
⎢ ⎤
⎣
= ⎡
z − c
Metodo Delle Due Fasi: Esempio
Soluzione Ottima della Prima fase
b A
c b
c
g* = B ⇔ B B−1
[0 0] - 12 01 14 0
* ⎥ =
⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
g Si può passare
alla seconda fase Si risolve il problema iniziale:
utilizzando come base di partenza:
0
4
2
1
2 min
4 2
1
3 2
1
2 1
≥
= +
+
=
− +
−
−
=
x
x x
x
x x
x
x x
z
{ }2,4 N { }1,3
B = =
Metodo Delle Due Fasi: Esempio
⎥⎦
⎢ ⎤
⎣
= ⎡
1 2
0 1
AB ⎥
⎦
⎢ ⎤
⎣
= ⎡
−
1 2 -
0 1
1 AB
⎥⎦
⎢ ⎤
⎣
= ⎡
⎥⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
=
⎥ =
⎦
⎢ ⎤
⎣
⎡
2 1 4
1 1 2 -
0 1 b
A-B1
4
2 b
x x
Test di Ottimalità: calcolo di zj – cj per j ∈N
{ }2,4 N { }1,3
B = =
[ ] ( 1) 1
1 1 1
2 -
0 1 0
2 - )
( 1 1 ⎥ − − = −
⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
z − c
[-2 0] - 12 01 01 0 2
)
( 3 3 ⎥ − =
⎦
⎢ ⎤
⎣
⎥ ⎡−
⎦
⎢ ⎤
⎣
= ⎡
z − c
Metodo Delle Due Fasi: Esempio
x3 entra in base Quale variabile esce dalla base?
Regola del minimo rapporto:
⎥⎦
⎢ ⎤
⎣
= ⎡
⎥⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
= 2
1 - 0
1 - 1
2 -
0 1 a
A-B1 3 y3
⎥⎦
⎢ ⎤
⎣
= ⎡
⎥ =
⎦
⎢ ⎤
⎣
⎡
2 1
4
2 b
x x
{}1
min 1
0 :
min 3
2 2
3 ⇒ = =
⎪⎭
⎪⎬
⎫
⎪⎩
⎪⎨
⎧ >
=
= ∈ y x
y b y
x b jk
jk j B
k j
x4 esce dalla base; x3 entra in base con valore 1 Nuova base: B ={ }2,3 N = { }1,4
⎥⎦
⎢ ⎤
⎣
= ⎡
0 2
1 - 1
AB ⎥
⎦
⎢ ⎤
⎣
= ⎡
−
1/2
1 -
1/2
0
1 AB
⎥⎦
⎢ ⎤
⎣
= ⎡
⎥⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
=
⎥ =
⎦
⎢ ⎤
⎣
⎡
1 2 4
1 1/2
1 -
1/2
0 b
A-B1
3
2 b
x x
Metodo Delle Due Fasi: Esempio
Test di Ottimalità: calcolo di zj – cj per j ∈N
{ }2,3 N { }1,4
B = =
[-2 0] - 10 1/21/2 11 ( 1) 1 1 0
)
( 1 1 ⎥ − − = − + =
⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
z − c
[-2 0] - 10 1/21/2 10 0 1
)
( 4 4 ⎥ − = −
⎦
⎢ ⎤
⎣
⎥ ⎡
⎦
⎢ ⎤
⎣
= ⎡
z − c
Metodo Del Big M
Si modifica artificialmente il sistema dei vincoli:
0 ,
0
0
min
≥
≥
→
≥
= +
→
=
y x
x
b y
I x
A b
x A
x cT
con l’aggiunta di una variabile artificiale yi ad ogni
vincolo del sistema. Nel nuovo sistema è presente una matrice identità (associata alle variabili y).
Alla funzione obiettivo originale vengono sommate (nel caso di un problema di minimo) le variabili artificiali
moltiplicate per un coefficiente M molto grande.
y M
x
cT 1T
min +