Un’azienda agricola produce un mangime per animali derivato dalla miscelazione di 4 ingredienti: mais, fave,
carote e orzo. Non c’è perdita di peso nel processo produttivo quindi i kg totali di mangime sono dati dalla
somma dei kg degli ingredienti utilizzati. Ogni mangime ha un apporto calorico e una quantità di grassi differenti
oltre ad un costo e una disponibilità riportati nella seguente tabella:
Affinchè il mangime sia di buona qualità è necessario soddisfare i seguenti vincoli:
v1. La quantità di calorie totali nel mangime non deve eccedere le 4000 per kg;
v2. La quantità di calorie totali nel mangime deve essere almeno di 3500 per kg;
v3. La quantità di grassi totali nel mangime non deve eccedere 550 per kg;
v4. La quantità di grassi totali nel mangime deve essere almeno di 300 per kg;
v5. La quantità di carote deve essere almeno il doppio di quella delle fave;
v6. La quantità di Orzo può essere al più pari a 3/2 di quella del mais.
Ogni kg di mangime viene venduto a 37 euro. Con riferimento al problema dato:
1.  Formulare un modello AMPL (con i file .mod, .dat e .run) per determinare il piano di produzione che massimizzi
il profitto dell’azienda.
2.  Con riferimento ai vincoli di disponibilità massima, quali sono quelli attivi all’ottimo?
3.  Indicare, per ogni ingrediente, qual è il tasso di incremento della funzione obiettivo se si aumentano i kg
disponibili per quell’ingrediente.
4.  Individuare i range di variabilità dei termini noti rappresentanti la massima disponibilità entro i quali la base
ottima non cambia.
5.  Modificare il modello matematico costruito al punto 1 per far sì che dei quattro vincoli V1,V2,V3,V4 al più due
siano sicuramente soddisfatti.
6.  Modificare il modello matematico costruito al punto 1 per far sì che si possa violare il vincolo v2 a patto di
pagare un costo di 0,50 euro ogni 100 calorie al di sotto delle 3500 di partenza.
max 37 * (x1 + x2 + x3 + x4 ) !13x1 !11x2 !17x3 ! 8x4
s.t.
5000x1 + 2700x2 +1100x3 + 4500x4 " 5000(x1 + x2 + x3 + x4 )
5000x1 + 2700x2 +1100x3 + 4500x4 # 3500(x1 + x2 + x3 + x4 )
700x1 + 320x2 + 75x3 + 578x4 " 550(x1 + x2 + x3 + x4 )
700x1 + 320x2 + 75x3 + 578x4 # 300(x1 + x2 + x3 + x4 )
x1 " 50
x2 " 70
x3 " 80
x4 " 110
x3 # 2x2
x4 " 3 / 2x1
Risultati punti 1-4
……..
CPLEX 12.2.0.0: optimal solution; objective 5157.142857
3 dual simplex iterations (0 in phase I)
suffix up OUT;
suffix down OUT;
suffix current OUT;
solve_result = solved
############ Variables: ###########
x [*] :=
Carote 53.5714
Fave 26.7857
Mais 50
Orzo 75;
############ Slack Variables: ###########
max_disp.slack [*] :=
Carote 26.4286
Fave 43.2143
Mais 0
Orzo 35;
############ Dual Variables: ###########
max_disp [*] :=
Carote 0
Fave 0
Mais 103.143
Orzo 0;
############ Range termini noti: ###########
:
max_disp.up max_disp.down :=
Carote 1e+20
53.5714
Fave 1e+20
26.7857
Mais
73.3333
0
Orzo 1e+20
75
Risultati punto 5
………………………
Times (seconds):
Input = 0.001358
Solve = 0.000988
Output = 0.000776
CPLEX 12.2.0.0: optimal integer solution; objective 6135
0 MIP simplex iterations
0 branch-and-bound nodes
solve_result = solved
#####################################
############ Variables: ###########
x [*] :=
Carote 80
Fave 40
Mais 50
Orzo 75;
#####################################
############ Variabili logiche: ###########
y [*] :=
1 1
2 1
3 1
4 1;
Risultati punto 6
…………………………
Times (seconds):
Input = 0.00114
Solve = 0.031935
Output = 0.000564
CPLEX 12.2.0.0: optimal integer solution; objective 5765
1 MIP simplex iterations
0 branch-and-bound nodes
solve_result = solved
#####################################
############ Variables: ###########
x [*] :=
Carote 80
Fave 40
Mais 50
Orzo 75;
#####################################
############ Variabili logiche: ###########
y = 740
Scarica

dalla miscelazione