32
E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 1 4.5 Metodo del simplesso min z = c T x s.v. Ax = b x 0 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

4.5 Metodo del simplesso - Intranet DEIBhome.deib.polimi.it/amaldi/LucidiFRODE-06-07/PL... · E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 1 4.5 Metodo del simplesso

Embed Size (px)

Citation preview

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

4.5 Metodo del simplesso

min z = cTxs.v.

Ax = bx ≥ 0

PL in forma standard

Esamina una sequenza di soluzioni di base ammissibilicon valori non crescenti della funzione obiettivo fino araggiungerne 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 2

cammino lungo gli spigolidel poliedro delle soluzioni ammissibili fino a un vertice ottimo

vertici adiacentiGeometricamente:

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 3

Bisogna sapere come:

• determinare una soluzione di base ammissibile iniziale (o stabilire che il PL è inammissibile)

applicando il metodo ad un altro PL

• verificare l’ottimalità della soluzione di base ammissibile corrente

• passare dalla soluzione di base ammissibile correntead una soluzione di base ammissibile vicina migliore(o stabilire che il PL è illimitato).

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

Costi ridotti

Dati un PL min{ cTx : Ax = b, x ≥0 }

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 5

Sostituendo nella funzione obiettivo:

espressa in funzione solo delle variabili fuori base

z0 = costo soluzione di base ammissibilexB = B-1b, xN = 0

costi ridotticT

N ≔

B-1b – B-1NxNxN

xBxN

cTx = (cTB cT

N) = (cTB cT

N)

cTx = cTB B-1b – cT

B B-1NxN + cTN xN

= cTB B-1b + ( cT

N – cTB B-1N ) xN

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

cj = variazione della funzione obiettivo se xj fuori base aumentasse di 1 unità e le altre variabili fuori base rimanessero uguali a 0

vettore dei costi ridotti rispetto alla base B

= 0T cTN

= IcT ≔ cT – cT

B B-1A = [cTB – cT

B B-1B, cTN – cT

B B-1N]

Def.:

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

Test di ottimalità

Dato un PL di min (max) e una base ammissibile B, setutti i costi ridotti (delle variabili fuori base) sono nonnegativi (non positivi) la soluzione di base ammissibile xB = B-1b ≥ 0, xN = 0 di costo cT

B B-1b è ottima.

Infatti cT ≥ 0T implica

cTx = cTB B-1b + cT

N 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 8

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 9

Forma canonicaAd ogni iterazione bisogna porre il sistema

mibxan

jijij ,...,1

1==∑

=

BxB + NxN = bin forma canonica

xi xj miban

mjiij ,...,1

1==+ ∑

+=

che mette in evidenza le variabili in base in funzione di quelle fuori base.

I xB + N xN = b

xB = b - N xN

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

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

• eseguendo una sequenza di operazione di “pivoting”

I bN

⇒ 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 11

Operazione di “pivoting”

1. Scegliere un coefficiente ars≠ 0 (il “pivot”)2. Dividere per ars la r-esima riga3. Per ogni riga i ≠ r, sottrarre la r-esima riga

moltiplicata per ais

NB: Stesse operazioni (che lasciano invariato l’insieme 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 12

5-43/2

0130212-30-20- ½½1½

523

0130210-1400-1121

Esempio: min z = x1 + x2 + x3

x1 +2x2 + x3 – x4 = 34x2 – x3 + x5 = 2

2x1 +3x3 + x4 = 5xi≥ 0 i = 1,…,5

pivot

r →

↑s

A b

5/2 1¼

0½3/201130000-¾-¼10

colonne variabili in base

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

Operazioni di “pivoting” permettono di:

• mettere un PL in forma canonica rispetto ad una base B• passare da una forma canonica ad un’altra, ovvero

cambiare base.

Vantaggio: B-1 della nuova base B non viene calcolatada zero ma in modo “incrementale” applicando all’inversa della base precedente (con un’unica colonna diversa) un’unica operazione di “pivoting”!

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

1) Variabile da fare entrare nella base

– con costo ridotto cj < 0 (NB: decremento ∆zdipende anche dal limite alla crescita di xj !)

– che produce ∆z massimo rispetto a z = cBTB-1b

– regola di Bland: s = min{ j : cj < 0}

scelta colonna s pivot

Scegliere la base ammissibile “vicina” (vertice adiacente) in modo tale da:

• migliorare il valore della funzione obiettivo

• mantenere l’ammissibilità

Per problemi di max: cj > 0

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

⇒ la funzione obiettivo è illimitata!

NB: Se ∃ cj< 0 con aij ≤ 0 ∀i, nessun elemento della colonna può fare da pivot

limite alla crescita di xs più stringente

altrimenti nessun limite!

scelta riga r pivot

2) Variabile da fare uscire dalla base

– indice i con minimo = θ* tra quelle con ais>0

– regola di Bland: r = min{ i : = θ*, ais>0 }– a caso…

is

i

ab

is

i

ab

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

Rappresentazione sotto forma di tabella(“tableau”)

z = cTxsistema

Ax = b

Tableau iniziale:- termine noto funz. obiettivo

↑termini noti

m righe

← funz. obiettivo

Ab

cT0x1 … xn

con vincoli di non negatività impliciti

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

N

cTN

Bb

cTB0

x1 … xm xm+1 … xn

0⋮0

-1z

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

0 = cTx – z

con operazioni di “pivoting” (o pre-moltiplicando per B-1) si porta il tableau in forma canonica rispetto a B:

N

cTN

Ib

0 … 0-z0

x1 … xm xm+1 … xn

variabili in base

-zxB[1]⋮

xB[m] b = B-1b

z = cTB B-1b + cT

N xN

z0

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

Esempio:

Tableau rispetto alla base con colonne 3, 4:

min z = - x1 - x2

6x1 +4x2 +x3 = 243x1 – 2x2 + x4 = 6

xi≥ 0 i =1,…, 4

x4

x3

-z

10-23601462400-1-10x4x3x2x1

pivot

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

x1 entra nella base e x4 esce dalla base

r →

s↓

base

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

Tableau rispetto alla nuova base:

x1

x3

-z

1/30-2/312-2180121/30-5/302x4x3x2x1

base

soluzione di base ammissibile:

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

con z = -2

1306·⇒·

x1x1

← costi ridotti

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

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

x3 unica variabile in base che può “uscire” (ars = 8 > 0)

x1

x3

-z

1/30-2/312-2180121/30-5/302x4x3x2x1

r →

s↓

⇒x1

x2

-z

1/61/12013-1/41/8103/2-1/125/24009/2

x4x3x2x1

↑s

← r

x4

x2

-z

1½06180¼13/2 60¼0½6x4x3x2x1

Tutti i costi rodotti ≥ 0⇒ sol. di base (ammissibile) ottima:

x*1 = 0, x*

2 = 6, x*3 = 0, x*

4 = 18con z* = -6

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

Algoritmo del simplesso (PL di min)

],[]0,[

siaia

Procedura pivot(r,s)?

BEGIN

Siano B[1],…,B[m] gli indici delle colonne di una base ammissibile iniziale B;

Costruire il tableau iniziale A = {a[i,j]: 0≤i≤m, 0≤j≤n} 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 THEN illimitato := true;

ELSE

Determina indice r che minimizza

con 1 ≤ i ≤ m e a[i,s] > 0;

pivot(r,s) /* aggiornamento tableau */

B[r] := s;

END-IF

END-IF

END

costi ridotti

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

Degenerazione e convergenza

Def. Una soluzione di base ammissibile x è degenere secontiene 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-mtra gli n di x ≥ 0 ) sono soddisfatti con segno di uguaglianza.

x

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

⇒ Si può percorrere ciclicamente (all’∞) una sequenza di basi “degeneri” associate allo stesso vertice.

In presenza di soluzioni di base (ammissibili) degeneriil 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.

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

Esistono varie regole “anticiclo” per la scelta delle variabili che entrano ed escono dalla base (indici r, s)

# finito di pivot

nm

Proposizione: L’algoritmo del simplesso con la regola di Bland termina dopo ≤ iterazioni.

Regola di Bland: tra le variabili candidate ad entrare/uscire dalla base (xs e xr) scegliere sempre quella con indice minore.

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

Campagne sperimentali:

Il numero di iterazioni cresce linearmente rispetto a m(m ≤ . ≤ 3m) e molto lentamente (≈ logaritmicamente) rispetto a n !

In casi “patologici” (Klee & Minty 72) il numero di iterazioni può essere esponenziale in n e/o m,ma l’algoritmo è mediamente molto efficiente.

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

Metodo del simplesso a due fasi

Fase 1: Determinazione di una soluzione di base ammissibile iniziale

min z = x1 +x3

x1 +2x2 ≤ 5x2 +2x3 = 6

x1, x2, x3 ≥ 0

Esempio:→ x1 + 2x2 + x4 = 5

x4 ≥ 0∄ una sottomatrice I2x2 di A!

min z = cTxAx = b

x ≥ 0Ipotesi: b ≥ 0Sia (P)

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

Problema ausiliario con variabili artificiali yi, 1≤ i ≤ m

∑1

minm

iiyv

=

=

A x + I y = b

x ≥ 0, y ≥ 0

∃ una soluzione di base ammissibile iniziale ovviay = b ≥ 0

(PA)

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 28

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 yie “scambiare” yi con una variabile xj fuori base.

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

y2

y1

-v

22-4

10-61-201410002-22y2y1x3x2x1

Esempio: min z = x1+ x2+10 x3

x2 + 4x3 = 2

-2x1 + x2 - 6x3 = 2

x1, x2, x3 ≥ 0

Mettere v = y1+y2 in formacanonica sostituendo le espressioni di y1, y2 in funzione di x1, x2 e x3

(PA)

min v = y1+ y2

x2+ 4x3+ y1 = 2

-2x1+ x2 - 6x3+ y2 = 2

x1, x2, x3 , y1, y2 ≥ 0

(P)

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

y2

y1

-v

22-4

10-61-201410002-22y2y1x3x2x1

y2

x2

-v

020

1-1-100-201410021002y2y1x3x2x1

ottimo v* = 0

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

scegliendo come pivot il coefficiente –2 della riga di y2 si ottiene:

base ottima equivalente

⇒ soluzioni di base ottima per (PA) x1= 0, x2= 2, x3= 0

è di base ammissibile per (P)

x1

x2

-v

020

-½½5010141011000y2y1x3x2x1

trasferito la colonna di I nella zona delle variabili originali

01

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

z = x1+x2+10 x3 ≠ forma canonica

variabile fuori baseSostituendo:

x2 = 2 - 4x3

x1 = -5x3

⇒ z = 2 + x3

tableau corrispondente alla soluzione di base ammissibili iniziale per (P)

La soluzione di base ammissibile è gia ottima quindi niente seconda fase !

x1

x2

-z

02-2

501410100x3x2x1