You are on page 1of 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

e in cui le variabili siano positive o nulle Forma generale: Un problema di programmazione lineare. x1-x2 ≤1 4. un triangolo in due dimensioni.L'algoritmo del simplesso è un metodo numerico per risolvere problemi di programmazione lineare. sotto opportune ipotesi. 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. che è. Ricondursi ad un sistema di equazioni lineari introducendo nuove variabili 3. Questo algoritmo fa uso del concetto di simplesso. con vincoli di uguaglianza o disuguaglianza e variabili non vincolate in segno. cioè un politopo di N+1 vertici in N dimensioni: un segmento di retta in una dimensione. un tetraedro in tre dimensioni. un vertice del poliedro. 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. nel caso il problema abbia una soluzione ottimale finita. 2. x1-x2 ≥ -1 x1. x1+x2 ≤2 3. solitamente non si presenta nella forma standard. dette vincoli. x1+x2 ≥ 1 2. 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. Esempio di problema di programmazione lineare in forma generale min z = -x2 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). ma bensì in una forma definita generale: un problema o di massimo o di minimo. 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. Durante le iterazioni dell’algoritmo. L'algoritmo del simplesso è in grado di determinare di che tipo di poliedro si tratta e trova la soluzione ottima. 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”) .

… xn≥0 Possono essere espressi come un sistema si equazioni lineari a11x1 + a12x2 + … + a1pxp ≥ b1 a21x1 + a22x2 + … + a2pxp ≥ b2 … … am1x1 + am2x2 + … + ampxp ≥ bm x1≥0 . se il rango(A) = rango([A.xp+2 … … … . mentre le variabili introdotte nel caso di vincoli di maggiore uguale si dicono variabili “surplus” che rappresentano un eventuale sovrapproduzione. xp+2≥0 . … xn≥0 . xp+2≥0 . … . x1≥0 .b]) allora il sistema ha ∞n-m soluzioni in quanto n-m variabili sono arbitrarie. 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. … xn≥0 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≥0 . 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 x1≥0 . xp+1≥0 . … xn≥0 . x1≥0 . x1≥0 .Vincoli: disequazioni di minore uguale Vincoli: disequazioni di maggiore uguale a11x1 + a12x2 + … + a1pxp ≤ b1 a21x1 + a22x2 + … + a2pxp ≤ b2 … … am1x1 + am2x2 + … + ampxp ≤ bm x1≥0 . xp+m ≥ 0 x1≥0 .xp+1 a21x1 + a22x2 + … + a2pxp . x1≥0 . Risolvendo in tutti i .xp+m am1x1 + am2x2 + … + ampxp = b1 = b2 … = bm x1≥0 . x1≥0 . … . … xn≥0 Forma matriciale della PL Min z = cTx+d Ax=b x≥0 È un sistema di m equazioni in n incognite e può essere rappresentato in forma matriciale .

Soluzione di base AMMISSIBILE (xN=0 . 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. x s2 . 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 ). 2. 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. 3. x sm } sono dette variabili di base. c s = 0 con c s coefficienti di costo in corrispondenza degli indici di base 3. … . 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 xB≥0 e xN≥0 Si ha che SOLUZIONI DI BASE: x N =0 . 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. b≥0 con S insieme degli indici di base e G insieme degli indici non di base. 4. xB=B-1b≥0) 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 l’inserimento di una variabile non di base e l’uscita di una variabile di base. Le variabili {x s1 . Tra queste soluzioni di base possiamo trovare: Tipologie delle soluzioni di base 1.m} 2. A s = I m con A s sottomatrice di A in corrispondenza degli indici di base 2. x si = b i con i ∈ {1. .modi possibili ponendo n-m variabili (dette “non di base”) fra n pari a 0. xj = 0 con j∉ S 3. x B =B-1b => z= d + c B T B-1b .…. cioè in modo di costruire la matrice identità. Si avrà quindi che: 1.

scelta della colonna k (velocità di convergenza) max |ck | con ck < 0 2. ahk ≤ 0 SOLUZIONE ILLIMITATA (inferiormente) c) ck < 0 . 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. ahk > 0 OPERAZIONE DI PIVOT SU ahk 1. si ha ρ ott =0 se e solo se le α i =0 per ogni i. 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. Questo problema ammette sempre una soluzione ottima. scelta della riga h (ammissibilità) = min𝑖∈𝐼 a i con aik > 0 b ik . 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. 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 .Problema artificiale Min ρ =∑𝑚 αi 𝑖=1 ∑𝑚 αijxj + αi = bi con 1 ≤ i ≤ m 𝑗=1 funzione obiettivo (forma di inaccettabilità) xj ≥ 0 e αi ≥ 0 . Inoltre se ρ ott è il valore ottimo della nuova funzione obiettivo.

aik a h = bi-aikxk hk b Mentre in posizione (h. … .La condizione di ammissibilità individua la riga in cui fare l’operazione di pivot: Operazione di Pivot: L’operazione di pivot in posizione (h. … .k) diventino nulli Il significato di questa operazione è risolvere l’equazione h rispetto a x k usando tale equazione per eliminare x k dalle altre equazioni e dalla funzione obiettivo.n riga h-esima aikahj ahk i = 0. ad eccezione di quello in posizione (h.1. Si sommano opportuni multipli della riga h a tutte le altre righe in modo tale che tutti gli elementi della colonna k.k) M diventa: Risultati dell’operazione di pivot sul tableau 2 M(1) = � a'ij a' hj 0 � 1 Colonna k riga h a’hj = a’ij = aij − ahj a'hk j = 0. … . Si individuano tutti gli elementi della riga h per ahk 2.1.k) con h.m. i ≠ h. j = 0.1. 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 l’operazione di pivot in a hk si ha: zs’ e x’ si Risultati dell’operazione 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 x’si = bi . Operazione di pivot sul tableau Pivot su ahk : -d b1 bi bh … bm c1 a11 ah1 am1 … … … xk entra in base.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’ . k 0 è definita quando a hk ≠ 0 e consiste nei seguenti passi: Operazione di pivot 1.

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. la soluzione di base è ottima b. 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 . se ad ogni iterazione del simplesso la funzione obiettivo decresce strettamente. x1-x2 ≤1 4.(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. dopo una numero finito di iterazioni si presenta una selle seguenti alternative: a. x2 ≥ 0 • Il problema non è in forma standard. Si può facilmente dimostrare che le proprietà della forma canonica rimangono: Proprietà della forma canonica dopo l’operazione di pivot As = Im ck < 0 cs =0 bi ≥ 0 As’ = Im c’k = ck . sia M la matrice associata ad una problema si PL in forma canonica rispetto agli indici di base S: se attraverso l’applicazione del metodo del simplesso si ottiene una matrice M’ in forma canonica rispetto agli stessi indici di base allora M=M’ 2. x1+x2 ≥ 1 2.ckahk = 0 hk a Essendo a = min{ a ∶ aik > 0} Si ha che b’i – aik a ≥ 0 bh hk c’s =0 b’i ≥ 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 . x1+x2 ≤2 3. la funzione obiettivo è illimitata inferiormente 3. dato un PL in forma canonica.ck bh ahk 𝑖∈𝐼 bi bh hk hk ≥ -d => d’ ≤ d => zS’ ≤ zS Problema della convergenza del simplesso: teoremi 1. 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 . x1-x2 ≥ -1 x1. allora è possibile introdurre x k nella base al posto di un’altra variabile di base.

• Occorre applicare il metodo delle due fasi e inserire una variabile artificiale per soddisfare la condizione di canonicità.3} • x1 entra in base. x1+x2 –x3 + α1 = 1 6. x3 . x1+x2 +x4 3. x5 . x4 . -x1+x2 x1. x4= 2 . in quanto As ≠ Im. • 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 +x5 4. x1+x2 +x4 =2 7.7} e G≡{1. x1-x2 +x5 =1 -x6 =1 8. x3 . ρ*ott = -1 • x1= 0 . α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 • L’elemento 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.x1-x2+x3 min = -x2 5. x2= 0 . x6= 1 . x6 ≥ 0 =1 =2 =1 =1 • Il problema non è in forma canonica. x7 esce dalla base • ẑ = 0. x7= 1 . x3= 0 . x5= 1 . x2 . x6 . x5 .2. x4 .6. x1+x2 –x3 2.5. e b non è tutto positivo. -x1+x2 -x6 x1. x2 .Esempio di problema di programmazione lineare: forma standard Trasformazione in forma canonica min z = -x2 1.

x5= 0 . x3= 0 . x4 esce dalla base •ẑ=1 • x1= 0 .6. x1 esce dalla base •ẑ=0 • x1= 1 . x4 esce dalla base •ẑ=1 • x1= 0 .5. x4= 1 . x6= 2 .2} e G’’≡{1. x2= 0 .6} • x1 entra in base.5.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 . x3= 0 . x6= 0 Esempio di problema di programmazione lineare: metodo del simplesso: fase II .Esempio di problema di programmazione lineare: metodo del simplesso: fase I . x5= 2 .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 • L’elemento di pivot in questo caso è a43 = 1 • S’’≡{4.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 • L’elemento di pivot in questo caso è a12 = 1 • S’≡{4. x2= 1 . x4= 1 . x3= 0 . x5= 2 .3} • x3 entra in base.5. x7= 0 Esempio di problema di programmazione lineare: metodo del simplesso: fase II . x4= 1 .3} • x2 entra in base.2} e G’’’≡{1.3.1} e G’≡{2. x6= 0 M(3)= .6. x2= 1 .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 • L’elemento di pivot in questo caso è a21 = 2 • S’’’≡{4.

2} e GIV≡{4. x4*= 0 . x6*= 0 1/2 1/2 1/2 0 1 1/2 -1/2 1 2 .5.3. x5*= 2 . x3*= 1 .ẑ o x1*= 1/2 .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.6} • Soluzione ottima: o ẑ = 3/2 => z* = -3/2 = . x2*= 3/2 .