SlideShare une entreprise Scribd logo
1  sur  36
 
“ Una cosa su cui stò lavorando è un linguaggio chiamato AMPL che abbiamo creato io, David Gay e Bob Fourer; AMPL è un linguaggio per problemi specifici di ottimizzazione, per configurare cose come problemi di programmazione lineare. Stiamo provando a impacchettarlo così che possa essere usato in processi più grandi. Gli stiamo costruendo sopra un’interfaccia orientata agli oggetti, in modo che possa fare parte di altri programmi o essere usato come un oggetto di COM o COBRA.” Brian Kernighan
Carta d'identità
AMPL è un linguaggio per la modellazione di problemi di programmazione matematica. Non dice al calcolatore cosa deve fare, ma si occupa di “tradurre” un problema di ottimizzazione in una forma che sia comprensibile da un generico risolutore. Quest’ultimo è costituito da un software in grado di trovare una soluzione (qualora esista) per il generico problema di ottimizzazione. Esistono vari tipi di solutori quali MINOS, SNOPT, CPLEX, ecc... Chi è AMPL
 
Due versioni di AMPL: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],Licenze
Ma quanto mi costi? 3000$ (1935€) 2000$ (1290€) 25+ 3600$ (2320€) 2400$ (1545€) 10-24 4200$ (2710€) 2800$ (1805€) 5-9 4800$ (3095€) 3200$ (2060€) 2-4 6000$ (3870€) 4000$ (2580€) 1 Mobili Singole Numero di licenze
AMPL è disponibile per diversi sistemi operativi, Linux incluso.  Le istruzioni per lo scaricamento e l'installazione di AMPL sono disponibili sul sito:   www.ampl.org Sono state anche preparate delle distribuzioni per AMPL (senza interfaccia grafica) per Linux, Windows e MacOSX a: http://or.dhs.org/liberti/didattica/ampl/ Installazione
[object Object],[object Object],[object Object],[object Object],Linea di comando? Meglio l'interfaccia grafica!
Decomprimere  amplvb.zip  e lanciare il programma di installazione  setup.exe .  Quando l'installazione avrà termine, selezionare la voce “Trova” dal Menù Avvio e successivamente “File o cartelle". Cercare il file  ampl.exe  sul drive dove AMPL è stato installato, e individuarne la cartella di Installazione (la scelta di default è la cartella AMPLWIN sotto la  cartella Programmi nel drive C:). Decomprimere ora i files in  cplex.zip  e spostarli manualmente nella cartella di  installazione di AMPL. Lanciando il file eseguibile  Amplwin.exe  situato nella  cartella di installazione di AMPL, dovrebbe partire l'ambiente grafico  sperimentale (per ora piuttosto scarno) di AMPL.
Il terzo file scaricato,  amplcml.zip , contiene una versione a linea di comando (per Windows) di AMPL, che è ridondante rispetto alla versione con interfaccia grafica, ma che risulta tuttavia utile per la cartella MODELS contenente gli esempi.  Si decomprima dunque  amplcml.zip  specificando di estrarre anche le  cartelle.
 
Ciascuna istruzione di AMPL deve terminare con un ‘ ; ’. AMPL è  case sensitive , ovvero distingue le lettere minuscole dalle maiuscole. La dichiarazione di un oggetto deve sempre precedere la sua definizione. Le righe del programma hanno una lunghezza massima di 255 caratteri. Quelli eccedenti vengono ignorati. Regole basilari
[object Object],[object Object],[object Object],[object Object],Istruzioni per l'uso
Perchè due files? La diversificazione delle caratteristiche di un problema nei due files consente una notevole flessibilità all’interfaccia AMPL. In tal modo risulta semplice risolvere lo stesso problema a partire da due istanze diverse, senza l’esigenza di doverlo riscrivere completamente. Dovendo risolvere una tipologia di problema già trattata in passato, è sufficiente riscrivere il solo file dei dati (.dat), e riutilizzare il file riguardante la descrizione del modello (.mod) impostato precedentemente.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Risolutore
[object Object],[object Object],[object Object],[object Object],[object Object],CPLEX
MINOS ,[object Object],[object Object],[object Object],[object Object],[object Object]
CONOPT ,[object Object],[object Object],[object Object],[object Object],[object Object]
SNOPT ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Cosa facciamo noi
[object Object],[object Object],[object Object],[object Object],Cosa fa AMPL
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Vantaggi
[object Object],[object Object],[object Object],Svantaggi
Per maggiori informazioni CPLEX:  http://www.ilog.com/products/cplex/ MINOS:  http://www.stanford.edu/group/SOL/guides/minos.htm SNOPT:  http://www.stanford.edu/group/SOL/guides/snopt.htm CONOPT:  http://www.conopt.com
Praticamente... Installazione degli inceneritori Una giunta comunale deve decidere l'installazione di alcuni inceneritori scegliendo tra 10 aree A1,…,A10 nelle vicinanze di 7 città B1,…,B7. La seguente tabella mostra, nelle caselle segnate con “*", se l'area e vicina alla città; la penultima riga mostra la capacita di ogni impianto (in tonnellate all'anno) e l'ultima il costo di installazione, in milioni di euro:
Supponendo che l'amministrazione non voglia piazzare più di un impianto vicino ad ogni città, formulare un modello di Programmazione Lineare Intera che risolve il problema di massimizzare la capacita produttiva totale degli impianti aperti, mantenendo il costo totale di installazione inferiore al budget di 25 milioni di euro.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Funzione obiettivo: ,[object Object],[object Object],[object Object]
Modello e dati AMPL File inceneritori.mod : # DEFINIZIONE DEGLI INSIEMI set M; set N; # DEFINIZIONE DEI PARAMETRI param costo{M}>=0; param t{M,N} binary; param capacita{M}>=0; param budget_max>=0; # DEFINIZIONE DELLA VARIABILE PRESENZA INCENERITORE var x{M}  binary; # FUNZIONE OBIETTIVO maximize cap_totale: sum{i in M} capacita[i] * x[i]; # DEFINIZIONE DEI VINCOLI subject to packing{j in N}: sum{i in M} t[i,j] * x[i] <= 1; subject to budget: sum{i in M} costo[i] * x[i] <= budget_max;
File dieta.dat: # POPOLAZIONE DEGLI INSIEMI set M:=1 2 3 4 5 6 7 8 9 10; set N:=1 2 3 4 5 6 7; #POPOLAZIONE DEI PARAMETRI param costo := 1  4 2  7 3  8 4  4 5  6 6  9 7 10 8 10 9  8 10  6;
param t :  1 2 3 4 5 6 7 := 1  0 1 0 1 0 0 0 2  1 1 0 0 0 1 0 3  0 0 0 1 1 0 1 4  0 1 0 0 1 0 0 5  1 0 1 1 0 0 0 6  1 0 0 0 0 0 1 7  1 0 0 1 1 0 1 8  0 1 1 1 0 1 1 9  1 0 1 1 0 1 0 10  0 0 0 1 1 0 1 ;
param capacita:= 1  450 2  720 3  580 4  460 5  660 6  390 7  510 8 1000 9  830 10  680; param budget_max := 25;
Soluzione CPLEX 8.1.0: optimal integer solution; objective 1400 5 MIP simplex iterations 0 branch-and-bound nodes cap_totale = 1400.0000 x [*] := 1 0.0000 2 1.0000 3 0.0000 4 0.0000 5 0.0000 6 0.0000 7 0.0000 8 0.0000 9 0.0000 10 1.0000 ;
Macaluso Dario Pennacchi Marco Staff Stangoni Gabriele

Contenu connexe

En vedette

Proloquo2 go tutorial-basics
Proloquo2 go tutorial-basicsProloquo2 go tutorial-basics
Proloquo2 go tutorial-basicsRob LeFebvre
 
- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012
- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012
- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012Essam Shaban
 
How to Lead Without Followers Manifesto by Dave Ursillo
How to Lead Without Followers Manifesto by Dave UrsilloHow to Lead Without Followers Manifesto by Dave Ursillo
How to Lead Without Followers Manifesto by Dave UrsilloDave Ursillo
 
Postales Navidad 4º primaria
Postales Navidad 4º primariaPostales Navidad 4º primaria
Postales Navidad 4º primariaAna Yelo Villalba
 
SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...
SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...
SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...Narcis Narcis
 
презентация1
презентация1презентация1
презентация1Intravision
 
Foreign communitiy Perm Krai
Foreign communitiy Perm KraiForeign communitiy Perm Krai
Foreign communitiy Perm KraiDaria007
 
pue ruskeapaita
pue ruskeapaitapue ruskeapaita
pue ruskeapaitanewula
 
Horror Film Pitch
Horror Film PitchHorror Film Pitch
Horror Film Pitchiamfin
 
Ipadcommunicationapps 110921070532-phpapp01
Ipadcommunicationapps 110921070532-phpapp01Ipadcommunicationapps 110921070532-phpapp01
Ipadcommunicationapps 110921070532-phpapp01Rob LeFebvre
 
Getting Help with Marketo
Getting Help with MarketoGetting Help with Marketo
Getting Help with MarketoJosh Hill
 
Esitys1
Esitys1Esitys1
Esitys1newula
 

En vedette (20)

Proloquo2 go tutorial-basics
Proloquo2 go tutorial-basicsProloquo2 go tutorial-basics
Proloquo2 go tutorial-basics
 
- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012
- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012
- انتخابات الرئاسة والموقف من الدستور .. موقفنا السياسى ابرايل 2012
 
i4invitation Concept
i4invitation Concepti4invitation Concept
i4invitation Concept
 
How to Lead Without Followers Manifesto by Dave Ursillo
How to Lead Without Followers Manifesto by Dave UrsilloHow to Lead Without Followers Manifesto by Dave Ursillo
How to Lead Without Followers Manifesto by Dave Ursillo
 
LA FOTO DE NAVIDAD
LA FOTO DE NAVIDADLA FOTO DE NAVIDAD
LA FOTO DE NAVIDAD
 
PRESENT PERFECT
PRESENT PERFECTPRESENT PERFECT
PRESENT PERFECT
 
Postales Navidad 4º primaria
Postales Navidad 4º primariaPostales Navidad 4º primaria
Postales Navidad 4º primaria
 
SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...
SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...
SIFERA Luxury houses, emotional experience, sustainable, chic design. A taste...
 
презентация1
презентация1презентация1
презентация1
 
Winston Churchill
Winston ChurchillWinston Churchill
Winston Churchill
 
Wynn reader
Wynn readerWynn reader
Wynn reader
 
Foreign communitiy Perm Krai
Foreign communitiy Perm KraiForeign communitiy Perm Krai
Foreign communitiy Perm Krai
 
pue ruskeapaita
pue ruskeapaitapue ruskeapaita
pue ruskeapaita
 
Horror Film Pitch
Horror Film PitchHorror Film Pitch
Horror Film Pitch
 
FINAL ENGLISH TEST - MID II
FINAL ENGLISH TEST - MID IIFINAL ENGLISH TEST - MID II
FINAL ENGLISH TEST - MID II
 
ESCRITORES LATINOAMERICANOS
ESCRITORES LATINOAMERICANOSESCRITORES LATINOAMERICANOS
ESCRITORES LATINOAMERICANOS
 
Ipadcommunicationapps 110921070532-phpapp01
Ipadcommunicationapps 110921070532-phpapp01Ipadcommunicationapps 110921070532-phpapp01
Ipadcommunicationapps 110921070532-phpapp01
 
Tic San José Norte School - Bogotá, Colombia
Tic San José Norte School - Bogotá, ColombiaTic San José Norte School - Bogotá, Colombia
Tic San José Norte School - Bogotá, Colombia
 
Getting Help with Marketo
Getting Help with MarketoGetting Help with Marketo
Getting Help with Marketo
 
Esitys1
Esitys1Esitys1
Esitys1
 

Similaire à Ricerca Operativa - AMPL

Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Daniele Falamesca
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Codemotion
 
Attacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowAttacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowGiacomo Antonino Fazio
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: AlgoritmiMajong DevJfu
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Nicola Paoletti
 
Connector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIPConnector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIPGiacomo Lamonaco
 
Presentazione Andreacannella
Presentazione AndreacannellaPresentazione Andreacannella
Presentazione AndreacannellaAndrea Cannella
 
Presentazione Andrea Cannella Linux Day Scicli 2009
Presentazione Andrea Cannella Linux Day Scicli 2009Presentazione Andrea Cannella Linux Day Scicli 2009
Presentazione Andrea Cannella Linux Day Scicli 2009guest97f362
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++Giovanni Della Lunga
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86Massimiliano Torregiani
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19Ionela
 
Recensione
RecensioneRecensione
Recensionegioele5
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a MatlabMarco Suma
 
Sistemi operativi proprietari
Sistemi operativi proprietariSistemi operativi proprietari
Sistemi operativi proprietariGiadarossi
 

Similaire à Ricerca Operativa - AMPL (20)

Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
 
Reportage Delphi Day 2012
Reportage Delphi Day 2012Reportage Delphi Day 2012
Reportage Delphi Day 2012
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
Modulo 1 - Lezione 1
Modulo 1 - Lezione 1Modulo 1 - Lezione 1
Modulo 1 - Lezione 1
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
Attacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowAttacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflow
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011
 
Connector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIPConnector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIP
 
GNU Linux Programming introduction
GNU Linux Programming introductionGNU Linux Programming introduction
GNU Linux Programming introduction
 
Presentazione Andreacannella
Presentazione AndreacannellaPresentazione Andreacannella
Presentazione Andreacannella
 
Presentazione Andrea Cannella Linux Day Scicli 2009
Presentazione Andrea Cannella Linux Day Scicli 2009Presentazione Andrea Cannella Linux Day Scicli 2009
Presentazione Andrea Cannella Linux Day Scicli 2009
 
Open xml
Open xmlOpen xml
Open xml
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
 
Recensione
RecensioneRecensione
Recensione
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a Matlab
 
Sistemi operativi proprietari
Sistemi operativi proprietariSistemi operativi proprietari
Sistemi operativi proprietari
 

Ricerca Operativa - AMPL

  • 1.  
  • 2. “ Una cosa su cui stò lavorando è un linguaggio chiamato AMPL che abbiamo creato io, David Gay e Bob Fourer; AMPL è un linguaggio per problemi specifici di ottimizzazione, per configurare cose come problemi di programmazione lineare. Stiamo provando a impacchettarlo così che possa essere usato in processi più grandi. Gli stiamo costruendo sopra un’interfaccia orientata agli oggetti, in modo che possa fare parte di altri programmi o essere usato come un oggetto di COM o COBRA.” Brian Kernighan
  • 4. AMPL è un linguaggio per la modellazione di problemi di programmazione matematica. Non dice al calcolatore cosa deve fare, ma si occupa di “tradurre” un problema di ottimizzazione in una forma che sia comprensibile da un generico risolutore. Quest’ultimo è costituito da un software in grado di trovare una soluzione (qualora esista) per il generico problema di ottimizzazione. Esistono vari tipi di solutori quali MINOS, SNOPT, CPLEX, ecc... Chi è AMPL
  • 5.  
  • 6.
  • 7.
  • 8. Ma quanto mi costi? 3000$ (1935€) 2000$ (1290€) 25+ 3600$ (2320€) 2400$ (1545€) 10-24 4200$ (2710€) 2800$ (1805€) 5-9 4800$ (3095€) 3200$ (2060€) 2-4 6000$ (3870€) 4000$ (2580€) 1 Mobili Singole Numero di licenze
  • 9. AMPL è disponibile per diversi sistemi operativi, Linux incluso. Le istruzioni per lo scaricamento e l'installazione di AMPL sono disponibili sul sito: www.ampl.org Sono state anche preparate delle distribuzioni per AMPL (senza interfaccia grafica) per Linux, Windows e MacOSX a: http://or.dhs.org/liberti/didattica/ampl/ Installazione
  • 10.
  • 11. Decomprimere amplvb.zip e lanciare il programma di installazione setup.exe . Quando l'installazione avrà termine, selezionare la voce “Trova” dal Menù Avvio e successivamente “File o cartelle&quot;. Cercare il file ampl.exe sul drive dove AMPL è stato installato, e individuarne la cartella di Installazione (la scelta di default è la cartella AMPLWIN sotto la cartella Programmi nel drive C:). Decomprimere ora i files in cplex.zip e spostarli manualmente nella cartella di installazione di AMPL. Lanciando il file eseguibile Amplwin.exe situato nella cartella di installazione di AMPL, dovrebbe partire l'ambiente grafico sperimentale (per ora piuttosto scarno) di AMPL.
  • 12. Il terzo file scaricato, amplcml.zip , contiene una versione a linea di comando (per Windows) di AMPL, che è ridondante rispetto alla versione con interfaccia grafica, ma che risulta tuttavia utile per la cartella MODELS contenente gli esempi. Si decomprima dunque amplcml.zip specificando di estrarre anche le cartelle.
  • 13.  
  • 14. Ciascuna istruzione di AMPL deve terminare con un ‘ ; ’. AMPL è case sensitive , ovvero distingue le lettere minuscole dalle maiuscole. La dichiarazione di un oggetto deve sempre precedere la sua definizione. Le righe del programma hanno una lunghezza massima di 255 caratteri. Quelli eccedenti vengono ignorati. Regole basilari
  • 15.
  • 16. Perchè due files? La diversificazione delle caratteristiche di un problema nei due files consente una notevole flessibilità all’interfaccia AMPL. In tal modo risulta semplice risolvere lo stesso problema a partire da due istanze diverse, senza l’esigenza di doverlo riscrivere completamente. Dovendo risolvere una tipologia di problema già trattata in passato, è sufficiente riscrivere il solo file dei dati (.dat), e riutilizzare il file riguardante la descrizione del modello (.mod) impostato precedentemente.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. Per maggiori informazioni CPLEX: http://www.ilog.com/products/cplex/ MINOS: http://www.stanford.edu/group/SOL/guides/minos.htm SNOPT: http://www.stanford.edu/group/SOL/guides/snopt.htm CONOPT: http://www.conopt.com
  • 27. Praticamente... Installazione degli inceneritori Una giunta comunale deve decidere l'installazione di alcuni inceneritori scegliendo tra 10 aree A1,…,A10 nelle vicinanze di 7 città B1,…,B7. La seguente tabella mostra, nelle caselle segnate con “*&quot;, se l'area e vicina alla città; la penultima riga mostra la capacita di ogni impianto (in tonnellate all'anno) e l'ultima il costo di installazione, in milioni di euro:
  • 28. Supponendo che l'amministrazione non voglia piazzare più di un impianto vicino ad ogni città, formulare un modello di Programmazione Lineare Intera che risolve il problema di massimizzare la capacita produttiva totale degli impianti aperti, mantenendo il costo totale di installazione inferiore al budget di 25 milioni di euro.
  • 29.
  • 30.
  • 31. Modello e dati AMPL File inceneritori.mod : # DEFINIZIONE DEGLI INSIEMI set M; set N; # DEFINIZIONE DEI PARAMETRI param costo{M}>=0; param t{M,N} binary; param capacita{M}>=0; param budget_max>=0; # DEFINIZIONE DELLA VARIABILE PRESENZA INCENERITORE var x{M} binary; # FUNZIONE OBIETTIVO maximize cap_totale: sum{i in M} capacita[i] * x[i]; # DEFINIZIONE DEI VINCOLI subject to packing{j in N}: sum{i in M} t[i,j] * x[i] <= 1; subject to budget: sum{i in M} costo[i] * x[i] <= budget_max;
  • 32. File dieta.dat: # POPOLAZIONE DEGLI INSIEMI set M:=1 2 3 4 5 6 7 8 9 10; set N:=1 2 3 4 5 6 7; #POPOLAZIONE DEI PARAMETRI param costo := 1 4 2 7 3 8 4 4 5 6 6 9 7 10 8 10 9 8 10 6;
  • 33. param t : 1 2 3 4 5 6 7 := 1 0 1 0 1 0 0 0 2 1 1 0 0 0 1 0 3 0 0 0 1 1 0 1 4 0 1 0 0 1 0 0 5 1 0 1 1 0 0 0 6 1 0 0 0 0 0 1 7 1 0 0 1 1 0 1 8 0 1 1 1 0 1 1 9 1 0 1 1 0 1 0 10 0 0 0 1 1 0 1 ;
  • 34. param capacita:= 1 450 2 720 3 580 4 460 5 660 6 390 7 510 8 1000 9 830 10 680; param budget_max := 25;
  • 35. Soluzione CPLEX 8.1.0: optimal integer solution; objective 1400 5 MIP simplex iterations 0 branch-and-bound nodes cap_totale = 1400.0000 x [*] := 1 0.0000 2 1.0000 3 0.0000 4 0.0000 5 0.0000 6 0.0000 7 0.0000 8 0.0000 9 0.0000 10 1.0000 ;
  • 36. Macaluso Dario Pennacchi Marco Staff Stangoni Gabriele