Lezioni di Ricerca Operativa Corso di Laurea in Informatica ed Informatica Applicata Università di Salerno Lezione n° 10: 6-7 Aprile 2009 Algoritmo del Simplesso: - Passi fondamentali - Esempio Anno accademico 2008/2009 Prof. Cerulli – Dott.ssa Gentili Scelta della variabile entrante. Quando la condizione di ottimalità non è verificata è sempre possibile scegliere una variabile fuori base xk da portare in base per migliorare l’obiettivo. Quando esistono più alternative la scelta non preclude il raggiungimento della soluzione ottima, ma può al peggio aumentare il tempo necessario per la sua ricerca. Scelta della variabile entrante. Il metodo del gradiente Sceglie la variabile che localmente fa aumentare più rapidamente l’obiettivo: z k ck max z j c j jN Scelta della variabile uscente. Determinata la variabile fuori base xk da portare in base, si deve scegliere la variabile uscente. Esistono due situazioni alternative: a) yrk>0 per almeno un r Allora si può aggiornare la base come visto. Scelta della variabile uscente. Determinata la variabile fuori base xk da portare in base, si deve scegliere la variabile uscente. Esistono due situazioni alternative: b) yik0 "i=1,...m Allora la soluzione del problema è illimitata (non esiste ottimo finito). In questo caso facendo aumentare xk il valore di nessuna variabile di base diminuisce: z z 0 ( z k ck ) xk z 0 Per qualsiasi valore di xk Nota Se per una variabile di base i si ha che yik>0 e br=0 (soluzione degenere), xk entra in base con valore nullo. In questo caso la soluzione non cambia, ed in particolare rimane degenere. Per questa ragione la ricerca della soluzione potrebbe rimanere bloccata generando sempre la medesima soluzione (cycling). Il cycling è piuttosto raro e comunque esistono strategie per evitalo. L’algoritmo del Simplesso 1. Inizializzazione. Determinare una soluzione di base ammissibile. 2. Test di ottimalità. Se zj-cj≤0 "jN allora la soluzione corrente è ottima e l’algoritmo termina. Altrimenti andare al passo 3. 3. Scelta della variabile entrante in base. Scegliere una variabile fuori base xk tale che zk-ck>0 ed andare al passo 4. L’algoritmo del Simplesso 4. Test di illimitatezza: Se yik0 "i=1,...m, allora la soluzione del problema è illimitata (non esiste ottimo finito), e l’algoritmo termina. Altrimenti vai al Passo 5. 5. Scelta della variabile uscente dalla base: Test dei minimi Rapporti Scegliere la variabile xBr tale che b j br xk min : y jk 0 jN y y rk jk L’algoritmo del Simplesso 6. Aggiornamento della base: Aggiornare gli indici delle variabili in base (B) e quelli delle variabili fuori base (N). Andare al passo 2. Esempio: Applicazione del Simplesso min z x1 2 x2 2 x1 x2 1 x1 x2 2 x1 x2 5 x0 2 1 1 0 0 A - 1 1 0 1 0 1 1 0 0 1 min z x1 2 x2 2 x1 x2 x3 1 x1 x2 x4 2 x1 x2 x5 5 x 0 x3 0, x4 0, x5 0 B 3,4,5 N 1,2 Esempio: Applicazione del Simplesso (Cont.) 1 0 0 AB 0 1 0 0 0 1 x B A B1 b x B Ib x B b x3 1 0 0 1 x A-1 b 0 1 0 2 B 4 x5 0 0 1 5 z0 c B AB1 b x3 1, x4 2, x5 5 1 z 0 0 0 0 2 0 5 Esempio: Applicazione del Simplesso (Cont.) Test di Ottimalità: calcolo di zj – cj per j N B 3,4,5 N 1,2 ( z j c j ) ( c B AB1 a j c j ) ( c B y j c j ) 2 ( z1 c1 ) 0 0 0 I 1 (1) 0 1 1 1 1 ( z 2 c2 ) 0 0 0 I 1 (2) 0 2 2 1 "j N Esempio: Applicazione del Simplesso (Cont.) ( z 2 c2 ) max z j c j max ( z1 c1 ), ( z 2 c2 ) jN j1, 2 ( z 2 c2 ) max 1,2 2 x2 entra in base Quale variabile esce dalla base? Regola del minimo rapporto: b j br xk min : y jk 0 jB y yrk jk 1 B yj A aj 1 B b A b Esempio: Applicazione del Simplesso (Cont.) y2 A a -1 B 2 1 1 I 1 1 1 1 x3 b1 1 x b 2 4 2 x5 b 3 5 b j b1 1 2 5 x2 min : y jk 0 x2 1 min , , jB y y12 1 1 1 jk x3 esce dalla base; x2 entra in base con valore 1 Nuova base: B 2,4,5 N 1,3 Esempio: Applicazione del Simplesso (Cont.) 1 0 0 AB 1 1 0 1 0 1 Calcoliamo 1 B xB A b 1 B A 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 - 1 1 0 A 1 - 1 1 0 B 1 0 1 0 0 1 0 0 1 - 1 0 1 - 1 0 1 Esempio: Applicazione del Simplesso (Cont.) 1 B xB A b x2 1 0 0 1 1 x A 1 b - 1 1 0 2 1 B 4 x5 - 1 0 1 5 4 z0 c B b c B AB1 b 1 0 0 1 1 z0 - 2 0 0 - 1 1 0 2 - 2 0 0 1 2 - 1 0 1 5 4 Esempio: Applicazione del Simplesso (Cont.) Test di Ottimalità: calcolo di zj – cj per j N B 2,4,5 N 1,3 ( z j c j ) ( c B AB1 a j c j ) ( c B y j c j ) "j N 1 0 0 2 2 ( z1 c1 ) - 2 0 0 - 1 1 0 1 (1) - 2 0 0 1 1 5 - 1 0 1 1 3 1 0 0 1 1 ( z 3 c3 ) - 2 0 0 - 1 1 0 0 0 - 2 0 0 - 1 0 2 - 1 0 1 0 1 Esempio: Applicazione del Simplesso (Cont.) zj – cj > 0 per j=1 x1 entra in base Quale variabile esce dalla base? Regola del minimo rapporto: b j br xk min : y jk 0 jB y yrk jk 1 B yj A aj 1 B b A b Esempio: Applicazione del Simplesso (Cont.) 1 0 0 y1 A-1B a1 -1 1 0 -1 0 1 -2 -2 -1 1 1 3 x 2 b1 1 x b 1 4 2 x5 b 3 4 b j b2 1 4 x1 min : y jk 0 x1 1 min , jB y y21 1 3 jk x4 esce dalla base; x1 entra in base con valore 1 Nuova base: B 1,2,5 N 3,4 Esempio: Applicazione del Simplesso (Cont.) - 2 1 0 AB - 1 1 0 1 1 1 1 B xB A b Calcoliamo 1 B A - 2 1 0 1 0 0 1 - 1 2 0 - 1 2 0 0 - 1 1 0 0 1 0 - 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 0 1 1 - 1 2 0 - 1 2 0 0 1 - 1 2 0 - 1 2 0 0 0 1 2 0 -1 2 1 0 0 1 0 -1 2 0 0 3 2 1 1 2 0 1 0 3 2 1 1 2 0 1 Esempio: Applicazione del Simplesso (Cont.) - 2 1 0 AB - 1 1 0 1 1 1 1 B xB A b Calcoliamo 1 B A 1 0 0 - 1 1 0 -1 1 0 0 1 0 - 1 2 0 A 1 - 1 2 0 B 0 0 1 2 - 3 1 2 - 3 1 Esempio: Applicazione del Simplesso (Cont.) 1 B xB A b x1 - 1 1 0 1 1 x A1 b - 1 2 0 2 3 B 2 x5 2 - 3 1 5 1 z0 c B b c B AB1 b - 1 1 0 1 1 z0 - 1 - 2 0 - 1 2 0 2 - 1 - 2 0 3 7 2 - 3 1 5 1 Esempio: Applicazione del Simplesso (Cont.) Test di Ottimalità: calcolo di zj – cj per j N B 1,2,5 N 3,4 ( z j c j ) ( c B AB1 a j c j ) ( c B y j c j ) "j N - 1 1 0 1 1 ( z3 c3 ) - 1 - 2 0 - 1 2 0 0 0 - 1 - 2 0 1 0 3 2 - 3 1 0 2 - 1 1 0 0 1 ( z4 c4 ) - 1 - 2 0 - 1 2 0 1 0 - 1 - 2 0 2 0 5 2 - 3 1 0 3 Esempio: Applicazione del Simplesso (Cont.) zj – cj > 0 per j=3 x3 entra in base Quale variabile esce dalla base? Regola del minimo rapporto: b j br xk min : y jk 0 jB y yrk jk 1 B yj A aj 1 B bA b Esempio: Applicazione del Simplesso (Cont.) - 1 1 0 1 - 1 y3 A -B1a 1 - 1 2 0 0 - 1 2 - 3 1 0 2 x 2 b1 1 x b 3 1 2 x5 b 3 1 b j b3 1 1 x3 min : y jk 0 x3 min jB y33 2 2 y jk x5 esce dalla base; x3 entra in base con valore 1/2 Nuova base: B 1,2,3 N 4,5 Esempio: Applicazione del Simplesso (Cont.) - 2 1 1 AB - 1 1 0 1 1 0 1 B xB A b Calcoliamo 1 B A - 2 1 1 1 0 0 1 - 1 2 - 1 2 - 1 2 0 0 - 1 1 0 0 1 0 -1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 - 1 2 - 1 2 - 1 2 0 0 1 - 1 2 0 - 1 2 0 0 0 1 2 -1 2 -1 2 1 0 0 1 -1 -1 2 0 0 3 2 1 2 1 2 0 1 0 3 2 1 2 1 2 0 1 Esempio: Applicazione del Simplesso (Cont.) - 2 1 1 AB - 1 1 0 1 1 0 1 B xB A b Calcoliamo 1 B A 1 0 - 1 - 1 1 0 1 0 - 1 - 1 1 0 0 1 - 1 - 1 2 0 0 1 - 1 - 1 2 0 0 0 2 2 - 3 1 0 0 1 1 - 3 2 1 2 1 0 0 0 - 1 2 1 2 0 - 1 2 1 2 0 1 0 0 1 2 1 2 A 1 0 1 2 1 2 B 0 0 1 1 - 3 2 1 2 1 - 3 2 1 2 Esempio: Applicazione del Simplesso (Cont.) 1 B xB A b x2 0 - 1 2 1 2 1 3 2 x A 1 b 0 1 2 1 2 2 7 2 B 1 x3 1 - 3 2 1 2 5 1 2 z0 c B b c B AB1 b 0 - 1 2 1 2 1 3 2 17 z0 - 1 - 2 0 0 1 2 1 2 2 - 1 - 2 0 7 2 2 1 - 3 2 1 2 5 1 2 Esempio: Applicazione del Simplesso (Cont.) Test di Ottimalità: calcolo di zj – cj per j N B 1,2,3 N 4,5 ( z j c j ) ( c B AB1 a j c j ) ( c B y j c j ) "j N 0 - 1 2 1 2 0 12 1 ( z4 c4 ) - 1 - 2 0 0 1 2 1 2 1 0 - 1 - 2 0 1 2 0 2 1 - 3 2 1 2 0 - 3 2 0 - 1 2 1 2 0 1 2 3 ( z5 c5 ) - 1 - 2 0 0 1 2 1 2 0 0 - 1 - 2 0 1 2 0 2 1 - 3 2 1 2 1 1 2