Sei sulla pagina 1di 32

4.

5 Metodo del simplesso


min z = cTx
s.v.
Ax = b
x0

PL in forma standard

Esamina una sequenza di soluzioni di base ammissibili


con valori non crescenti della funzione obiettivo fino a
raggiungerne una ottima o a determinare che il PL
illimitato (Dantzig 1947).
Si passa da una soluzione di base ammissibile ad una
vicina
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

Geometricamente:

vertici adiacenti
cammino lungo gli spigoli
del poliedro delle soluzioni
ammissibili fino a un
vertice ottimo

NB: Nel caso peggiore il metodo pu esaminare tutte le


soluzioni di base ammissibili ma mediamente
risulta molto efficiente.
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

Bisogna sapere come:


determinare una soluzione di base ammissibile
iniziale (o stabilire che il PL inammissibile)
applicando il metodo ad un altro PL
verificare lottimalit della soluzione di base
ammissibile corrente
passare dalla soluzione di base ammissibile corrente
ad una soluzione di base ammissibile vicina migliore
(o stabilire che il PL illimitato).
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

Costi ridotti
min{ cTx : Ax = b, x 0 }

Dati un PL

e una base ammissibile B, Ax = b si pu riscrivere come


B xB + N xN = b xB = B-1b - B-1N xN
con B-1b 0.
Soluzione di base ammissibile: xB = B-1b, xN = 0
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

Sostituendo nella funzione obiettivo:


cTx

(cTB

cTN)

-1b B-1Nx
xB
B
T
T
N
= (c B c N)
xN
xN

cTx = cTB B-1b cTB B-1NxN + cTN xN


= cTB B-1b + ( cTN cTB B-1N ) xN
z0 = costo

soluzione di base
ammissibile
xB = B-1b, xN = 0

espressa in funzione
solo delle variabili
fuori base

cTN
costi ridotti

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

cj = variazione della funzione obiettivo se xj fuori


base aumentasse di 1 unit e le altre variabili
fuori base rimanessero uguali a 0

Def.:

cTN

= 0T

cT cT cTB B-1A = [cTB cTB B-1B, cTN cTB B-1N]


=I
vettore dei costi ridotti rispetto alla base B

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

Test di ottimalit
Dato un PL di min (max) e una base ammissibile B, se
tutti i costi ridotti (delle variabili fuori base) sono non
negativi (non positivi) la soluzione di base ammissibile
xB = B-1b 0, xN = 0 di costo cTB B-1b ottima.
Infatti cT 0T implica
cTx = cTB B-1b + cTN xN cTB B-1b

x 0, A x = b

NB: Questa condizione di ottimalit sufficiente ma


in generale non necessaria.
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

Cambiamento di base (min)


Sia una base ammissibile B e xj fuori base (xN) con costo
ridotto cj < 0.
Aumentare xj il pi possibile (entra in base)
mantenendo le altre variabili fuori base uguali a 0.
La variabile xi in base (xB) tale che xi 0 impone il
limite alla crescita di xj pi stringente si annulla
(esce dalla base).
La nuova base ha una colonna diversa (vertici adiacenti)
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

Forma canonica
Ad ogni iterazione bisogna porre il sistema
n

aij x j = bi

i = 1,..., m

j =1

in forma canonica
xi +

BxB + NxN = b

aij xj = bi

j = m +1

i = 1,..., m
I xB + N xN = b

che mette in evidenza le variabili in base in funzione


di quelle fuori base.
x =b-Nx
B

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

La forma canonica associata ad una base B si ottiene


calcolano aij e bi in funzione di B-1
B-1B xB + B-1N xN = B-1b
b
I
N
eseguendo una sequenza di operazione di pivoting
I xB + N xN = b

mette in evidenza la soluzione


di base xB = b e xN = 0 !

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

10

Operazione di pivoting
1. Scegliere un coefficiente ars 0 (il pivot)
2. Dividere per ars la r-esima riga
3. Per ogni riga i r, sottrarre la r-esima riga
moltiplicata per ais
NB: Stesse operazioni (che lasciano invariato
linsieme delle soluzioni) usate nel metodo di
eliminazione di Gauss per risolvere i sistemi di
equazioni lineari.
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

11

min z = x1 + x2 + x3

Esempio:

x1 + 2x2 + x3 x4
+ x5
4x2 x3
2x1
+3x3 + x4
xi 0
b

pivot
A
r 1 2 1 -1 0
0 4 -1 0 1
2 0 3 1 0

3
2
5

-2
2

0
0
1

colonne variabili in base

1
0
0
1
0
0

-3
3
-
0
3/2

-
2
1
-
3

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

=3
=2
=5
i = 1,,5
0
1
0
0
1
0

3/2
-4
5

1
5/2
12

Operazioni di pivoting permettono di:


mettere un PL in forma canonica rispetto ad una base B
passare da una forma canonica ad unaltra, ovvero
cambiare base.
Vantaggio: B-1 della nuova base B non viene calcolata
da zero ma in modo incrementale applicando
allinversa della base precedente (con ununica colonna
diversa) ununica operazione di pivoting!
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

13

Scegliere la base ammissibile vicina (vertice adiacente)


in modo tale da:
migliorare il valore della funzione obiettivo
mantenere lammissibilit
1) Variabile da fare entrare nella base

scelta colonna
s pivot

con costo ridotto cj < 0 (NB: decremento z


dipende anche dal limite alla crescita di xj !)
che produce z massimo rispetto a z = cBTB-1b
regola di Bland: s = min{ j : cj < 0}
Per problemi di max: cj > 0
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

14

scelta riga r pivot

2) Variabile da fare uscire dalla base

altrimenti
nessun limite!

indice i con bi minimo = * tra quelle con ais>0


ais

limite alla crescita di xs pi stringente


bi
regola di Bland: r = min{ i :
= *, ais>0 }
ais

a caso

NB: Se cj < 0 con aij 0 i, nessun elemento


della colonna pu fare da pivot
la funzione obiettivo illimitata!
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

15

Rappresentazione sotto forma di tabella


(tableau)
sistema

z = cTx

con vincoli di non negativit impliciti

Ax = b

- termine noto funz. obiettivo


x1
xn

Tableau iniziale:

m righe

cT

funz. obiettivo

termini noti
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

16

Considerando una base B e partizionando A = [B N]


x1 xm xm+1 xn
0

cTB

cTN

-1

0 = cTx z

con operazioni di pivoting (o pre-moltiplicando per B-1)


si porta il tableau in forma canonica rispetto a B:
x1 xm xm+1 xn
-z

xB[1]

xB[m]

-z0
b

00
I

cTN
N

z = cTB B-1b + cTN xN


z0
b = B-1b

variabili in base
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

17

Esempio:

min

z = - x1 - x2
6x1 + 4x2 +x3
= 24
+ x4 = 6
3x1 2x2
xi 0

i =1,, 4

Tableau rispetto alla base con colonne 3, 4:

x1
-z 0 -1
x3 24 6
r x4 6 3

x2
-1
4
-2

x3
0
1
0

x4
0
0
1

I2x2
Pivot su 3 equivale a
ricavare x1 dalla riga
pivot e sostituirla nelle
rimanenti righe

base
pivot
x1 entra nella base e x4 esce dalla base
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

18

Tableau rispetto alla nuova base:


x1 x2 x3 x4
-z 2 0 -5/3 0 1/3
x3 12 0 8 1 -2
x1 2 1 -2/3 0 1/3

costi ridotti

base

soluzione di base ammissibile:


x1 = 2, x3 = 12, x2 = x4 = 0

x1
x1

6
0
3
1

con z = -2
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

19

x2 unica variabile fuori base da fare entrare (c2 = -5/3 < 0)


x3 unica variabile in base che pu uscire (ars = 8 > 0)
x1

x2

x3

x4

-z 2 0 -5/3 0 1/3
r x3 12 0 8 1 -2
x1 2 1 -2/3 0 1/3
x1
-z 6
x2 6 3/2
x4 18 6

x2
0
1
0

x3

x4
0
0
1

x1
-z 9/2 0
x2 3/2 0
x1 3 1

x2 x3
x4
0 5/24 -1/12
1 1/8 -1/4
0 1/12 1/6 r

s
Tutti i costi rodotti 0

sol. di base (ammissibile) ottima:

x*1 = 0, x*2 = 6, x*3 = 0, x*4 = 18


* = -6
con
z
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano
20

Algoritmo del simplesso (PL di min)


BEGIN
Siano B[1],,B[m] gli indici delle colonne di una base ammissibile
iniziale B;
Costruire il tableau iniziale A = {a[i,j]: 0im, 0jn} in
forma canonica rispetto a B;
illimitato:=false;

ottimo:=false;

WHILE (ottimo = false) AND (illimitato = false) THEN


IF a[0,j] 0 j=1,,m THEN ottimo := true; /* per PL di min */
ELSE
Scegliere una xs fuori base con a[0,s] < 0;
IF a[i,s] 0 i=1,,m
ELSE

THEN

illimitato := true;

costi ridotti

Determina indice r che minimizza


con 1 i m e a[i,s] > 0;
pivot(r,s)
B[r] := s;
END-IF

a [i,0]
a [i, s]

/* aggiornamento tableau */

Procedura pivot(r,s)?

END-IF
END

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

21

Degenerazione e convergenza
Def. Una soluzione di base ammissibile x degenere se
contiene almeno una variabile di base = 0.
x con pi di n-m zeri corrisponde a pi basi distinte!
Stesso vertice:

pi di n vincoli ( gli m di Ax = b e pi di n-m


tra gli n di x 0 ) sono soddisfatti con segno di
uguaglianza.
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

22

In presenza di soluzioni di base (ammissibili) degeneri


il cambiamento di base pu non diminuire il valore
della funzione obiettivo:
Se la sol. di base corrente degenere, * pu essere = 0 e
quindi la nuova sol. di base identica a quella precedente.
Anche se * > 0, pi variabili in base possono annullarsi
quando xs viene aumentata a *. La nuova sol. di base
quindi degenere.
Si pu percorrere ciclicamente (all) una sequenza
di basi degeneri associate allo stesso vertice.
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

23

Esistono varie regole anticiclo per la scelta delle


variabili che entrano ed escono dalla base (indici r, s)
Regola di Bland: tra le variabili candidate ad
entrare/uscire dalla base (xs e xr) scegliere sempre
quella con indice minore.
Proposizione:
Lalgoritmo del simplesso con la regola di Bland termina
n iterazioni.
dopo m
# finito di pivot
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

24

In casi patologici (Klee & Minty 72) il numero


di iterazioni pu essere esponenziale in n e/o m,
ma lalgoritmo mediamente molto efficiente.
Campagne sperimentali:
Il numero di iterazioni cresce linearmente rispetto a m
(m . 3m) e molto lentamente ( logaritmicamente)
rispetto a n !

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

25

Metodo del simplesso a due fasi


Fase 1: Determinazione di una soluzione di base
ammissibile iniziale
Esempio:

min z = x1

una sottomatrice
I2x2 di A!
Sia (P)

+x3

x1 + 2x2
5 x1 + 2x2 + x4 = 5
x2 +2x3 = 6
x1, x2, x3 0

min z = cTx
Ax = b
x0

x4 0
Ipotesi: b 0

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

26

Problema ausiliario con variabili artificiali yi, 1 i m


m

min v = yi
(PA)

i =1

Ax+Iy=b
x 0, y 0

una soluzione di base


ammissibile iniziale ovvia
y=b0

1) Se v* > 0, (P) inammissibile


2) Se v* = 0, chiaramente y* = 0 e x* una soluzione
di base ammissibile di (P)
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

27

Per 2) si verificano i sottocasi:


Se yi fuori base i, 1 i m, eliminando quelle
colonne si ottiene un tableau in forma canonica rispetto
a una base; la riga di z va determinata mediante
sostituzione.
cf. esempio
Se yi in base (soluzione degenere), si pu
effettuare un pivot su un coefficiente 0 della riga yi
e scambiare yi con una variabile xj fuori base.
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

28

min

Esempio:

(P)
min
(PA)

v = y1+ y2
x2+ 4x3+ y1 = 2

z = x1+ x2+10 x3
x2 + 4x3 = 2
-2x1 + x2 - 6x3 = 2
x1, x2, x3 0

-2x1+ x2 - 6x3+ y2 = 2
x1, x2, x3 , y1, y2 0
Mettere v = y1+y2 in forma
canonica sostituendo le
espressioni di y1, y2 in
funzione di x1, x2 e x3

x1 x2 x3 y1 y2
-v -4 2 -2 2 0 0
y1 2 0 1 4 1 0
y2 2 -2 1 -6 0 1

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

29

x1 x2 x3 y1 y2
-v -4 2 -2 2 0 0
y1 2 0 1 4 1 0
y2 2 -2 1 -6 0 1

-v
x2
y2

0
2
0

x1 x2 x3 y1
2 0 10 2
0 1 4 1
-2 0 -10 -1

y2
0
0
1

ottimo v* = 0

E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

30

scegliendo come pivot il coefficiente 2 della riga di


y2 si ottiene:

base ottima
equivalente

-v
x2

0
2

x1

x1 x2 x3
0 0 0
0 1 4
1

y1
1
1

y2
1
0

trasferito la colonna 0
1
di I nella zona delle
variabili originali

soluzioni di base ottima per (PA)


x1= 0, x2= 2, x3= 0
di base ammissibile per (P)
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

31

forma canonica

z = x1+x2+10 x3

variabile fuori base

Sostituendo:

x2 = 2 - 4x3
x1 =
-z
x2

-2
2

x1
0
0

x1

-5x3

x2
0
1

x3
1
4

z = 2 + x3

tableau corrispondente alla


soluzione di base
ammissibili iniziale per (P)

La soluzione di base ammissibile gia ottima quindi


niente seconda fase !
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano

32

Potrebbero piacerti anche