INTRODUZIONE ALLA PROGRAMMAZIONE LINEARE FORMULAZIONE GENERALE Con il termine "programmazione lineare" (Linear Programming: LP) viene indicato un gruppo di algoritmi risolutori (grafici ed analitici) mediante i quali il progettista ha la possibilità di trovare in maniera rapida ed efficace la soluzione di un problema tipico della progettazione, cioè la ricerca della condizione di ottimo di una funzione obiettivo prefissata. La metodologia applicativa della programmazione lineare abbraccia dunque un'ampia classe di problemi ingegneristici, di economia, gestione, ecc.; più precisamente, soltanto quelli nei quali vi è un problema di ottimizzazione di funzioni obiettivo lineari con vincoli anch'essi di tipo lineare. Un tipico problema affrontato e risolto mediante la programmazione lineare può essere schematizzato nel modo seguente: dato un set di m equazioni (o disequazioni) con n variabili, si cerchi il valore non negativo di queste n variabili che soddisfano le suddette equazioni (o disequazioni) e che dunque massimizzano o minimizzano la funzione obiettivo fissata in sede progettuale. Nell'ambito della programmazione lineare è possibile individuare due classi di problemi e quindi due diverse metodologie risolutive: la prima consiste nella ricerca della soluzione mediante un metodo grafico, e si può adottare qualora le variabili di progetto o decisionali siano soltanto due; la seconda, di tipo analitico, detta "algoritmo del simplesso", applicabile qualora le variabili di progetto non rispettino la precedente condizione, ma siano pari ad n, con n > 2. Vale la pena ricordare e sottolineare che nell'ambito della programmazione lineare, pur restando identica la simbologia, la corrispondente nomenclatura adottata risulta diversa: le variabili di progetto, infatti vengono dette "variabili decisionali", mentre la funzione obiettivo risulta una combinazione lineare delle variabili decisionali e dei "tassi di profitto" (o "coefficienti di costo"), generalmente indicati con la lettera "c". Detta "z" la funzione obiettivo, si può dunque scrivere: F.O.: z = c1 x1 + c2 x2 +.....+ ci .xi+.....+ cn xn e in forma matriciale: z = cT x dove con cT = ( c1, c2,...ci,..., cn ) si è indicato il vettore dei "tassi di profitto" (o dei "coefficienti di costo"). Ciascun coefficiente ci rappresenta il profitto che fornirà la variabile decisionale i-esima xi quando questa assume valore unitario. Le variabili decisionali sono soggette al rispetto di vincoli, traducibili in equazioni lineari, ad es.: ai1 x1 + ai2 x2 +.....+ aij .xj+.....+ ain xn = bi oppure disequazioni sempre lineari, ad es.: ak1 x1 + ak2 x2 +.....+ akj .xj+.....+ akn xn bk ar1 x1 + ar2 x2 +.....+ arj .xj+.....+ arn xn br I diversi pedici ( i, k, r ) vogliono indicare la possibilità che, per ciascun tipo, i vincoli siano più di uno. In ogni caso, il numero totale delle equazioni e disequazioni è finito ed è “m”. Anche per i vincoli è possibile adottare una forma di scrittura di tipo matriciale. Possiamo dunque scrivere: Ax b dove A è la matrice, m righe per n colonne, dei “tassi di assorbimento” aij: File 841111483 al1 a21 al2 a22 aln a2n aml am2 amn bT = ( b1, b2,...bi,..., bm ) è il vettore dei "termini noti”, molto spesso corrispondenti alle “risorse” a cui attingono le “variabili decisionali” nel nostro problema. In altri termini, il generico elemento aij della matrice rappresenta la quantità di "risorsa" bi impegnata per valore unitario della variabile decisionale xj. Va infine ricordato che, perché sia possibile utilizzare le metodologie risolutive della programmazione lineare, debba necessariamente essere verificata la “condizione di fisica realizzabilità", un assunto fondamentale senza il quale non è possibile procedere. Questa condizione impedisce alle variabili decisionali di assumere un generico valore, ma impone che esse soddisfino la seguente condizione: i xi 0 Una n-pla di valori per le variabili decisionali xi che soddisfi tutte le relazioni matematiche di cui sopra costituisce una “soluzione ammissibile” del nostro problema di programmazione lineare. Siamo dunque ora in possesso di tutti gli elementi mediante i quali schematizzare analiticamente un problema generale da affrontare con la programmazione lineare. Questo sarà sempre individuato dai seguenti set di relazioni matematiche: Ax b Equazioni dei vincoli fisici z = cTx i F. O. di cui ricercare l'ottimo => max oppure min di F.O. xi 0 Condizione di fisica realizzabilità LA PROGRAMMAZIONE LINEARE BIDIMENSIONALI: IL METODO GRAFICO PER PROBLEMI Abbiamo precedentemente detto che, qualora le variabili decisionali siano soltanto due, la programmazione lineare consente di giungere alla soluzione del problema mediante un metodo grafico rapido e piuttosto semplice. E' sufficiente, infatti, seguire pedissequamente i seguenti elementari passi: 1) Su di un piano cartesiano si traccino le rette rappresentanti le equazioni (o disequazioni) vincolari fornite dal problema. In questa fase le disequazioni vengono disegnate considerandole alla stregua di equazioni e cioè supponendo che tra i due membri della espressione algebrica ci sia la condizione di uguaglianza. 2) La generica retta rappresentante l'equazione vincolare corrispondente suddivide il piano cartesiano in due semipiani. Si verifichi, dunque, quale dei due semipiani soddisfa l'equazione vincolare (nel caso di disequazione vincolare occorre considerare il verso della diseguaglianza). 3) Si ripetano i primi due passi per ciascun vincolo, individuando ogni volta il semipiano di nostro interesse. 4) Il dominio intersezione di tutti i semipiani precedentemente individuati rappresenta l'insieme di punti che soddisfa tutti i vincoli, ovvero è soluzione del sistema di equazioni (disequazioni) vincolari fornite dal Prof. Michele MICCIO 2 File 841111483 problema. Tra tutti i punti di questo dominio uno soltanto rappresenta la condizione di ottimo (massimo o minimo della F.O.). 5) Si plotti la funzione obiettivo "z" considerandola come equazione parametrica proprio nel valore di "z". Al variare del parametro z, si otterrà un fascio di rette tutte col medesimo coefficiente angolare, quindi fra loro parallele. 6) Si segua nel fascio la direzione di z crescente o decrescente a seconda se il problema postoci sia rispettivamente a massimizzare o a minimizzare. Tra tutte le rette parametriche in z verrà scelta quella che ha ancora almeno un punto in comune col dominio precedentemente individuato. Le coordinate di tale punto intersezione tra retta e dominio massimizzano (minimizzano) la F.O. e, quindi, rappresentano la soluzione del nostro problema. CASISTICA POSSIBILE L’Allegato 2 riporta i casi che si possono verificare nell’impostazione e risoluzione di un problema LP in 2 dimensioni. Si guardi la seguente lista: Esempio a c b d, e f g h Note Ricerca del massimo Ricerca del minimo Soluzione multipla (Funzione obiettivo parallela ad un vincolo) Soluzione infinitamente grande (Variabili decisionali non limitate) Soluzione multipla, che può anche essere infinitamente grande (Variabili decisionali non limitate e Funzione obiettivo parallela ad un vincolo) Dominio non convesso Variabili decisionali non positive Prof. Michele MICCIO 3 File 841111483 ESEMPIO 2D.1 Si cerchi il minimo della Funzione Obiettivo seguente: z = 2x1 + 3x2 F.O.: Soggetta ai vincoli seguenti: 1) 2) 3) 4) 5) 6) x1 + x2 4 6x1 + 2x2 8 x1 + 5x2 4 x1 3 x2 3 x1 , x2 0 Svolgimento per via grafica Il problema che è stato posto è un problema di programmazione lineare che si può risolvere con una procedura grafica. Seguendo la metodologia applicativa illustrata nei paragrafi precedenti, è stato tracciato il grafico riportato nell’Allegato 1. Dalla procedura grafica si ottiene la corretta soluzione del problema. L’ottimo è il punto avente le seguenti coordinate: x1, ott = 1,1 x2, ott = 0,6 Prof. Michele MICCIO 4 File 841111483 ALLEGATO 1 Prof. Michele MICCIO 5 File 841111483 Prof. Michele MICCIO 6 File 841111483 ALLEGATO 2 Prof. Michele MICCIO 7 File 841111483 Prof. Michele MICCIO 8 File 841111483 Prof. Michele MICCIO 9