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". 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.
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 “*", 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;