Soluzione - Fabio Panozzo

Transcript

Soluzione - Fabio Panozzo
laboratorio
Fondamenti di Ricerca Operativa
Prof. F. Malucelli
Miscelazione di benzine
Una raffineria deve miscelare 4 tipi di petrolio grezzo per ottenere 3 tipi di benzina. La tabella
seguente mostra la massima quantità disponibile per ogni tipo di petrolio grezzo (in barili) e il
corrispondente costo (Euro/barile).
Tipo di petrolio
1
2
3
4
Disponibilità
5000
2400
4000
1500
Costo
9
7
12
6
La specificazione tecnica di ogni tipo di benzina, vincola la quantità usata di ogni petrolio
per la sua produzione. La tabella seguente mostra questo vincolo di miscelazione insieme al
rispettivo prezzo di vendita (Euro/barile) .
Tipo di benzina
A
B
C
Petrolio richiesto
almeno 20% di tipo 2
al massimo 30% di tipo 3
almeno 40% di tipo 3
al massimo 50% di tipo 2
Prezzo
12
18
10
Formulare in termini di programmazione lineare il problema di determinare come la raffineria
deve miscelare i diversi olii in modo tale da massimizzare il profitto.
Documento preparato da G. Carello, B. Addis e C. Iuliano
1
laboratorio
Fondamenti di Ricerca Operativa
Prof. F. Malucelli
Schema del modello in AMPL (file miscelazione.mod)
# SETS
set I;
set J;
# PARAMS
param
param
param
param
param
c{I};
b{I};
r{J};
q_max{I,J} default 1;
q_min{I,J} default 0;
Dati (file miscelazione.dat), valore ottimo: 96000
data;
set I := 1 2 3 4;
set J := A B C;
param c :=
1
9
2
7
3
12
4
6
;
param b :=
1
5000
2
2400
3
4000
4
1500
;
param r :=
A
12
B
18
C
10
;
param q_max :=
3 A 0.3
2 C 0.5
;
param q_min :=
2 A 0.2
3 B 0.4
;
Documento preparato da G. Carello, B. Addis e C. Iuliano
2
laboratorio
Fondamenti di Ricerca Operativa
Prof. F. Malucelli
Soluzione
Formulazione
Insiemi
• I: petroli
• J: benzine
Parametri
• ci : costo per barile dell’i esimo tipo di petrolio, con i ∈ I
• bi : massima disponibilità dell’i-esimo tipo di petrolio, con i ∈ I
• rj : prezzo di vendita per barile del j esimo tipo di benzina, con j ∈ J
max : massima quantità (in percentuale) dell’i-esimo tipo di petrolio per il j-esimo tipo di
• qij
benzina, con i ∈ I e j ∈ J
min : minima quantità (in percentuale) dell’i-esimo tipo di petrolio per il j-esimo tipo di
• qij
benzina, con i ∈ I e j ∈ J
Variabili decisionali
• xij : quantità dell’i-esimo tipo di petrolio nel j-esimo tipo di benzina, con i ∈ I e j ∈ J
• yj : quantità venduta del j-esimo tipo di benzina, con j ∈ J
Modello
min
X
j∈J
s.t.
X
X
r j yj −
(profitto)
ci xij
i∈I,j∈J
i∈I
(disponibilità)
j∈J
(conservazione)
max
xij ≤ qij
yj
i ∈ I, j ∈ J
(quantità massima)
min
qij
yj
i ∈ I, j ∈ J
(quantità minima)
i ∈ I, j ∈ J
(variabili non negative)
xij ≤ bi
j∈J
yj =
X
xij
i∈I
xij ≥
xij , yj ≥ 0
Documento preparato da G. Carello, B. Addis e C. Iuliano
3
laboratorio
Fondamenti di Ricerca Operativa
Prof. F. Malucelli
Effettuando la sostituzione delle variabili yj , con j ∈ J, si ottiene il modello alternativo:
Modello
min
X
(rj − ci )yj
(profitto)
i∈I,j∈J
s.t.
X
i∈I
(disponibilità)
xi′ j
i ∈ I, j ∈ J
(quantità massima)
xi′ j
i ∈ I, j ∈ J
(quantità minima)
i ∈ I, j ∈ J
(var. non negative)
xij ≤ bi
j∈J
max
xij ≤ qij
X
i′ ∈I
min
xij ≥ qij
X
i′ ∈I
xij , yj ≥ 0
Notare il differente indice nella sommatoria dei vincoli di blending.
Documento preparato da G. Carello, B. Addis e C. Iuliano
4
laboratorio
Fondamenti di Ricerca Operativa
Prof. F. Malucelli
Modello in AMPL (file miscelazione.mod)
# SETS
set I;
set J;
# PARAMS
param
param
param
param
param
c{I};
b{I};
r{J};
q_max{I,J} default 1;
q_min{I,J} default 0;
# VARS
var x{I,J} >= 0;
var y{J} >= 0;
# OBJECTIVE FUNCTION
maximize profitto:
sum{j in J} r[j] * y[j] - sum{i in I, j in J} c[i] * x[i,j];
# CONSTRAINTS
subject to disponibilita{i in I}:
sum{j in J} x[i,j] <= b[i];
subject to conservazione{j in J}:
y[j] = sum{i in I} x[i,j];
subject to quantita_max{i in I, j in J}:
x[i,j] <= q_max[i,j] * y[j];
subject to quantita_min{i in I, j in J}:
x[i,j] >= q_min[i,j] * y[j];
Esecuzione in AMPL (file miscelazione.run)
model miscelazione.mod
data miscelazione.dat
option display_1col 0;
option solver cplex;
solve;
display x,y;
Documento preparato da G. Carello, B. Addis e C. Iuliano
5
laboratorio
Fondamenti di Ricerca Operativa
Prof. F. Malucelli
Soluzione
CPLEX 11.2.0: optimal solution; objective 96000
2 dual simplex iterations (0 in phase I)
x [*,*]
:
A
B
C
:=
1
2320
2680
0
2
580
1820
0
3
0
4000
0
4
0
1500
0
;
y [*] :=
A 2900
;
B 10000
C
0
Modello alternativo in AMPL (file miscelazione-b.mod)
# SETS
set I;
set J;
# PARAMS
param
param
param
param
param
c{I};
b{I};
r{J};
q_max{I,J} default 1;
q_min{I,J} default 0;
# VARS
var x{I,J} >= 0;
# OBJECTIVE FUNCTION
maximize profitto:
sum{i in I, j in J} (r[j] - c[i]) * x[i,j];
# CONSTRAINTS
subject to disponibilita{i in I}:
sum{j in J} x[i,j] <= b[i];
subject to quantita_max{i in I, j in J}:
x[i,j] <= q_max[i,j] * sum{i2 in I} x[i2,j];
subject to quantita_min{i in I, j in J}:
x[i,j] >= q_min[i,j] * sum{i2 in I} x[i2,j];
Documento preparato da G. Carello, B. Addis e C. Iuliano
6