Sei sulla pagina 1di 10

POLITECNICO DI TORINO III Facolt di Ingegneria

Corso di Laurea in Ingegneria Informatica

TESINA
AUTOMAZIONE DEI SISTEMI E DEI PROCESSI INDUSTRIALI

Il metodo del simplesso e le forme della programmazione lineare

Professore
Donato Carlucci

Studente
Roberto Sora

L'algoritmo del simplesso un metodo numerico per risolvere problemi di programmazione lineare. Un problema di programmazione lineare consiste nel massimizzare o minimizzare una funzione lineare (funzione obiettivo) definita sull'insieme delle soluzioni di un sistema di disequazioni lineari, dette vincoli. Questo algoritmo fa uso del concetto di simplesso, cio un politopo di N+1 vertici in N dimensioni: un segmento di retta in una dimensione, un triangolo in due dimensioni, un tetraedro in tre dimensioni. L'algoritmo del simplesso in grado di determinare di che tipo di poliedro si tratta e trova la soluzione ottima, che , sotto opportune ipotesi, un vertice del poliedro, nel caso il problema abbia una soluzione ottimale finita. Durante le iterazioni dellalgoritmo, si passa da una soluzione ammissibile ad una adiacente (quindi da un vertice del politopo ad un altro adiacente) con un valore della funzione obiettivo non peggiore. L'algoritmo viene solitamente formulato su problemi posti nella cos detta forma standard dove si deve cio massimizzare una funzione lineare a vincoli di uguaglianza, e in cui le variabili siano positive o nulle

Forma generale:

Un problema di programmazione lineare, solitamente non si presenta nella forma standard, ma bens in una forma definita generale: un problema o di massimo o di minimo, con vincoli di uguaglianza o disuguaglianza e variabili non vincolate in segno.
Esempio di problema di programmazione lineare in forma generale

min z = -x2 1. x1+x2 1 2. x1+x2 2 3. x1-x2 1 4. x1-x2 -1 x1, x2 0


P = Soluzione ottima = vettore antigradiente della FO = traslazione della retta FO = vincoli = regione di ammissibilit

Riduzione alla forma standard:


Dato che sempre possibile: 1. ricondursi mediante trasformazioni di variabili ad un problema con variabili non negative (infatti una variabile non vincolata in segno pu essere espressa come differenza di due variabili non negative x=y-w). 2. Ricondursi ad un sistema di equazioni lineari introducendo nuove variabili 3. Ricondursi da un problema di massimo ad un problema di minimo cambiando di segno la funzione obiettivo Quindi vincoli caratterizzati da disequazioni di minore uguale (detti vincoli di disponibilit) o maggiore uguale (detti vincoli delle richieste)

Vincoli: disequazioni di minore uguale

Vincoli: disequazioni di maggiore uguale

a11x1 + a12x2 + + a1pxp b1 a21x1 + a22x2 + + a2pxp b2 am1x1 + am2x2 + + ampxp bm x10 , x10 , xn0
Possono essere espressi come un sistema si equazioni lineari

a11x1 + a12x2 + + a1pxp b1 a21x1 + a22x2 + + a2pxp b2 am1x1 + am2x2 + + ampxp bm x10 , x10 , xn0

Vincoli: equazioni lineari con variabili di slack

Vincoli: equazioni lineari con variabili di surplus

a11x1 + a12x2 + + a1pxp + xp+1 a21x1 + a22x2 + + a2pxp + xp+2 + xp+m am1x1 + am2x2 + + ampxp

= b1 = b2 = bm

a11x1 + a12x2 + + a1pxp - xp+1 a21x1 + a22x2 + + a2pxp - xp+2 - xp+m am1x1 + am2x2 + + ampxp

= b1 = b2 = bm

x10 , x10 , xn0 , xp+10 , xp+20 , , xp+m 0

x10 , x10 , xn0 , xp+10 , xp+20 , , xp+m 0

Introducendo in ogni vincolo delle nuove variabili non negative x p+i dette variabili ausiliarie che tramutano le disequazioni lineari in equazioni lineari con m vincoli e n (=p+m) variabili Le variabili introdotte nel caso di vincoli di minore uguale si dicono variabili slack che rappresentano un eventuale sottoutilizzo della risorsa, mentre le variabili introdotte nel caso di vincoli di maggiore uguale si dicono variabili surplus che rappresentano un eventuale sovrapproduzione.

Forma matriciale:
la forma standard cos ottenuta:
Forma standard della PL

Min z = c1x1+c2x2+ + +cnxn + d a11x1 + a12x2 + + a1nxn = b1 a21x1 + a22x2 + + a2nxn = b2 am1x1 + am2x2 + + amnxn = bm x10 , x10 , xn0

Forma matriciale della PL

Min z = cTx+d Ax=b x0

un sistema di m equazioni in n incognite e pu essere rappresentato in forma matriciale , se il rango(A) = rango([A,b]) allora il sistema ha n-m soluzioni in quanto n-m variabili sono arbitrarie. Risolvendo in tutti i

modi possibili ponendo n-m variabili (dette non di base) fra n pari a 0, si ottengono un numero di soluzioni di base pari al coefficiente binomiale

Partizionando la matrice A dei vincoli in matrice di base B e matrice non di base N e le variabili in variabili di base e non di base si ha:
Forma matriciale della PL con partizioni

Min z = cBTxB+ cNTxN +d BxB+NxN=b xB0 e xN0 Si ha che SOLUZIONI DI BASE: x N =0 , x B =B-1b => z= d + c B T B-1b . Di soluzioni di base ne esiste almeno una perch esiste almeno una matrice invertibile di base e si ottengono determinando la matrice base B scegliendo m colonne in mezzo a n colonne senza ripetizioni della matrice A. Tra queste soluzioni di base possiamo trovare:
Tipologie delle soluzioni di base

1. 2. 3. 4.

Soluzione di base AMMISSIBILE (xN=0 , xB=B-1b0) Soluzione di base DEGENERE (almeno una delle variabili di base = 0) Soluzione OTTIMA (cTx* cTx per ogni x soluzione ammissibile) Soluzioni di base ADIACENTI (che si ottengono mediante linserimento di una variabile non di base e luscita di una variabile di base, fuori base:

Forma canonica della PL


Un problema in forma standard si dice in forma canonica rispetto alla sequenza di indici di base S={s 1 s m } se valgono le seguenti condizioni: 1. A s = I m con A s sottomatrice di A in corrispondenza degli indici di base 2. c s = 0 con c s coefficienti di costo in corrispondenza degli indici di base 3. b0 con S insieme degli indici di base e G insieme degli indici non di base. Le variabili {x s1 , x s2 , , x sm } sono dette variabili di base. Si avr quindi che: 1. x si = b i con i {1,,m} 2. xj = 0 con j S 3. nella forma canonica: z = d + c s x S + c G x G ed essendo che c s = x G = 0 si ha che z = d che rappresenta una soluzione di base ammissibile iniziale per il metodo del simplesso.

Dalla forma standard alla forma canonica: Metodo delle due fasi
Se la forma standard non in forma canonica si introducono le variabili artificiali i in modo di soddisfare la prima condizione di canonicit (A s = I m ), cio in modo di costruire la matrice identit.

Problema artificiale

Min = i =1

ijxj + i = bi con 1 i m =1

funzione obiettivo (forma di inaccettabilit)

xj 0 e i 0 , soluzione di base ammissibile:

i = bi xj =0

Si avr quindi un nuovo problema di PL introducendo le variabili artificiali e una nuova funzione obiettivo da minimizzare. Questo problema ammette sempre una soluzione ottima. Inoltre se ott il valore ottimo della nuova funzione obiettivo, si ha ott =0 se e solo se le i =0 per ogni i, e se e solo se il problema originale in forma standard ammette soluzioni ammissibili. Il problema va quindi risolto attraverso due fasi del metodo del simplesso: FASE I: minimizzare 1. eliminare la forma di inaccettabilit 2. eliminare le variabili non di base in cui i coefficienti di costo nella tabella ottima della prima fase se sono positivi
Risultati ottenuti al termine della prima fase Tutte le variabili artificiali sono uscite dalla base

0 ott >0

Alcune varibili artificiali sono rimaste in base ma sono ugualmente nulle (caso degenere)

X=

Fase II: minimizzare la funzione obiettivo del problema in forma canonica

Matrice tableau e metodo del simplesso:


il problema di PL in forma canonica pu essere rappresentato in una tabella:
Matrice Tableau

-d b

cT A

Il metodo del simplesso consiste nel passare da una soluzione di base ammissibile ad una soluzione di base adiacente con valore di z non peggiore. Per un PL in forma canonica possono presentarsi i seguenti casi:
Teorema fondamentale del simplesso

a) cT 0 SOLUZIONE OTTIMA (di valore finito) b) ck < 0 , ahk 0 SOLUZIONE ILLIMITATA (inferiormente) c) ck < 0 , ahk > 0 OPERAZIONE DI PIVOT SU ahk 1. scelta della colonna k (velocit di convergenza) max |ck | con ck < 0
2.

scelta della riga h (ammissibilit) = min a i con aik > 0


b
ik

La condizione di ammissibilit individua la riga in cui fare loperazione di pivot:

Operazione di Pivot:
Loperazione di pivot in posizione (h,k) con h, k 0 definita quando a hk 0 e consiste nei seguenti passi:
Operazione di pivot

1. Si individuano tutti gli elementi della riga h per ahk 2. Si sommano opportuni multipli della riga h a tutte le altre righe in modo tale che tutti gli elementi della colonna k, ad eccezione di quello in posizione (h,k) diventino nulli Il significato di questa operazione risolvere lequazione h rispetto a x k usando tale equazione per eliminare x k dalle altre equazioni e dalla funzione obiettivo.
Operazione di pivot sul tableau

Pivot su ahk : -d b1 bi bh bm c1 a11 ah1 am1

xk entra in base, ck a1k aik ahk amk cp a1p ahp amp 0 1 0 0 1

xh esce dalla base 1 0 0 0 1

=M

dopo loperazione di pivot in a hk si ha: zs e x si

Risultati delloperazione di pivot sul tableau 1

zs = d xsi = bi

zs= d + ck

bh ahk

= d + ckxk

xk = 0 => xk 0 xh 0 => xh=0

xk entra in base xh esce dalla base

xsi = bi - aik a h = bi-aikxk


hk

Mentre in posizione (h,k) M diventa:


Risultati delloperazione di pivot sul tableau 2

M(1) =

a'ij a' hj

0 1

Colonna k riga h

ahj =

aij = aij

ahj a'hk

j = 0,1, ,n riga h-esima


aikahj ahk

i = 0,1, ,m; i h; j = 0,1, ,n

Applicando ad una problema di PL in forma canonica rispetto agli indici di vasi S una iterazione completa del metodo dela simplesso di ottiene ancora un problema di PL in forma canonica rispetto agli indici di base S

(che differisce da S per un solo indice) equivalente al precedente ed alla soluzione di base corrisponde un calore della funzione obiettivo minore o uguale al precedente. Si pu facilmente dimostrare che le propriet della forma canonica rimangono:
Propriet della forma canonica dopo loperazione di pivot

As = Im ck < 0 cs =0 bi 0

As = Im ck = ck - ckahk = 0
hk

Essendo a = min{ a aik > 0} Si ha che bi aik a 0


bh
hk

cs =0 bi 0

Inoltre il nuovo problema ancora in forma canonica rispetto agli indici di base S e il valore della funzione obiettivo minore o uguale al precedente -d = -d - ck
bh ahk

bi

bh

hk

hk

-d => d d => zS zS

Problema della convergenza del simplesso: teoremi


1. sia M la matrice associata ad una problema si PL in forma canonica rispetto agli indici di base S: se attraverso lapplicazione del metodo del simplesso si ottiene una matrice M in forma canonica rispetto agli stessi indici di base allora M=M 2. dato un PL in forma canonica, se ad ogni iterazione del simplesso la funzione obiettivo decresce strettamente, dopo una numero finito di iterazioni si presenta una selle seguenti alternative: a. la soluzione di base ottima b. la funzione obiettivo illimitata inferiormente 3. se nella tabella ottima M* esiste un indice non di base k tale che c k =0 in corrispondenza di una variabile non di base x k , allora possibile introdurre x k nella base al posto di unaltra variabile di base. Il risultato di tale iterazione ancora una soluzione ottima con lo stesso z* NB: ogni combinazione convessa di soluzioni ottime ottima

Esempio:
Esempio di problema di programmazione lineare: forma generale Trasformazione in forma standard

min z = -x2 1. x1+x2 1 2. x1+x2 2 3. x1-x2 1 4. x1-x2 -1 x1, x2 0

Il problema non in forma standard, occorre inserire una variabile ausiliaria non negativa per ogni vincolo: o Variabile di SURPUS per i vincoli 1 e 4 o Variabile di SLACK per i vincoli 2 e 3

Esempio di problema di programmazione lineare: forma standard

Trasformazione in forma canonica

min z = -x2 1. x1+x2 x3 2. x1+x2 +x4 3. x1-x2 +x5 4. -x1+x2 -x6 x1, x2 , x3 , x4 , x5 , x6 0

=1 =2 =1 =1

Il problema non in forma canonica, in quanto As Im, e b non tutto positivo. Occorre applicare il metodo delle due fasi e inserire una variabile artificiale per soddisfare la condizione di canonicit. Inoltre si cambia di segno il vincolo 4 Si scrive poi la forma di inaccettabilit Min = i = 1 =1

Esempio di problema di programmazione lineare: forma canonica

Applicazione del metodo delle due fasi

min = 1- x1-x2+x3 min = -x2 5. x1+x2 x3 + 1 = 1 6. x1+x2 +x4 =2 7. x1-x2 +x5 =1 -x6 =1 8. -x1+x2 x1, x2 , x3 , x4 , x5 , x6 , 1 0
Esempio di problema di programmazione lineare: metodo del simplesso: fase I

Ora necessario minimizzare per eliminare la forma di inaccettabilit Rappresento il problema sulla matrice tableau e inizio le iterazioni del metodo del simplesso

Metodo del simplesso fase I

z M=

-1 0 1 2 1 1

x1 x2 x3 x4 x5 x6 x7
-1 0 1 1 1 -1 -1 1 1 -1 1 1 0 0 0 0 -1 0 -1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0

Ora necessario minimizzare per eliminare la forma di inaccettabilit Rappresento il problema sulla matrice tableau e inizio le iterazioni del metodo del simplesso

Esempio di problema di programmazione lineare: metodo del simplesso: fase I

Metodo del simplesso fase I

Lelemento di pivot in questo caso a11 = 1 z M=


-1 0 1 2 1 1

x1 x2 x3 x4 x5 x6 x7
-1 0 1 1 1 -1 -1 -1 1 1 -1 1 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0

S{4,5,6,7}

G{1,2,3}

x1 entra in base, x7 esce dalla base = 0, *ott = -1 x1= 0 , x2= 0 , x3= 0 , x4= 2 , x5= 1 , x6= 1 , x7= 1

Esempio di problema di programmazione lineare: metodo del simplesso: fase I - eliminazione forma di inaccettabilit

Metodo del simplesso fase I eliminazione forma di inaccettabilit

z M =
(1)

0 0 1 0 0 2

x1 x2 x3 x4 x5 x6 x7
0 0 1 0 0 0 0 0 0 -1 1 1 -1 0 0 0 -1 0 1 -1 -1 -1 -1 1 0 -2 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

Se *ott = 0 allora esistono soluzioni di base ammissibili Tutte le variabili artificiali sono usciti dalla base Elimino la forma di inaccettabilit Posso passare alla fase II e applicare al problema nuovamente il metodo del simplesso per minimizzare z

Esempio di problema di programmazione lineare: metodo del simplesso: fase II - minimizzazione di z

Metodo del simplesso fase II minimizzazione di z

z M(1)=

0 1 1 0 2

x1 x2 x3 x4 x5 x6
0 0 0 0 -1 1 0 -2 2 0 0 1 0 0 0 0 1 0 0 0 0 1 1 -1 1 1 -1 0 0 0

Lelemento di pivot in questo caso a12 = 1 S{4,5,6,1} e G{2,3} x2 entra in base, x1 esce dalla base =0 x1= 1 , x2= 0 , x3= 0 , x4= 1 , x5= 0 , x6= 2 , x7= 0

Esempio di problema di programmazione lineare: metodo del simplesso: fase II - minimizzazione di z

Metodo del simplesso fase II minimizzazione di z

z M(2)=

1 1 1 2 0

x1 x2 x3 x4 x5 x6
1 1 0 2 -2 0 1 0 0 0 -1 -1 1 -1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

Lelemento di pivot in questo caso a43 = 1 S{4,5,6,2} e G{1,3} x3 entra in base, x4 esce dalla base =1 x1= 0 , x2= 1 , x3= 0 , x4= 1 , x5= 2 , x6= 0

Esempio di problema di programmazione lineare: metodo del simplesso: fase II - minimizzazione di z

Metodo del simplesso fase II minimizzazione di z

z M(3)=

1 1 1 2 0

x1 x2 x3 x4 x5 x6
-1 -1 2 0 -2 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 -1 1 1

Lelemento di pivot in questo caso a21 = 2 S{4,5,3,2} e G{1,6} x1 entra in base, x4 esce dalla base =1 x1= 0 , x2= 1 , x3= 0 , x4= 1 , x5= 2 , x6= 0

M(3)=

Esempio di problema di programmazione lineare: metodo del simplesso: fase II soluzione ottima

Metodo del simplesso fase II soluzione ottima

z M =
(4)

3/2 3/2 1/2 2 1

x1 x2 x3 x4
0 0 0 0 1 0 0 1 0 0 0 0 0 0 1

1/2

x5 x6
0 0 0 1 0

ck 0 per ogni k : tabella ottima SIV{1,5,3,2} e GIV{4,6} Soluzione ottima: o = 3/2 => z* = -3/2 = - o x1*= 1/2 , x2*= 3/2 , x3*= 1 , x4*= 0 , x5*= 2 , x6*= 0

1/2

1/2 1/2 0 1

1/2 -1/2 1 2