Ottimizzazione Combinatoria



Documenti analoghi
Progetto e ottimizzazione di reti 2

Ottimizzazione Combinatoria

Introduzione. AMPL Introduzione. F. Rinaldi. Dipartimento di Matematica Università di Padova. Corso di Laurea Matematica. F. Rinaldi AMPL Introduzione

1 Breve introduzione ad AMPL

AMPL Plus: Introduzione all uso

Introduzione al MATLAB c Parte 2

Ottimizzazione Combinatoria

Ottimizzazione Combinatoria

SIMULAZIONE ESAME di OTTIMIZZAZIONE Corso di Laurea in Ingegneria Gestionale 2 o anno

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A Facoltà di Ingegneria Sede di Latina

Linguaggi di modellizzazione

min 4x 1 +x 2 +x 3 2x 1 +x 2 +2x 3 = 4 3x 1 +3x 2 +x 3 = 3 x 1 +x 2 3x 3 = 5 Innanzitutto scriviamo il problema in forma standard: x 1 x 2 +3x 3 = 5

Informa(ca Appun% dal laboratorio 2

Modelli di programmazione lineare. Il metodo grafico è basato su linearità della funzione obiettivo linearità dei vincoli

Laboratorio di Informatica

Università Ca Foscari Venezia

Laboratorio. Ricerca Operativa

Istituzioni di Economia Laurea Triennale in Ingegneria Gestionale Lezione 16 Offerta dell impresa

Metodologie di programmazione in Fortran 90

Funzioni in C. Violetta Lonati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

ALGEBRA DELLE PROPOSIZIONI

Università degli Studi di Roma La Sapienza, Facoltà di Ingegneria

Ottimizzazione Multi Obiettivo

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Studente: SANTORO MC. Matricola : 528

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

INTRODUZIONE A EXCEL ESERCITAZIONE I

Appello di Ricerca Operativa A.A (29/3/2007)

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

INTRODUZIONE. Cplex è un software per la risoluzione di Problemi di Programmazione Lineare e Lineare Intera;

Ottimizzazione nella gestione dei progetti Capitolo 4: la gestione dei costi (Programmazione multimodale): formulazioni

TSP con eliminazione di sottocicli

Raggruppamenti Conti Movimenti

Soluzione di problemi di ottimizzazione

Problema del Trasporto. Container vuoti Verona 10 Perugia 12 Roma 20 Pescara 24 Taranto 18 Lamezia 40

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

STAMPA UNIONE DI WORD

Vettori Algoritmi elementari di ordinamento

ESERCITAZIONE SU ACCESS

Javascript: il browser

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA

ShellExcel. Una domanda contiene i riferimenti (#A, #B, #C) alle celle che contengono i dati numerici del

Excel avanzato. I nomi. Gli indirizzi e le formule possono essere sostituiti da nomi. Si creano tramite Inserisci Nome Definisci

La valutazione delle rimanenze di magazzino

Guida all installazione e all aggiornamento di Virtuemart 2.0.x

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

ANNO SCOLASTICO

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270)

Laboratorio di Informatica

Software di base. Corso di Fondamenti di Informatica

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA

Fogli Elettronici: MS Excel

Università di Roma La Sapienza, Facoltà di Ingegneria

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Equilibrio bayesiano perfetto. Giochi di segnalazione

Ammortamento di un debito

DATABASE. nozioni di base

Informatica per le discipline umanistiche 2 lezione 14

Ricerca Operativa e Logistica Dott. F.Carrabs e Dott.ssa M.Gentili. Introduzione

Esercizi su. Funzioni

(anno accademico )

Concetti preliminari teorici per il corso di Access Avanzato - Sc.Elem Falcone - PON Prof. M. Simone

Cos è l ISC (Indicatore Sintetico del Conto Corrente) e cosa sono i Profili tipo d utilizzo

Capitolo 13. Interrogare una base di dati

Programmi e Oggetti Software

UML Diagrammi delle classi. UML Diagramma classi 1

Object Oriented Software Design

Corso di Informatica

Come gestire le directory con R

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Un problema di Capital Budgeting

Maxima: mini guida. Presentazione del software matematico MAXIMA

Uso di base delle funzioni in Microsoft Excel

Introduzione a ROOT. 1. Informazioni generali

PIATTAFORMA DOCUMENTALE CRG

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Alcune regole di base per scrivere un programma in linguaggio C

Cliccare su "Esegui" oppure su salva se si desidera effettuare l'installazione in un secondo momento.

Lezione III Power Point. Laboratorio di Calcolo Ottica e optometria

Nozione di algoritmo. Gabriella Trucco

Introduzione ai database relazionali

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

Introduzione all uso di un programma per analisi agli Elementi Finiti

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Ricerca Operativa e Logistica

SCHEDA DI RECUPERO SUI NUMERI RELATIVI

Concetto di Funzione e Procedura METODI in Java

Manuale Utente Albo Pretorio GA

RISOLUTORE AUTOMATICO PER SUDOKU

Linguaggi di programmazione

Il web server Apache Lezione n. 3. Introduzione

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Ricerca Operativa (Compito A) Appello del 18/06/2013 Andrea Scozzari

Gestione Impresa. Mese Unità richieste

Strumenti e metodi per la redazione della carta del pericolo da fenomeni torrentizi

Transcript:

Ottimizzazione Combinatoria Esercitazione AMPL A.A. 2010-20112011 Esercitazione a cura di Silvia Canale contatto e-mail: canale@dis.uniroma1.it Università i di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Laurea in Ingegneria Gestionale 1

AMPL in breve A Mathematical Programming Language AMPL è un linguaggio di modellazione algebrico per problemi di programmazione matematica: - problemi lineari e non lineari - problemi in variabili intere e continue AMPL impiega una notazione basata su concetti semplici e di uso comune per rendere più facile il processo di modellazione di un problema. Una volta formulato tramite il linguaggio AMPL, occorre un opportuno solutore di programmazione matematica per risolvere il problema. L interprete AMPL permette di risolvere un problema formulato tramite il linguaggio AMPL impiegando direttamente un solutore di programmazione matematica. 2

Solutori per AMPL Sono disponibili diversi solutori tramite l interfaccia grafica AMPL. La scelta del solutore dipende dal tipo di problema: - Problemi di programmazione lineare: con variabili continue: GUROBI, BPMPD, CPLEX, LAMPS, LOQO, lp_solve, MINOS, MOSEK, OSL, SOPT, XA, Xpress-MP con variabili intere: GUROBI, CPLEX, LAMPS, lp_solve, MINTO, MOSEK, OSL, SOPT, XA, Xpress-MP - Problemi di programmazione non lineare: quadratici: CPLEX, MOSEK, OSL convessi: MOSEK, SOPT generali continui: CONOPT, DONLP2, FILTER, FSQP, IPOPT, KNITRO, LANCELOT, LOQO, MINOS, NPSOL, PENNON, SNOPT generali interi: MINLP In questo corso utilizzeremo l interprete AMPL ed il solutore CPLEX, versione student. 3

Software AMPL Sito ufficiale: www.ampl.com Tutte le informazioni relative ad AMPL si trovano sul sito ufficiale AMPL Pagina per il download dell interprete APML e dei solutori: www.ampl.com/downloads/index.html La pagina contiene: - istruzione per il download (quick start per Windows e Unix); - software eseguibile dell interprete AMPL; - software eseguibile di diversi solutori. Ulteriori i informazioni i i sul download d sono reperibili alla pagina: www.ampl.com/downloads/details.html AMPL Pagina per il download dell interfaccia grafica: www.ampl.com/gui/expermt.html Sono disponibili tre diverse interfacce grafiche in versione sperimentale. 4

Materiale Oltre alle slide di questa esercitazione, è possibile scaricare dalla pagina della prof.ssa Piccialli http://www.dis.uniroma1.it/~piccialli/teachita.htm il seguente materiale: - Par. 4-11 di Appunti sulla Sintassi e sui Comandi di AMPL Plus v1.6 Manuale in italiano a cura dei dott. R. Bruni, G. Fasano e G. Liuzzi www.dis.uniroma1.it/~piccialli/amplman2.pdf - Esercitazioni i i a cura dalla prof.ssa Piccialli i con appunti delle lezioni i e diversi esempi di problemi di programmazione lineare e non lineare, realizzate per il corso di Ottimizzazione A.A. 2004/2005. Si ringraziano i dott. Piccialli, Bruni, Fasano e Liuzzi per aver reso disponibile il materiale 5

Il linguaggio AMPL AMPL contiene diverse primitive per esprimere la notazione matematica normalmente utilizzata nello scrivere problemi di ottimizzazione (=, <, >,,, sommatorie, funzioni elementari, etc.) Ciascuna istruzione di AMLP deve terminare con un punto e virgola (;). E quindi possibile l indentazione nel file dei comandi. E possibile scrivere in un unico file con estensione.mod tutte le istruzioni AMPL che definiscono il modello, ma è bene separare due elementi del problema da risolvere: - la struttura del modello nel file.mod in cui sono descritte le componenti del modello (variabili, funzione obiettivo, vincoli, etc.); - i dati del modello nel file.dat in cui sono scritti i dati del problema (che in AMPL vengono chiamati parametri). Le righe di commento, sia nel file.mod che nel file.dat, devono essere precedute dal simbolo #. 6

Il linguaggio AMPL Una volta scritti i file con estensione.mod e.dat, è possibile farli interpretare all interprete AMPL attraverso le istruzioni - model file.mod; con questa istruzione vengono interpretate tutte le componenti del modello (variabili, funzione obiettivo, vincoli, etc.); - data file.dat; con questa istruzione vengono assegnati i valori a tutte le componenti del modello dichiarate nel file.mod Esempio: Se abbiamo dichiarato e definito il nostro modello nei file prova.mod e prova.dat, per interpretare i due file scriviamo: model prova.mod; data prova.dat; Da questo momento, tutte le dichiarazioni presenti in prova.mod e tutte le assegnazioni definite in prova.dat sono state interpretate. 7

Il linguaggio AMPL Per modellare un problema di programmazione matematica in AMPL creiamo due file: - file.mod contenente: - la dichiarazione dei parametri - la dichiarazione delle variabili - la struttura e la definizione della funzione obiettivo - la struttura e la descrizione dei vincoli - fl file.dat contenente i valori numerici dei parametri Il file.dat deve iniziare con il comando data. Questa istruzione dice all interprete che segue la definizione delle entità precedentemente dichiarate nel file.mod. I parametri possono essere rappresentati fondamentalmente tramite due tipi di strutture dati: -insieme - parametro (anche a più dimensioni) i i) 8

Esempio Un problema di PL Problema di produzione Un acciaieria deve decidere come impegnare l unico laminatoio disponibile per la produzione della prossima settimana. Il laminatoio lavora lastre di acciaio e può produrre due tipi di semilavorati: a bande (B) oppure tondini di acciaio a (T). In un ora il laminatoio produce 200 tonnellate di bande oppure 140 tonnellate di tondini. Il profitto delle bande è di 25 euro a tonnellata mentre quello dei tondini di 30 euro per tonnellata. Inoltre, tenendo conto degli ordini già esistenti, la produzione della prossima settimana non può superare le 6000 tonnellate di bande e le 4000 tonnellate di tondini. Infine, il laminatoio disponibile solamente per 40 ore in tutta la settimana. Si formuli un problema di PL che permetta di determinare quante tonnellate produrre di bande e quante di tondini. 9

Variabili Esempio Un problema di PL Definizione del problema xb = tonnellate di bande da produrre xt = tonnellate di tondini di acciaio da produrre Funzione obiettivo: massimizzazione del profitto Max 25 * xb + 30 * xt Vincoli di produzione xb <= 6000 xt <= 4000 Vincolo sulla disponibilità del laminatorio ( 1 / 200 ) * xb + ( 1 / 140 ) * xt <= 40 Vincoli di non negatività xb >= 0 xt >= 0 10

File prob.mod param profitto_b; param profitto_t; Esempio Un problema di PL param laminazione_oraria_b; param a laminazione a _oraria a_ T; param tempo_laminazione_massimo; param massima_produzione_b; param massima_produzione_t; var xb >= 0, <= massima_produzione_b; var xt >= 0, <= massima_produzione_t; maximize Profitto: profitto_b * xb + profitto_t * xt; subject to Vincolo_laminatoio: (1/l laminazione_oraria_b i i B)* xb B+(1/l laminazione_oraria_t i i T)* xt <= tempo_laminazione_massimo; 11

File prob.dat data; Esempio Un problema di PL param profitto_b := 25; param profitto_t := 30; param laminazione_oraria_b := 200; param laminazione_oraria_t := 140; param tempo_laminazione_massimo := 40; param massima_produzione_b := 6000; param massima_produzione_t := 4000; 12

Gli insiemi in AMPL AMPL consente di utilizzare la struttura dato insieme. Un insieme dev essere: - dichiarato (nel file.mod), dicendo all interprete AMPL che un nome identifica l insieme che vogliamo utilizzare attraverso la parola chave set; - definito (nel file.dat), assegnando gli elementi all insieme dichiarato; l operatore di assegnazione è :=. Esempio: Per definire l insieme S di elementi a, b, c e d, dichiariamo nel file prova.mod: set S; Successivamente definiamo nel file prova.dat l insieme assegnando gli elementi a, b, c e d: set S := a b c d ; Il linguaggio gg AMLP è case sensitive. 13

Gli insiemi in AMPL Per stampare gli elementi di un insieme possiamo utilizzare l istruzione display seguita dall identificativo dell insieme. Esempio: Per stampare gli elementi dell insieme S di elementi a, b, c e d, dichiarato nel file prova.mod e definitivo nel file prova.dat, scriviamo l istruzione da riga di comando dell interprete AMPL: display S; Una volta eseguita l istruzione, l interprete mostrerà il seguente output: ampl: display S; set S := a b c d; AMPL consente di utilizzare operazioni elementari tra insiemi, quali: - unione: istruzione union; -intersezione: istruzione inter; -differenza: istruzione diff; - differenza simmetrica: istruzione symdiff; - cardinalità: istruzionecard; card;. 14

Gli insiemi in AMPL AMPL consente inoltre di dichiarare insiemi di tipo ordinato attraverso la parola chiave ordered posto dopo l identificativo dell insieme. L ordine Lordine in cui assegniamo gli elementi all insieme definisce l ordinamento dell insieme. Esempio: Per definire l insieme ordinato S di elementi a, b, c e d, dichiariamo nel file prova.mod: set S ordered; Successivamente definiamo nel file prova.dat l insieme assegnando gli elementi a, b, c e d: set S := a b c d ; Quindi a sarà il primo elemento dell insieme, b il secondo e così via. 15

Gli insiemi in AMPL AMPL consente di utilizzare alcune operazioni elementari per insiemi ordinati quali: -first(s)per restituire il primo elemento dell insieme S; -last(s)per restituire l ultimo elemento dell insieme S; - next(t,s,n) per restituire l ennesimo elemento che si trova dopo l elemento lelemento t nell insieme S; -prev(t,s,n)per restituire l ennesimo elemento che si trova prima dell elemento t nell insieme S; -ord(t,s)per restituire la posizione dell elemento t nell insieme S; -member(j,s)per restituire l elemento in posizione j nell insieme S. E inoltre possibile definire in AMPL insiemi ordinati molto semplici in base ad un ordinamento predefinito. Il più semplice insieme ordinato è quello dei numeri interi compresi tra due valori, che si indica con l operatore.. Se N è un numero intero, l insieme dei numeri interi compresi tra 1 ed N si indica con 1..N 16

I parametri in AMPL I parametri sono i dati del problema, da non confondere con le variabili. Una volta invocato il solutore, il valore dei parametri resta costante. Un parametro dev essere: - dichiarato (nel file.mod), dicendo all interprete AMPL che un nome identifica il parametro che vogliamo utilizzare attraverso la parola chave param; - definito (nel file.dat), assegnando il valore al parametro dichiarato; l operatore loperatore di assegnazione è :=. Esempio: Per definire il parametro N dichiariamo nel file prova2.mod: param N; Successivamente definiamo nel file prova2.dat il valore del parametro N: param N := 3 ; Se il parametro assume un valore INTERO, possiamo dichiararlo di tipo integer: param N integer; 17 Analoghe restrizioni sul valore assunto dal parametro possono essere indicate in fase di dichiarazione.

Parametri a più dimensioni in AMPL I vettori di parametri sono molto utili per definire vettori di coefficienti. Un vettore di parametri dev essere: - dichiarato (nel file.mod), dicendo all interprete AMPL il nome che identifica il vettore e l insieme entro cui varia l indice delle sue componenti attraverso la parola chiave param e le parentesi {}; - definito (nel file.dat), assegnando i valori al vettore di parametri dichiarato. Esempio: Per definire il vettore di parametri vett di componenti indicizzate su un insieme S dichiariamo nel file prova3.mod: set S; param vett{s}; Successivamente definiamo nel file prova3.dat i valori dei parametri: set S := a b c d; param vett := a 1 b 2 c 3 d 4; 18

Parametri a più dimensioni in AMPL E possibile definire un vettore di parametri indicizzato su un insieme ordinato in base ad un ordinamento predefinito. Esempio: Per definire i il vettore di parametri vett2 di componenti indicizzate su un insieme ordinato di N elementi dichiariamo nel file prova4.mod: param N; param vett2{1..n}; Successivamente definiamo nel file prova4.dat i valori dei parametri: param N := 3; param vett2 := 1 3 2 2 3 1; Ovunque si desideri specificare una precisa componente del vettore di parametri, occorre usare le parentesi [] dopo l identificativo del vettore. Esempio: Per stampare la seconda componente del vettore di parametri vett2 usiamo l istruzione display seguita dall espressione vett2[2] display vett2[2]; 19