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