LA PROGRAMMAZIONE LINEARE (p.l.) La programmazione lineare è quella parte della programmazione matematica che concerne l impostazione e la soluzione di problemi di ottimo vincolato riconducibili alla ricerca del massimo o del minimo di una funzione lineare definita su un dominio descritto mediante un sistema di equazioni e/o disequazioni anche esse lineari. Molti problemi di ottimizzazione non lineare, possono essere risolti, in maniera soddisfacente, accettando approssimazioni lineari. La maggior parte degli studi di base nel campo della programmazione lineare furono sviluppati nel decennio 935-945 da F. L. Hitchcock, L. Kantorovich, T. C. Koopmans e G. B. Dantzig, traendo spunto dalle teorie economiche sviluppate nel corso degli anni trenta da J. Von Neumann e W. Leontief.
Tra il 947 ed il 948 Dantzig, operando in un gruppo di ricerca, costituito dalla U.S. Air Force su problemi di allocazione ottima di risorse [SCOP - Scientific Computation of Optimum Programs], pervenne ad una formulazione generale del modello in p.l. e sviluppò l'algoritmo del simplesso Sul finire degli anni 70 il matematico russo L. G. Khachian ha proposto un metodo alternativo, per la risoluzione di problemi p.l., detto dell ellissoide caratterizzato, dal punto di vista teorico (ma solo dal punto di vista teorico), da una migliore efficienza computazionale. Un algoritmo polinomiale, in alcuni casi competitivo con il simplesso, fondato su concetti tipici della programmazione non lineare è stato proposto, verso la metà degli anni 80, da N. Karmarkar. Nel corpo della p.l. può essere utile evidenziare due classi di problemi: i problemi di miing i problemi di flusso su rete
3 UN PROBLEMA DI MIXING DI PRODUZIONE Una fabbrica vuole mettere in produzione due articoli, P e P. I due prodotti richiedono lavorazioni su due differenti tipi di macchine, MA ed MB, senza vincoli di sequenza. Prodotto P Prodotto P Macchina MA ' ' Macchina MB 3' ' Tempi unitari medi di lavorazione prezzo P : E = Euro.5 prezzo P : E = Euro.0 Prezzi di vendita unitari praticabili Si vuole determinare quanto produrre, mensilmente, di P e P per ottenere un ricavo totale massimo (miing ottimo di produzione).
4 Si indichi con: = numero di unità del prodotto P = numero di unità del prodotto P z = valore del ricavo totale [ ed sono le "variabili di decisione"] La funzione obiettivo la vendita di unità di P assicura un ricavo pari a.5 Euro la vendita di unità di P assicura un ricavo pari a.0 Euro Ricavo complessivo: z =.5 +.0 funzione obiettivo del problema. z =.5 +.0 Ma!
5 I vincoli I valori massimi dei tempi macchina fissano le risorse disponibili per il processo di lavorazione e limitano, di conseguenza, le quantità complessive dei due prodotti che è possibile realizzare. Per le macchine MA: + 8000 Per le macchine MB: 3 + 9000 Vincoli di fisica realizzabilità: 0 0
6 Modello p.l. del miing ottimo di produzione: z =.5 +.0 Ma! s. a + 8000 3 + 9000 0 0 EVENTUALI ALTRI VINCOLI sulla domanda: D D [D e D domande ma dei due prodotti] di magazzino: 0.05 + 0.03 000 [V = ingombro unitario di P, con V = ingombro unitario di P; V = volume disponibile in magazzino]
7 ALCUNE DEFINIZIONI Modello generale p.l. b vettore dei termini noti del sistema dei vincoli A matrice dei coefficienti aij del sistema c vettore dei coefficienti della funzione obiettivo vettore delle variabili decisionali z = c T Ma! [Min] s.a A [::] b 0 vettore delle variabili decisionali [o strutturali, o di controllo] del problema c vettore dei coefficienti di costo (o di profitto) z funzione obiettivo [funzione economica] b vettore dei termini noti [o delle risorse] A matrice dei tassi di assorbimento [coefficienti tecnologici] A :: b vincoli del problema 0 vincoli di non negatività [fisica realizzabilità]
8 IPOTESI ALLA BASE DEL MODELLO p.l. Proporzionalità: se aij [cj] è il contributo al primo membro della i-esima relazione vincolare [alla funzione obiettivo] da parte dell'impiego j assunto unitario, tale contributo dovrà essere aijj [cjj] se l'impiego j assume il valore j. Additività: i diversi impieghi non interferiscano tra loro. Se ai,..., ainn [c,..., cnn] sono i contributi nella i-esima relazione vincolare [nella funzione obiettivo] degli impieghi considerati separatamente, il contributo complessivo deve risultare pari alla somma dei singoli contributi. Divisibilità: le componenti del vettore possono assumere qualsiasi valore reale purché nel rispetto dei vincoli. Se le variabili, tutte o in parte, sono vincolate ad assumere valori interi, l'ipotesi di divisibilità non sussiste ed il problema non è, quindi, di programmazione lineare. Mancanza di aleatorietà nel fenomeno. Questa ipotesi è comune a tutti i modelli deterministici
9 ANALISI GRAFICA Modello del problema di miing [i termini noti delle relazioni vincolari sono divisi per 000]: z =.5 +.0 Ma! s. a + 8 3 + 9, 0 Riportando le relazioni sul piano cartesiano di coordinate ed si ottiene:
0 L'area scurita (frontiera inclusa) è l'insieme delle soluzioni ammissibili [dominio di fisica realizzabilità del problema] I punti interni ed i punti appartenenti agli assi (tranne i punti B e D in cui uno dei due vincoli è saturo, ovvero soddisfatto all'eguaglianza) sono rappresentativi di situazioni per le quali nessuno dei due vincoli viene saturato [cioè soddisfatto all'eguaglianza]. I punti della frontiera, con esclusione degli assi, si riferiscono a combinazioni produttive per le quali uno (spigoli DC, CB) o entrambi i vincoli (vertice C) vengono saturati. Le soluzioni corrispondenti a punti del dominio appartenenti agli assi implicano che il livello di uno dei due impieghi sia nullo. La funzione obiettivo: z =.5 +.0 esprime un fascio di rette parallele. Ogni retta rappresenta una situazione di isoricavo.
Alla traslazione della retta generica del fascio nel senso indicato dalla freccia corrisponde un aumento di valore per la z. L'ottimo del problema può essere individuato nell'ultimo punto (o negli ultimi punti) dell'insieme di ammissibilità che la retta rappresentativa della funzione obiettivo tocca prima di abbandonarlo. Il miing ottimo è quindi individuata nel vertice C [massima distanza della retta rappresentativa della funzione obiettivo dall'origine degli assi]
Il valore della soluzione (variabili e funzione obiettivo), oltre che per lettura diretta sul grafico, può essere ricavato risolvendo il sistema costituito dai due vincoli saturi: da cui si ottiene: + = 8 3 + = 9 = 0.5 = 3.75 cui corrisponde il valore della funzione obiettivo: z = 8750 Euro [ e sono stati moltiplicati per 000]
3 ALCUNI CASI PARTICOLARI Problema con infinite soluzioni ottime z =.5 s. a 3 + + +, Ma! 8000 9000 0 La funzione obiettivo è parallela allo spigolo BC
4 Con riferimento ad un problema di miing ottimo di produzione, ad affermare che esistono infinite combinazioni ottime delle risorse produttive in grado di realizzare lo stesso ricavo massimo. Spostandosi lungo lo spigolo BC nel verso da B verso C, la riduzione di ricavo generata dalla diminuzione di viene completamente compensata dall'aumento di ricavo derivante dall'aumento di. Una alterazione, anche minima, dei coefficienti della funzione obiettivo riporterebbe il sistema ad una soluzione di vertice.
5 Problema con soluzione ottima illimitata z s. a = - 0.5 +, - + 0 Ma! - La funzione obiettivo spostandosi nel verso di z crescente ha sempre punti in comune con il dominio di definizione. Entrambe le variabili possono crescere indefinitamente e con esse la z.
6 Problema con soluzione ottima illimitata z = 3 + Ma! s.a. 3-0, 0 è limitata ma il valore di z può crescere indefinitamente in quanto può crescere indefinitamente.
7 Massimo finito con variabili limitate o non limitate z = - + Ma! s.a. - 0.5, - + 0 - ogni punto dello spigolo superiore del dominio di compatibilità (sino all'infinito) conferisce lo stesso valore z = 4 alla funzione obiettivo
8 Problema inconsistente. z = - + Ma! s.a., + + 0 4 Il sistema di disequazioni definisce un insieme vuoto in quanto i vincoli risultano in contrasto.
9 Problema inconsistente. z = - + Ma! s.a. 0 3-3, 0 Il primo ed il secondo vincolo sono in contrasto con i vincoli di non negatività.
0 Problema con vincoli ridondanti z =.5 +.0 Ma! s. a + 8 3 + 9 4 4, 0 E' il problema di miing con l'aggiunta dei due ulteriori vincoli 4 e 4 che risultano ridondanti
Problema con vincoli ridondanti z =.5 +.0 Ma! s. a + 8 3 + 9 + 8.5, 0 4.5 4.5 4.0 D C (0.5, 3.75) grad (z) B O 3.0 4.5 8.0 z E' il problema di miing con l'ulteriore vincolo + 9.5 che non altera il dominio di ammissibilità, in quanto esso e una combinazione lineare (con coefficienti 0.5 e 0.5) dei due vincoli originari.
TRASFORMAZIONE DI VINCOLI Trasformazione di disequazioni in equazioni. Vincoli del tipo Si consideri la generica disequazione: n j= a ij j b i Introducendo una variabile yi 0 detta slack (o di scorrimento), si può trasformare la disequazione in una equazione. n a ij j + yi = j= b i Se la soluzione del problema comportasse per il vincolo il verificarsi del segno di eguaglianza sarebbe, evidentemente, yi = 0.
3 Vincoli del tipo Si consideri la generica disequazione: n j= a ij j b i E' possibile definire, in modo del tutto analogo a quanto fatto per i vincoli del tipo, una variabile slack yi 0 (detta, talvolta, di surplus) che ristabilisca il segno di eguaglianza: n aij j yi = j= Tale variabile viene a rappresentare la quantità: n yi = aij j j= di cui il primo membro supera il valore del termine noto bi. Anche in questo caso se la soluzione del problema comportasse per il vincolo il verificarsi del segno di eguaglianza sarebbe yi = 0. b i b i
4 Trasformazione di equazioni in disequazioni. Si consideri la generica equazione vincolare: n aij j = j= b i Essa può essere espressa mediante due disequazioni la prima del tipo la seconda del tipo aventi primo membro e termine noto eguali a quelli dell'equazione: n a j= ij j b i n a j= ij j b i Dovendo esse sussistere contemporaneamente risulta evidente la loro equivalenza all'equazione vincolare assegnata.
5 Trasformazione da funzione obiettivo a massimizzare a funzione obiettivo a minimizzare e viceversa. Un problema avente la funzione obiettivo a massimizzare [minimizzare] può essere trasformato in un altro avente la funzione obiettivo a minimizzare [massimizzare] cambiando i segni dei coefficienti di costo: ct Ma! = (-ct) Min! Una volta risolto il problema ed individuata la soluzione ottima, qualora si sia fatto uso di tale trasformazione è, ovviamente, necessario cambiare segno al valore ottenuto per la funzione obiettivo. TRASFORMAZIONE DI VARIABILI Variabili non positive Qualora nel problema siano presenti variabili j 0 è possibile effettuare la seguente trasformazione: j = - 'j (j 0; 'j 0)
6 Variabili non vincolate nel segno Qualora siano presenti variabili j non vincolate nel segno (n.v.s.) si può porre: j = 'j - ''j (j n.v.s.; 'j, ''j 0) Se dalla soluzione del problema risulta: 'j < ''j ne deriva j < 0; mentre per 'j = ''j risulta j = 0; e per 'j > ''j risulta j > 0. Qualora siano presenti nel problema molte variabili j n.v.s. (siano k), per ridurre il numero di nuove variabili da introdurre, si può ricorrere alla trasformazione: j = 'j - '' (j =,,, k; j n.v.s.; 'j, '' 0) In tal modo, invece di introdurre k variabili ''j si introduce solo una.
7 FORMA STANDARD DI UN PROBLEMA DI PROGRAMMAZIONE LINEARE Un generico problema di programmazione lineare è sempre riconducibile ad una forma particolare. Spesso si introduce, per semplificare i necessari approfondimenti, una forma standard di un problema di programmazione lineare.. Una forma che appare connaturata, come si vedrà, con le caratteristiche dell algoritmo del simplesso è quella in cui la funzione obiettivo è a minimizzare, i vincoli sono espressi da un sistema di equazioni lineari e le variabili sono non negative: z s.a = c T A = b 0 Min!