Lezione n
°
4
- Problemi di Programmazione Matematica - Problemi Lineari e Problemi Lineari Interi - Forma Canonica. Forma Standard
R. Cerulli – F. Carrabs
Lezioni di Ricerca Operativa
Corso di Laurea in Informatica Università di Salerno
Problema di Ottimizzazione
Data una funzione f : Rn⟶ R e X⊆Rn un problema di
Ottimizzazione (PO) può essere formulato come:
min f(x) s.t.
x ∈ X
funzione obiettivo vettore delle variabilidecisionali insieme delle
soluzioni ammissibili
Quindi un problema di Ottimizzazione consiste nel determinare, se esiste, un punto di minimo della funzione f tra i punti dell’insieme X.
Problemi di Programmazione Matematica
Quando l’insieme delle soluzioni ammissibili di un problema di ottimizzazione viene espresso attraverso un sistema di equazioni e disequazioni, tale problema prende il nome di problema di
Programmazione Matematica (PM). min f(x) s.t. gi(x) ≥ bi i=1,…,m i-esimo vincolo del sistema i-esima componente del vettore dei
Un problema di PM è lineare quando:
Problemi di Programmazione Lineare
Ø la funzione obiettivo è lineare: f(x) = cTx
Ø l’insieme X è espresso in termini di relazioni (uguaglianze e disuguaglianze) lineari min f(x) s.t. gi(x) ≥ bi i=1,…,m min c1x1 + c2x2 +...+ cnxn s.t. a11x1 + a12x2 +...+ a1nxn b1 a21x1 + a22x2 +...+ a2nxn b2 am1x1 + am2x2 +...+ amnxn bm
min
c
Tx
s.t.
Ax
b
Forma compatta Forma esplicita X variabili x continueProgrammazione Lineare Continua (PL) x ∈ Rn : Ax ≥ b
{
}
x ∈ Zn : Ax ≥ b
Esempio
Forma compatta Forma esplicita min 500x1 + 700x2 + 350x3 + 400x4 + 200x5 s.t. 8x1 +10x2 + 5x4 + 7x5 = 96 5x1 +12x2 + 4x3 = 96 20x1 + 20x2 + 20x3 + 20x4 + 20x5 = 384 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0Un vettore x di Rn è soluzione ammissibile per il problema di PL se e solo se
soddisfa tutti i vincoli del problema.
Problemi di Programmazione Lineare
min f(x)
s.t.
gi(x) ≥ bi i=1,…,m
Dato il seguente problema di programmazione lineare
un vettore x’ di Rn:
• soddisfa il vincolo gi(x) ≥ bi se gi(x’) ≥ bi
• viola il vincolo gi(x) ≥ bi se gi(x’) < bi
Soluzioni di un problema di PL
min f(x)s.t.
gi(x) ≥ bi i=1,…,m
Un problema di programmazione lineare risulta:
• Inammissibile se la regione ammissibile è vuota ossia X=
∅
.• Illimitato (inferiormente) se scelto un qualsiasi scalare k, esiste sempre un punto x∈X tale che f(x) < k.
• Ammettere soluzione ottima finita se esiste un punto x*∈X tale che f(x*) ≤ f(x) ∀x∈X.
Un’azienda produce tre tipi di elettrodomestici: lavatrici, frigoriferi e forni.
Per produrre una lavatrice occorrono 9 ore di lavorazione sulla macchina M1 e 8 ore di lavorazione sulla macchina M2; mentre per produrre un frigorifero occorrono 11 ore di lavorazione sulla macchina M2; infine per produrre un forno occorrono 4 ore sulla
macchina M1 e 6 sulla macchina M2.
La macchina M1 è disponibile per 137 ore settimanali, mentre la macchina M2 è
disponibile per 149 ore settimanali. Il numero di forni prodotti non può essere superiore alla somma dei frigoriferi e delle lavatrici prodotte. Tuttavia devono essere prodotti
almeno 20 forni. Inoltre il numero di lavatrici prodotte non può essere superiore al numero di frigoriferi prodotti per al più 5 unità.
Il guadagno ottenuto dalla vendita di una lavatrice è di 375 euro, quello ottenuto per un frigorifero è 320 euro e quello per un forno è 170 euro. Si vuole conoscere la quantità di lavatrici, frigoriferi e forni da produrre settimanalmente per massimizzare il guadagno totale nel rispetto dei vincoli di produzione.
a) Si formuli il corrispondente modello di programmazione.
8
9
La prima cosa da fare per poter formulare un problema è individuare le variabili decisionali. Poiché il nostro obiettivo è quello di definire il numero di lavatrici, frigoriferi e forni da produrre, associamo ad ogni tipo di elettrodomestico una variabile distinta:
x1 = numero di lavatrici da produrre x2 = numero di frigoriferi da produrre x3 = numero di forni da produrre
Esempio 1: Piano di produzione aziendale
9x1 + 4x3 <= 137 8x1 + 11x2 + 6x3 <= 149 x3 <= x1 + x2 x3 >= 20 x1 <= 5 + x2 x1, x2, x3 >= 0, intere max 375x1 + 320x2 + 170x3
Problemi di Programmazione Lineare:
Forma Canonica
Consideriamo
un
problema
di
Programmazione
Lineare (PL) con m vincoli ed n variabili in
Forma
Canonica di minimo
:
● x è il vettore nx1 delle variabili decisionali
● c è il vettore nx1 dei coefficienti di costo della funzione
obiettivo
● b è il vettore mx1 dei termini noti dei vincoli
● A è la matrice mxn dei coefficienti dei vincoli; A=[aij], i=1,...,n,
j=1,...,m n T
R
b
x
c
z
Î
³
³
=
x
0
x
x
A
min
Problemi di Programmazione Lineare:
Forma Standard di minimo
T n
min z c x
Ax b
(1)
x 0 (2)
x R
=
=
³
Î
Condizione: b ≥ 0
●
I valori di x che soddisfano i vincoli (1) sono detti
soluzioni
del problema di PL.
●
Inoltre, i valori di x che soddisfano anche i vincoli (2)
L’ipotesi
m<n
(più
variabili
che
vincoli)
non
rappresenta una perdita di generalità.
E’ noto infatti che il sistema di equazioni lineari (1):
❏
può ammettere una soluzione unica se m=n
❏può ammettere
¥
n-msoluzioni se m<n
Solo il secondo caso è significativo dal punto di vista
dei problemi di ottimizzazione.
Si assumono soddisfatte le seguenti ipotesi:
Ø
m<n
Definizione 1 (Problemi equivalenti)
Due problemi di programmazione lineare di minimo (massimo) (P) e (P') sono equivalenti se, per ogni soluzione ammissibile di (P), possiamo costruire una soluzione ammissibile di (P') con lo stesso valore e, per ogni soluzione ammissibile di (P'), possiamo costruire una soluzione ammissibile di (P) con lo stesso valore.
Osservazione 2
Qualunque problema di PL può essere trasformato in un problema equivalente in forma canonica o standard.
Osservazione 1
Se due problemi di programmazione lineare sono equivalenti allora i valori delle rispettive soluzioni ottime coincidono.
Formulazioni equivalenti:
T Tmax z c x
=
Û -
min
- = -
z
c x
1 2 1 2
max z
=
3x +5x
Û -
min z
- = -
3x
-
5x
EsempioFunzione Obiettivo
Formulazioni equivalenti:
Vincoli
î
í
ì
³
£
Û
=
-£
-Û
³
b
x
A
b
x
A
b
x
A
b
x
A
b
x
A
La nuova variabile x
n+1introdotta prende il
nome di
variabile di slack (scarto)
n
n 1
i
ij j
j 1
x
+
b
a x
=
= -
å
a
ij
x
j
j=1
n
∑
≤ b
i
⇔
a
ij
x
j
j=1
n
∑
+ x
n+1
= b
i
0
1³
+ nx
4x
1
+ 6x
2
≤ 15 ⇔ 4x
1
+ 6x
2
+ x
3
= 15
Variabile di slack: esempio
• x1=1, x2=1 è un assegnamento di valori che soddisfa il vincolo di disuguaglianza (4+6≤15).
In corrispondenza di tale soluzione, è possibile soddisfare il vincolo di uguaglianza assegnando i medesimi valori ad x1 e x2 ed un valore non negativo ad x3: x3=5 è 4+6+5=15
• x1=1, x2=2 è un assegnamento di valori che non soddisfa il vincolo di disuguaglianza (4+12>15).
Non è possibile soddisfare il vincolo di uguaglianza utilizzando lo stesso assegnamento di valori per x1 e x2 ed assegnando un valore non negativo ad x3.
La nuova variabile x
n+1introdotta prende il
nome di
variabile di surplus (eccedenza)
x
n+1
=
a
ij
j=1
n
∑
x
j
− b
i
a
ij
x
j
j=1
n
∑
≥ b
i
⇔
a
ij
x
j
j=1
n
∑
− x
n+1
= b
i
0
1³
+ nx
x
j≤ 0 ⇔ −x
j≥ 0 ⇒ x '
j= −x
j, x '
j≥ 0
Formulazioni equivalenti: variabili ≤ 0
Esempio:
7x
1+ 2x
2= 5 x
1≥ 0, x
2≤ 0
Sostituiamo xj con -x’j ovunque appaia nel modello (vincoli e funzione obiettivo).
7x
1− 2x '
2= 5 x
1≥ 0, x '
2≥ 0, x '
2= −x
2x1=1, x2=-1 è un assegnamento di valori che soddisfa il vincolo.
x1=1, x’2=-x2=1 è un assegnamento di valori che soddisfa il vincolo.
x
jn.v. ⇒ x
j= (x '
j− x ''
j) x '
j≥ 0,x ''
j≥ 0
Formulazioni equivalenti: variabili non vincolate
Esempio:
Sostituiamo xj con la differenza tra x’j e x’’j ovunque appaia nel modello (vincoli e funzione obiettivo).
Il valore (positivo, negativo oppure 0) assunto da xj in ogni soluzione ammissibile sarà ottenuto come differenza tra due numeri non negativi.
7x
1− 2(x '
2− x ''
2) = 7⋅1− 2(−3) = 13 > 5 x
1≥ 0, x '
2≥ 0, x ''
2≥ 0
x1=1, x2=-3 è un assegnamento di valori che soddisfa il vincolo. Infatti 7∙1 - 2(-3) = 13 > 5. Ora fissati due valori per x2’ e x2’’ tali che x2’-x2’’=-3 (ad esempio x2’=6 e x2’’= 9) si ha:
3x1 x2 + x3 <= 3 2x1 3x2 2x3 >= 4 x1 x3 = 2 x1 > = 0 x2 <= 0 x3 n.v. max z = x1 x2 x3
Esercizio
Scrivere la forma canonica e la forma standard per il seguente problema di programmazione lineare.