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