• Save
Ricerca Operativa - AMPL
Upcoming SlideShare
Loading in...5
×
 

Ricerca Operativa - AMPL

on

  • 1,404 views

 

Statistics

Views

Total Views
1,404
Views on SlideShare
1,395
Embed Views
9

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 9

http://statisticvillage.altervista.org 9

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ricerca Operativa - AMPL Ricerca Operativa - AMPL Presentation Transcript

  •  
  • “ 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:
    • 1. AMPL Student Edition :
      • E’ gratuita
      • Comprende il software AMPL
      • Comprende due risolutori MINOX e CPLEX
      • Ha come limite 300 variabili e 300 vincoli
      • Non ci sono funzioni predefinite
    • 2. AMPL Professional Edition :
      • Non ha restrizioni
      • Non ha limiti di variabili e di vincoli
      • Sono disponibili numerosi risolutori
      • Ci sono pacchetti del software AMPL con risolutori selezionati
      • Possibile aggiunta di ulteriori risolutori
    •  
    • Esistono due tipi di licenze:
    • La licenza per la singola macchina è legata ad un computer specifico, e consente l’uso di AMPL solo sul quel computer.
    • La licenza mobile è installata su un computer in cui viene designato il server AMPL, ma è disponibile su qualsiasi computer nella propria rete, pur consentendo l’uso solo ad un computer per volta. Il numero massimo di computer che utilizzano AMPL contemporaneamente in rete dipende dal numero di licenze acquistate. La rete viene definita comunicando una lista degli indirizzi IP.
    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
    • È’ necessario scaricare da internet i seguenti files:
    • http://www.ampl.com/GUI/amplvb.zip
    • http://netlib.bell-labs.com/netlib/ampl/student/mswin/cplex.zip
    • http://www.ampl.com/NEW/TABLES/amplcml.zip
    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
    • Un problema di programmazione matematica viene tradotto da AMPL in una forma comprensibile al risolutore.
    • È data all’utente la possibilità di suddividere il problema in due diversi files:
    • Il file con estensione .mod , che contiene la dichiarazione dei parametri e delle variabili, la struttura e la descrizione dei vincoli e della funzione obiettivo, ovvero contiene la descrizione vera e propria del problema di partenza;
    • Il file con estensione obbligatoria .dat , che contiene i valori numerici che assumono i parametri del problema.
    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.
    • AMPL si avvale necessariamente di un risolutore
    • Software che prende in input una descrizione di un problema (modello + dati) e restituisce in output una soluzione (se esiste)
    • Se ne possono usare diversi a secondo della struttura del problema:
      • Lineari Continui
      • Lineari Interi
      • Non Lineari
    • Hanno dei parametri che possono ridurre drasticamente i tempi di risoluzione
    Risolutore
    • Sviluppato da Robert E. Bixby
    • Lineari Continui e Lineari Interi
    • Usa un'implementazione dell'algoritmo del simplesso
    • E’ disponibile una libreria per l'interfacciamento con Java ed altri linguaggi
    • Può essere impiegato anche per la risoluzione di problemi di programmazione quadratica convessa
    CPLEX
  • MINOS
    • Sviluppato da Systems Optimization Laboratory, Stanford University
    • Non Lineare
    • Più vecchio, più usato
    • Gestisce un grande numero di vincoli non lineari
    • I modelli con vincoli lineari sono risolti con una tecnica minimizzatrice molto efficiente e affidabile
  • CONOPT
    • Sviluppato da ARKI Consulting and Development in Danimarca
    • Non Lineare
    • Ha una fase di pre-elaborazione dove variabili ed equazioni ricorsive sono risolte e rimosse dal modello
    • Può utilizzare le derivate seconde
    • E’ stato progettato per modelli grandi e rari
  • SNOPT
    • Sviluppato da Philip Gill, Walter Murray, Michael Saunders
    • Non Lineare
    • È un sistema multiuso per risolvere problemi di ottimizzazione che coinvolgono molte variabili e vincoli
    • E’ più efficiente con un numero di vincoli pari al numero delle variabili
    • Usa un algoritmo di programmazione quadratica sequenziale
    • Stabiliamo il risolutore più adatto alle nostre esigenze
    • Lo installiamo manualmente nella cartella di installazione di AMPL
    • Carichiamo Il file con estensione .mod
    • Carichiamo il file con estensione obbligatoria .dat
    • Richiamiamo il risolutore mediante il comando:
    • option solver nome risolutore
    Cosa facciamo noi
    • Scrive il modello tradotto e i dati in tanti files stub.xxx , ognuno dei quali contiene dei dati che descrivono il programma matematico.
    • Passa il nome stub seguito da –AMPL al risolutore
    • Il risolutore trova la soluzione e la scrive in un file stub.sol
    • AMPL legge il file stub.sol e visualizza la soluzione
    Cosa fa AMPL
    • AMPL è uno dei più diffusi linguaggi per la modellazione di problemi di programmazione matematica.
    • Può essere utilizzato per risolvere problemi preimpostati o come ambiente di sviluppo interattivo.
    • È documentato.
    • È in grado di modellare problemi lineari, lineari interi e non lineari.
    • Dispone di un ampio ventaglio di solutori compatibili.
    • È multipiattaforma.
    • Può affidare la gestione dei dati ad un database esterno cui accedere quando è necessario
    • Sintassi simile alla notazione matematica dei problemi di ottimizzazione
    Vantaggi
    • Non è molto conosciuto dall’utente medio.
    • Lo sviluppo di nuove caratteristiche può essere di difficile coordinamento.
    • È orientato solo al testo, non sono previsti grafici dei risultati.
    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.
    • Formulazione
    • Insiemi :
    • Aree (M)
    • Città (N)
    • Parametri :
    • Sia t ij =1 se l'area i e vicina alla città j e 0 altrimenti (come da tabella nel
    • testo del problema).
    • Sia c i il costo di installazione di un inceneritore sull’area i.
    • Sia C i la capacità di smaltimento di un inceneritore costruito sull'area i.
    • Sia B il budget disponibile (B = 25).
    • Variabili :
    • Sia x i =1 se un inceneritore viene costruito sull’area i e 0 altrimenti (x i Є {0,1}).
  • Funzione obiettivo:
    • Vincoli:
    • Ogni città deve essere servita da non più di un inceneritore.
    • Budget
  • 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