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