Sei sulla pagina 1di 4

laboratorio Fondamenti di Ricerca Operativa Prof. F.

Malucelli

Problema della dieta

Una mensa deve pianificare l’acquisto dei seguenti cibi, di cui sono indicati il costo (Euro/hg)
e la massima quantità disponibile (hg).
Cibo Costo Quantità
Pane 0.1 4
Latte 0.5 3
Uova 0.12 1
Carne 0.9 2
Dolce 1.3 2

Si vuole comporre una dieta che soddisfi il fabbisogno delle seguenti sostanze nutritive

Sostanze nutritive Fabbisogno


Calorie 600 cal
Proteine 50 g
Calcio 0.7 g

sfruttando l’apporto (per hg) di sostanze nutritive dei cibi a disposizione.

Cibo Calorie Proteine Calcio


Pane 30 cal 5g 0.02 g
Latte 50 cal 15 g 0.15 g
Uova 150 cal 30 g 0.05 g
Carne 180 cal 90 g 0.08 g
Dolce 400 cal 70 g 0.01 g

Formulare in termini di programmazione lineare il problema di determinare una dieta di costo


complessivo minimo che soddisfi tutti i fabbisogni.

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 dieta.mod)

# SETS

set I;
set J;

# PARAMS

param c{J};
param q{J};
param b{I};
param a{I,J};

Dati (file dieta.dat), valore ottimo: 3.37

data;

set I := Calorie Proteine Calcio;


set J := Pane Latte Uova Carne Dolce;

param: c q :=
Pane 0.1 4
Latte 0.5 3
Uova 0.12 1
Carne 0.9 2
Dolce 1.3 2
;

param b :=
Calorie 600
Proteine 50
Calcio 0.7
;

param a (tr):
Calorie Proteine Calcio :=
Pane 30 5 0.02
Latte 50 15 0.15
Uova 150 30 0.05
Carne 180 90 0.08
Dolce 400 70 0.01
;

Documento preparato da G. Carello, B. Addis e C. Iuliano 2


laboratorio Fondamenti di Ricerca Operativa Prof. F. Malucelli

Soluzione

Formulazione

Insiemi

• I: sostanze nutritive

• J: cibi

Parametri

• cj : costo unitario del j-esimo cibo, con j ∈ J

• qj : massima quantità disponibile del j-esimo cibo, con j ∈ J

• bi : fabbisogno dell’i-esima sostanza nutritiva, con i ∈ I

• aij : quantità di i-esima sostanza nutritiva contenuta in un’unità del j-esimo cibo, con i ∈ I
ej∈J

Variabili decisionali

• xj : quantità del j-esimo cibo, con j ∈ J

Modello
X
min cj xj (costo)
j∈J
s.t.
X
aij xj ≥ bi i∈I (fabbisogno)
j∈J
xj ≤ qj j ∈ J (quantità massima)
xj ≥ 0 j ∈ J (var. non negative)

Documento preparato da G. Carello, B. Addis e C. Iuliano 3


laboratorio Fondamenti di Ricerca Operativa Prof. F. Malucelli

Modello in AMPL (file dieta.mod)

# SETS

set I;
set J;

# PARAMS

param c{J};
param q{J};
param b{I};
param a{I,J};

# VARS

var x{j in J} >= 0, <= q[j];

# OBJECTIVE FUNCTION

minimize costo:
sum{j in J} c[j] * x[j];

# CONSTRAINTS

subject to fabbisogno{i in I}:


sum{j in J} a[i,j] * x[j] >= b[i];

Esecuzione in AMPL (file dieta.run)

model dieta.mod
data dieta.dat
option solver cplex;
solve;
display x;

Soluzione

CPLEX 11.2.0: optimal solution; objective 3.37


1 dual simplex iterations (0 in phase I)
x [*] :=
Carne 1.5
Dolce 0
Latte 3
Pane 4
Uova 1
;

Documento preparato da G. Carello, B. Addis e C. Iuliano 4

Potrebbero piacerti anche