Dispensa di programmazione lineare + esercizi

Transcript

Dispensa di programmazione lineare + esercizi
PROGRAMMAZIONE LINEARE:
Definizione:la programmazione lineare serve per determinare l'allocazione ottimale di risorse disponibili in
quantità limitata, per ottimizzare il raggiungimento di un obiettivo prestabilito, in condizioni di certezza.
Tipi di problemi risolubili con le tecniche della programmazione lineare (P.L.): problemi economici, problemi
di distribuzione delle risorse, problemi di trasporto e di assegnazione, ecc.
Modello matematico:
{
Ottimizzare funzione obiettivo (f(x), x vettore)
Vincoli di segno
Vincoli tecnici: eguaglianze o diseguaglianze deboli
Tutte le funzioni presenti nel modello sono lineari.
Metodi risolutivi:
a) Metodo grafico
b) Metodo algebrico
c) Metodo del simplesso
Un modello matematico per un problema di programmazione lineare
Problema 1. Un reparto di un'azienda di elettrodomestici può produrre giornalmente non più di 6 lavatrici,
delle quali alcune sono di un tipo A e le altre di un tipo B. Il turno di lavoro non può superare le 8 ore giornaliere; una lavatrice di tipo A richiede 2 ore di lavoro, mentre una di tipo B ne richiede una. Se una lavatrice
di tipo A costa 600 euro una di tipo B 400 euro, quante lavatrici di ciascun tipo devono essere prodotte
giornalmente affinché l'azienda realizzi il massimo guadagno?
Nell'enunciato ci sono molte informazioni ed è un po' difficile tenerle tutte a mente e intravedere rapidamente
un procedimento per risolvere il problema. È però importante rilevare che, una volta trovata la soluzione,
l'azienda sarà in grado di programmare la produzione del reparto.
Percorso risolutivo
Analizziamo il testo e schematizziamolo
Risorse
A
x
Impieghi
N° lavatrici prodotte al giorno
1 n.°
Ore di lavoro giornaliero
2h
profitto lordo unitario
€ 600,00
(prezzo di vendita)
Rendere massimo il profitto totale
B
y
1 n.°
1h
€ 400,00
Disponibilità
giornaliera per ogni
risorsa
6 n.°
Algebra
2x + y ≤ 8
8h
2x + y ≤ 8
z = 600x + 400y
x = numero di lavatrici di tipo A
y = numero di lavatrici di tipo B
Si hanno le seguenti restrizioni:
• il numero di ciascuna lavatrice non può essere negativo
• il numero complessivo delle lavatrici non può essere superiore a 6
• la durata massima del lavoro non può superare le 8 ore giornaliere.
L'obiettivo dell'azienda è decidere quante lavatrici (di ciascun tipo) produrre giornalmente affinché venga
realizzato il massimo profitto. La funzione che esprime il guadagno dell'azienda in euro viene chiamata
funzione obiettivo ed è: z = 600x + 400y
Il problema consiste perciò nel trovare i valori di x e y che rendano la funzione obiettivo più grande possibile,
sotto le condizioni espresse dalle disequazioni lineari viste prima che, dovendo valere simultaneamente,
costituiscono il seguente sistema:
x + y ≤ 6
2 x + y ≤ 8


x ≥ 0
 y ≥ 0
Di questi problemi, in cui intervengono quantità di variabili da "ottimizzare" sotto determinate condizioni, si
occupa una parte applicativa della matematica che viene chiamata programmazione lineare.
Il nostro problema è volutamente semplice, ma la programmazione lineare risolve problemi ben più complessi
che si presentano nell'ambito dell'economia aziendale, della produzione industriale, dell'alimentazione, dello
sfruttamento ottimale delle risorse e dei servizi in generale, in tutti quei settori nei quali occorre esaminare
varie alternative al fine di realizzare un certo obiettivo alle condizioni più vantaggiose. In talune questioni
intervengono decine di variabili; in questi casi vengono utilizzate tecniche diverse e le soluzioni sono ottenute
mediante l'impiego di un computer. Noi ci limiteremo a risolvere problemi abbastanza semplici.
1) CONCETTO DI PROGRAMMAZIONE LINEARE
Si parla di PROGRAMMAZIONE LINEARE quando si è in presenza di:
a) una FUNZIONE LINEARE A 2 O PIU' VARIABILI INDIPENDENTI che si deve MASSIMIZZARE(se si tratta di
FUNZIONE RICAVO o PROFITTO) oppure MINIMIZZARE(se si tratta di FUNZIONE COSTI);
b) un INSIEME DI VINCOLI nelle suddette VARIABILI INDIPENDENTI date da EQUAZIONI o DISEQUAZIONI
LINEARI A 2 O PIU' VARIABILI;
c)
un INSIEME DI VINCOLI DI SEGNO,di norma POSITIVO,che esprimono la NON-NEGATIVITA' delle
VARIABILI presenti essendo esse GRANDEZZE ECONOMICHE.
Se la FUNZIONE LINEARE è a 2 VARIABILI INDIPENDENTI allora e' conveniente utilizzare il METODO GRAFICO
e lo stesso metodo è consigliabile quando la FUNZIONE LINEARE ha più di 2 VARIABILI,ma si può ridurre a 2
VARIABILI se nell'INSIEME DEI VINCOLI vi è qualche equazione che riduce (il numero delle VARIABILI.
Se la FUNZIONE LINEARE e' a 3 o più VARIABILI INDIPENDENTI conviene usare il METODO ALGEBRICO o il
METODO DEL SIMPLESSO.
Modello matematico del problema di P. L. in due variabili, da massimizzare:
z = c1x1 + c2x2
soggetta ai vincoli:
a1,1x1 + a1,2x2 <= b1
a2,1x1 + a2,2x2 <= b2
…………………….
am,1x1 + am,2x2 <= bm
x1, x2 >= 0
2) METODO GRAFICO
Si devono ricercare i MASSIMI E MINIMI DI UNA FUNZIONE ECONOMICA A 2 VARIABILI CON VINCOLI DATI
DA DISEQUAZIONI LINEARI.
Conviene seguire attentamente i seguenti passaggi:
a) si determina il DOMINIO DEI VINCOLI (o REGIONE DEL PIANO x1Ox2 DELLE SOLUZIONI AMMISSIBILI)
b) se il DOMINIO DEI VINCOLI e' un POLIGONO si calcolano i VALORI DELLA FUNZIONE DATA NEI VERTICI
del POLIGONO e si tra essi il VALORE MASSIMO se la FUNZIONE DATA si deve MASSIMIZZARE, oppure il
VALORE MINIMO se la FUNZIONE DATA si deve MINIMIZZARE.
c)
se il DOMINIO DEI VINCOLI e' ILLIMITATO si esaminano alcune LINEE DI LIVELLO nell'interno del
DOMINIO DEI VINCOLI per capire se esiste un punto che ottimizza la FUNZIONE ECONOMICA DATA.
N.B) Da quanto detto prima il METODO GRAFICO si può utilizzare se la FUNZIONE e' a 2 VARIABILI,ma
possiamo usare tale metodo anche se la FUNZIONE e' a 3 VARIABILI e nei vincoli vie' una equazione. Infatti
da tale equazione possiamo calcolare il valore di una VARIABILE rispetto le altre e quindi sostituito tale valore
nella FUNZIONE data e negli altri VINCOLI DISEQUAZIONALI ritroveremo una FUNZIONE a 2 VARIABILI con
VINCOLI a 2 VARIABILI.
In generale si può utilizzare il METODO GRAFICO se la FUNZIONE e' ad n VARIABILI e vi sono m equazioni
vincolari e risulta n-m=2.
Quindi, per risolvere in via geometrica un problema di programmazione lineare dobbiamo costruire un grafico.
In questo grafico dobbiamo disegnare la regione ammissibile che è ricavata disegnando tutti i vincoli del
nostro problema. Se l'insieme non è vuoto, tale area può essere rappresentata da un poligono, o da una
poligonale illimitata, che possono eventualmente ridursi ad una semiretta, ad un segmento o ad un punto.
Nell’problema 1 l'insieme delle soluzioni è la regione OABD ossia
l'intersezione dei semipiani corrispondenti alle quattro disequazioni del
sistema. Poiché in queste ultime compaiono i segni ≤ e ≥ tutti i punti
che si trovano sul contorno della regione, cioè i punti dei segmenti
OB, AB, AD, DO appartengono all'insieme soluzione.
Fra gli infiniti punti della regione, dobbiamo cercare quelli per i quali x
∈ N e y ∈ N (n.° lavatrici variabili discrete); nel nostro caso alcune
soluzioni accettabili corrispondono ai punti: O (0; 0), D (4; 0), A (2;
4), B (0; 6), P (2; 1), Q (3; 2) …
Per ottenere la soluzione che assicuri il massimo guadagno, cioè la
soluzione ottimale, dobbiamo cercare i punti le cui coordinate rendano
massimo il valore della funzione obiettivo.
Quali punti cercare?
Teorema 1. Si può dimostrare in modo del tutto generale che le soluzioni ottimali di un problema di
programmazione lineare sono i punti situati sul contorno, e in particolare nei vertici dell'insieme di soluzione.
In un problema di programmazione lineare se l'insieme delle soluzioni ammissibili è un poligono chiuso, allora
è un poligono chiuso convesso.
Teorema (Weierstrass + teo. fondamentale progr. lin.)
Se l'insieme delle soluzioni ammissibili è un poligono convesso, il massimo e il minimo esistono e si trovano in
un vertice del poligono.
Per determinare i punti estremi basta calcolare i valori della funzione obiettivo nei vertici del
dominio, se questo è un poligono chiuso. Se il dominio dei vincoli è illimitato si esamina invece
l'andamento delle curve di livello per determinare, se esiste, un punto che ottimizza la funzione
obiettivo.
Se in due vertici consecutivi la funzione obiettivo assume lo stesso valore, essa assume quello
stesso valore in tutti i punti del segmento che li unisce.
Nel nostro caso, alcuni di tali punti sono i punti O, A, D, B.
Possiamo formare la seguente tabella:
Punti sul contorno x y Guadagno z = 600x + 400y
O(0; 0)
0 0 Z=0
D(4; 0)
4 0 Z = 2400
C(0; 6)
0 6 Z = 2400
B(2; 4)
2 4 Z =1200+1600 = 2800
La soluzione ottimale è data da x = 2 e y = 4. Perciò, producendo giornalmente 2 lavatrici di tipo A e 4 di tipo
l'azienda realizza il massimo guadagno di 2800 euro.
Osservazione
In generale se la regione di accettabilità è limitata, la funzione obiettivo raggiunge il massimo e il minimo per
i valori delle coordinate di uno o più vertici della regione ammissibile e in quella parte di piano individuata dai
vincoli. Questo insieme è convesso. La soluzione del nostro problema è un punto (ma può essere anche un
insieme di punti) che massimizzi o minimizzi la funzione obiettivo. Se il problema ha soluzione questa la si
trova in uno dei vertici della regione ammissibile, se invece il problema ha più soluzioni almeno uno di essi si
trova in un vertice del poligono (regione ammissibile)
Il valore massimo o minimo sono unici, però ci potrebbero essere più punti che danno una soluzione ottimale.
Quindi il massimo o il minimo viene generalmente dato dalle coordinate dei vertici della regione di
accettabilità, per il quale passa la retta della funzione obiettivo. Se la retta è parallela ad un lato della regione
di accettabilità, la scelta di x e y non sarebbe più unica, ma ogni punto di quel lato darebbe una soluzione
ottimale del problema. Nei seguenti diagrammi vengono illustrati questi casi:
Per i massimi
Per i minimi
Problema:
Un’impresa produce due prodotti A e B disponendo giornalmente di 200 ore operaio e 96 ore macchina.
Il processo produttivo è caratterizzato da questi dati:
•
ogni unità del prodotto A richiede 20 minuti di lavoro-operaio e 6 minuti di lavoro-macchina
•
ogni unità del prodotto B richiede 45 minuti di lavoro-operaio e 25 minuti di lavoro-macchina
Le condizioni del mercato sono:
il profitto lordo derivante dalla vendita di ogni unità di A è € 60 e il profitto lordo derivante dalla vendita di
ogni unità di B è € 200.
Determinare la quantità che occorre produrre di ciascun prodotto affinché il profitto lordo complessivo sia
massimo.
Percorso risolutivo
Analizziamo il testo e schematizziamolo
Risorse
A
x
Impieghi
lavoro operaio unitario
20 m
lavoro macchina unitario
6m
profitto lordo unitario
€ 60,00
Rendere massimo il profitto totale
B
y
Tempo disponibile
per ogni risorsa
45 m
12000 m
25 m
€ 200,00
5760 m
Algebra
20x + 45y ≤12.000
6x + 25y ≤ 5.760
z = 60x + 200y
Nota bene: Abbiamo convertito il tempo disponibile per ogni risorsa da ore in minuti, ovvero nel testo
leggiamo: l'impresa dispone giornalmente di 200 ore operaio e 96 ore macchina che vuol dire tradotto in
minuti:
200 ore = 200 — 60 min = 12.000 min
96 ore = 96 — 60 min = 5760 min.
Si tratta quindi di risolvere un problema di programmazione lineare:
Determinare il massimo della funzione z = 60x + 200y (funzione obiettivo da massimizzare)
soggetta ai seguenti vincoli tecnici più gli ovvi vincoli di segno:
20 x + 45 y ≤ 12000
6 x + 25 y ≤ 5760

vincoli tecnici + vincoli di segno

x
≥
0

 y ≥ 0
Risolviamo il sistema di disequazioni:
1. Individuiamo i semipiani soluzione di ciascuna disequazione.
2. Determiniamo la regione di intersezione delle soluzioni.
Punto 1
Alla prima disequazione associamo la corrispondente equazione 20x + 45y =
12000 (semplifichiamo i coefficienti numerici per 5) 4x + 9y = 2400 esplicitando la variabile y
4
2400
4
800
y =− x+
y=− x+
9
9
9
3
(retta a)
Alla seconda disequazione associamo la corrispondente equazione 6x + 25y = 5760 6
5760
(semplifichiamo il termine noto per 5) x+
25
25
6
1152
(retta b)
y =− x+
25
5
y=−
Tracciamo le rette nel piano cartesiano:
Le ultime due disequazioni escludono il secondo, terzo e quarto quadrante. Il semipiano che è soluzione della
prima disequazione è quello non evidenziato in arancione; il semipiano che è soluzione della seconda
disequazione è quello non evidenziato in celeste/verde dove si sovrappone celeste con arancione):
La Regione Ammissibile: insieme di punti del piano cartesiano le cui coordinate sono soluzione del sistema
di disequazioni è quella bianca. Quindi troviamo che il dominio dei vincoli è soddisfatto da tutti i punti che
stanno nella regione evidenziata in bianco nella figura sopra. Quindi il campo di scelta è costituito dai vertici
del quadrilatero OCAB.
Le coordinate di tali vertici sono O(0;0);
B(0; 230,4); C(600; 0) e A (punto di intersezione tra le rette a e b)
4
800

 y = − 9 x + 3

 y = − 6 x + 1152
25
5

800
6
1152
 4
=− x+
− x +
3
25
5
 9
=
− 100 x + 60000 = −54 x + 51840

=
46 x = 8160

=
 x = 177,39

 y = 187,83
A (177,39; 187,83)
Troviamo quindi : z(0;0)= 0
z(0; 230,4)= 200*230,4= 46.080
z(177,39; 187,83) = 60*177,39 + 200*187,83= 48.209
z(600; 0) = 36.000
E si conclude che subordinatamente ai vincoli esistenti, conviene produrre la quantità x = 177,39 di A e y =
187,83 di B, affinché il profitto sia massimo con z = 48.209.
Riassumendo:
Risoluzione di un problema di programmazione lineare
1. Costruisci un modello matematico per il problema:
a) determina le incognite e scrivi la funzione obiettivo;
b) scrivi i vincoli in forma di disequazioni lineari.
2. Rappresenta la regione di accettabilità nel piano cartesiano e determina le coordinate dei vertici.
3. Calcola il valore della funzione obiettivo in ogni vertice e stabilisci la soluzione ottimale.
4. Rappresenta la funzione obiettivo graficamente per stabilire il valore massimo o minimo cercato,
lavorando con le rette parallele a quella passante per l'origine.
Problema
Un dietologo deve fornire una dieta a base di due alimenti A 1 e A2 in modo che abbia almeno 2500 calorie
e 3500 unità di vitamina B12. Sapendo che un chilogrammo di A1 ha 1400 calorie e 1000 unità di vitamina
e che un chilogrammo di A2 ha 800 calorie e 2000 unità di vitamina, si vuol conoscere come deve essere
costituita la dieta per essere la più economica possibile, se un chilogrammo di A1 costa 20 euro e un chilogrammo di A2 15 euro.
Schematizziamo i dati del problema mediante una tabella:
A1 A2 minimo consentito
Calorie per Kg
Vitamina per Kg
Costo al Kg
Siano x e y rispettivamente i chilogrammi di prodotto A1 e A2 da prescrivere; il costo complessivo della dieta
si potrà rappresentare mediante l'espressione:
È ovvio che non tutte le coppie (x; y) rappresentano soluzioni possibili per il problema proposto.
Il numero di calorie minimo espresso dalla coppia (x; y) è: ................................................
Il numero di unità di vitamina espresso dalla coppia (x; y) è:............................................
Le due quantità in peso devono essere positive:
Dunque per risolvere il problema posto, dovremmo determinare le soluzioni del sistema che racchiude
tutte le condizioni da rispettare (vincoli):
1400 x + 800 y ≥ 2500
1000 x + 2000 y ≥ 3500


x ≥ 0
 y ≥ 0
E successivamente, calcolare nell’insieme di tali soluzioni il più piccolo valore di z
z =20x + 15y
Analizziamo la risoluzione del problema:
Risolviamo il sistema di disequazioni:
3. Individuiamo i semipiani soluzione di ciascuna disequazione.
4. Determiniamo la regione di intersezione delle soluzioni.
Quindi troviamo che il dominio dei vincoli è soddisfatto da tutti i punti che stanno nella regione evidenziata in
bianco nel grafico a fianco.
Si tratta di un poliedro aperto.
Dopo aver individuato la regione ammissibile, successivamente bisogna disegnare le curve di livello.
L’andamento delle curve di livello ci fa capire quale punto
all’interno della regione ammissibile minimizza la funzione
obiettivo.
Per trovare il punto di ottimo dobbiamo disegnare il fascio di
rette (20x + 15y = k “fascio di rette parallelo) che
definiscono l’insieme delle curve di
livello. Fatto questo
vediamo l’andamento di queste rette tratteggiate e scopriamo
qual è il punto in cui si minimizza la funzione obiettivo (la
prima retta che interseca il poliedro aperto).
Quindi il minimo e dato dalle coordinate del vertice A del
poliedro aperto (regione di ammissibilità), per il quale passa
la retta della funzione obiettivo.
Coordinate del punto A:
1400 x + 800 y = 2500

1000 x + 2000 y = 3500
E il costo minimo è:
z=