Elaborato di Teoria dello Sviluppo dei Processi Chimici Algoritmo del simplesso Studenti: Amabile Roberto 564/18 Donatantonio Riccardo 564/19 Farace Antonio 564/28 Perfetto Alfonso 564/45 Docente: Prof. Michele Miccio Struttura del lavoro Il lavoro si compone delle seguenti fasi: 1. Realizzazione di un software in ambiente LabView 7.0™ 2. Approfondimento di argomenti trattati durante il corso inerenti la programmazione lineare 3. Svolgimento di problemi di programmazione lineare risolti mediante l’algoritmo del simplesso al fine di verificare il corretto funzionamento del SimpLab 1.0 Problema generale La semplicità nel calcolo della soluzione di base per il caso di tutti vincoli ≤ è legata alla presenza di un minore unitario dei coefficienti delle variabili aggiunte. Es. 2 x1 5 x2 6 x3 x4 x1 2 x2 x3 8 x5 5 Minore unitario Nel caso generale la presenza di questo minore unitario dei coefficienti non è garantita e in verità quasi mai verificata. Variabili artificiali Vista la facilità di calcolo della b.a. nel caso in cui vi sia un minore unitario dei coefficienti si è arrivati all’idea di costruire quest’ultimo, nel caso generale, mediante l’aggiunta di altre variabili dette variabili artificiali. Es. Forma canonica 2 x1 5 x2 6 x3 8 2 x1 5 x2 6 x3 slack x4 8 x1 2 x2 x3 5 x1 2 x2 x3 5 3 x1 2 x2 4 x3 9 3x1 2 x2 4 x3 x6 9 surplus 2 x1 5 x2 6 x3 x4 x1 2 x2 x3 3x1 2 x2 4 x3 x6 x5 8 5 x7 9 artificiali Minore unitario Problema artificiale L’aggiunta delle variabili artificiali ovviamente non è cosa “lecita”; questo infatti trasforma il nostro problema in un nuovo problema che ha delle variabili in più rispetto a quello di partenza. Di contro però va detto che di questo nuovo problema noi riusciamo a conoscere banalmente la prima soluzione di base ammissibile, come fatto per il caso di vincoli tutti di tipo ≤, e per questo definendo opportunamente una nuova funzione obiettivo potremmo riuscire ad arrivare alla soluzione b.a. del problema originario ottimizzando questo nuovo obiettivo. La nuova funzione obiettivo che si definisce prende il nome di Forma d’Inammissibilità. Forma d’Inammissibilità La Forma d’Inammissibilità è definita come: a w X n j j 1 n=numero di variabili del problema originario a=numero di variabili artificiali Xn+j=variabili artificiali Questa funzione va minimizzata tenendo in conto che: •Se min w=0: l’n-pla X0 in cui la w è minima è una soluzione basica ammissibile per la funzione obiettivo del problema originario. Questo perchè si possono escludere tutte le variabili artificiali poiché la loro somma è nulla •Se min w>0: non esiste una soluzione basica ammissibile per il problema originario Il Tableau La procedura di calcolo che porta alla determinazione del valore di ottimo della funzione obiettivo si basa su un processo iterativo che parte con la costruzione di una matrice detta Tableau e di volta in volta continua con l’aggiornamento di quest’ultima fino al raggiungimento della soluzione ottima. La costruzione del Tableau parte dal problema in forma canonica con l’aggiunta di variabili artificiali. Riassumendo, quindi, in base al tipo di vincolo devo aggiungere al problema delle variabili: •Slack: per vincoli di tipo •Artificiali: per vincoli di tipo = •Artificiali e Surplus: per vincoli di tipo Costruzione del Tableau Il Tableau assume la forma: Xa Xb Variabili surplus Variabili decisionali X1 X2 X3 Xn a11 a21 a12 a22 a13 a23 a1n a2n Xn+1 1 0 0 1 Xn+j Xn+j+1 0 0 0 -1 0 0 1 0 0 0 1 0 b1 b2 Xq am1 am2 am3 amn 0 0 (-z) c1 c2 c3 cn 0 0 0 0 (-w) d1 d2 d3 dn 0 0 1 dj Coefficienti di costo Matrice dei tassi di assorbimento Minore unitario delle variabili slack Coefficienti di costo modificati più quelle artificiali Variabili in base bm Risorse Condizione di ottimalità Resta ora da stabilire quando il ciclo del simplesso deve arrestarsi, cioè come verificare il raggiungimento della soluzione ottima. A questo scopo notiamo che: ( z ) cj j 1;m X j Con m = numero totale di variabili. Da questo è evidente che, durante le iterazioni del simplesso, nel caso in cui tutti i coefficienti di costo sono positivi/negativi siamo in una condizione di minimo/massimo della F.O. La condizione di ottimo quindi sarà, per il problema a minimizzare: cj 0 j 1;m Metodo delle due fasi Rendere i termini noti non negativi Aggiungere variabili slack , =, Vincoli di tipo STOP: soluzione non limitata Aggiungere variabili slack e artificiali = Scelta riga pivot r: br/ars=min bi/ais Aggiungere variabili artificiali NO SÌ Tutti gli ais=0 Pivoting sul perno ars Aggiungere forma di inammissibilità Scelta colonna pivot s: cs=min cj Scelta colonna pivot s: ds=min dj START fase 2 NO START fase 1 Tutti i dj0 SÌ NO Tutti i cj0 SÌ SÌ w=0 NO STOP: nessuna soluzione ammissibile Eliminare colonne con dj >0. Eliminare la forma di inammissibilità cj> 0 NO STOP: soluzione basica ammissibile minima STOP: infinite soluzioni Metodo dei grossi pesi Si procede aggiungendo le variabili slack, surplus o artificiali in base al tipo di vincoli. Si introducono dei coefficienti di costo per le variabili artificiali detti penalità in modo da ottenere: a z C X P X n j T j 1 Con o.d.g.(P)>>o.d.g.(ci) •-P se il problema è a massimizzare •+P se il problema è a minimizzare Se il problema è a minimizzare le variabili artificiali saranno le prime ad uscire dalla base (per il “grosso peso” di P) e non vi rientreranno più.