AMPL: Esempi e Comandi Avanzati

Похожие документы
AMPL Sintassi ed Esempi

AMPL: Risoluzione di Problemi Nonlineari Parte 2

Miscelazione di benzine

126 APPROFONDIMENTI SUI PARAMETRI. SCRIPT IN AMPL

AMPL Sintassi ed Esempi

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

Uso avanzato di AMPL. Renato Bruni. prendendo come esempio il problema di Localizzazione di Impianti.

Pianificazione Multiperiodo

Problema del Set Covering (PLI)

TSP con eliminazione di sottocicli

Ottimizzazione Combinatoria

Introduzione all uso di FICO Xpress. Metodi di Ottimizzazione per la Logistica e la Produzione

Progetto e ottimizzazione di reti 2

Problema del Trasporto

Ottimizzazione Combinatoria

Gestione Impresa. Mese Unità richieste

TSP con eliminazione di sottocicli

Risoluzione del rilassamento continuo del problema del commesso viaggiatore

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

Rappresentazione degli algoritmi

Pianificazione di Produzione in DEC

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Fondamenti di Informatica

Informatica (A-K) 5. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Risoluzione del rilassamento continuo del problema del commesso viaggiatore

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Esempio: somma di due numeri

Prova di Ricerca Operativa - canale (A-L)

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

INFORMATICA. Strutture iterative

Uso del linguaggio di modellazione AMPL

Ricerca Operativa e Logistica

Appunti delle Esercitazioni di Ottimizzazione V.O. AMPL: A Mathematical Programming Language

Linguaggi di modellizzazione

Appunti delle Esercitazione di Ricerca Operativa AMPL Plus v1.6

Rappresentazione degli algoritmi

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Excel & VBA. Excel e Visual Basic for Application

Esercizio: dispari-pari

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Introduzione al MATLAB c Parte 3 Script e function

Introduzione alla programmazione

Lezione 5: Controllo del flusso e costrutti avanzati

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Esercitazione 3. Espressioni booleane I comandi if-else e while

STATISTICA LAB. Analisi dei dati con R - Ex 2. Marta Nai Ruscone. LIUC - Università Carlo Cattaneo, Castellanza STATISTICA LAB

Qualsiasi programma in C++ segue lo schema:

AMPL Problemi su Reti

Транскрипт:

Dipartimento di Matematica Università di Padova Corso di Laurea Matematica

Outline Comandi Avanzati

Script per Operazioni Complesse Ciclo For for {e in INSIEME}{... } Ciclo Repeat While (termina se espressione logica falsa) repeat while espressionelogica {... }; repeat {... }while espressionelogica; Ciclo Repeat Until (termina se espressione logica vera) repeat until espressionelogica {... }; repeat {... }until espressionelogica; If-Then-Else if espressionelogica then {... } else {... }

Script per Operazioni Complesse II Assegnazione: let (es. let c:=3;) Bloccare \sbloccare variabili: fix \unfix Ignorare \ripristinare particolari vincoli e funzioni obiettivo: drop \restore Stampare a video messaggi: printf (stessa sintassi C) script: printf " MESSAGGIO\n"; a video: MESSAGGIO

Esempio 1 Produzione di Parquet alla LegnoPadova SpA LegnoPadova SpA é un azienda specializzata nella produzione di parquet. I suoi stabilimenti producono vari tipi di parquet che vengono poi venduti sul mercato generando un determinato profitto. Ciascun settore della produzione puá lavorare un numero limitato di ore secondo la Tabella 1. Nella Tabella 2 si riporta il profitto unitario e la domanda massima per tipologia di parquet: Tabella 1 Settore Ore Falegnameria 2000 Verniciatura 1500 Assemblaggio 1700 Verifica 300 Imballaggio 500 Tabella 2 Tipo Profitto Domanda Supereconomy 10 100 Economy 18 80 Biocity 20 60 Vintage 25 40 Gaia 27 40 Family 28 20 Extralux 35 20 Riportiamo infine le ore di lavorazione necessarie per ciascuna tipologia di parquet in Tabella 3. Determinare il piano produttivo che massimizza il profitto totale. Tabella 3 Supereconomy Economy Biocity Vintage Gaia Family Extralux Falegnameria 7 5 9 10 10 12 15 Verniciatura 2 2 2 3 3 3 3 Assemblaggio 2 2 4 7 9 15 18 Verifica 1 1 1 2 1 2 2 Imballaggio 1 1 1 1 2 1 0

Modello AMPL rip_ris.mod # INSIEMI DEL PROBLEMA # insieme dei prodotti set prodotti; # insieme delle risorse disponibili set risorse; # PARAMETRI DEL PROBLEMA # profitto per unitá venduta param c{prodotti}; # domanda massima param d{prodotti}; # quantitá di risorsa per unitá di prodotto param a{risorse,prodotti}; # disponibilitá di ciascuna risorsa param b{risorse}; # VARIABILI var x {j in prodotti}>=0, <=d[j]; # F.O. maximize profitto: sum{j in prodotti}c[j]* x[j]; # VINCOLI subject to diponib {i in risorse}: sum{j in prodotti}a[i,j] * x[j] <= b[i];

Script AMPL Script Esercizio 1 Creare uno script che permetta di calcolare il profitto al variare delle ore disponibili del settore Falegnameria. Le ore possono variare da un minimo di 2000 ad un massimo di 2100 (ad intervalli di 10 ore). Si vuole ottenere, per ogni variazione, un messaggio che comunichi se il corrispondente profitto é accettabile (maggiore di 5450).

Script AMPL rip_ris.run reset; model rip_ris.mod; data rip_ris.dat; options solver CPLEX; for {i in 0..10}{ printf "====================================\n"; solve; printf "====================================\n"; display i, profitto; display x; if (profitto > 5450) then printf "PROFITTO OK!\n"; else printf "PROFITTO NON OK!\n"; printf "====================================\n"; let b["falegnameria"]:=b["falegnameria"]+10; }

Parametri Randomici Alcuni parametri possono essere generati in maniera randomica: Dichiarazione(file.mod): param m; param v; param p:=normal(m,v); AMPL permette l utilizzo di diverse funzioni di distribuzione: Tabella : Funzioni di Distribuzione Beta(a,b) distribuzione beta con parametri a e b Cauchy() distribuzione di Cauchy Exponential() distribuzione esponenziale Gamma(a) distribuzione Gamma con parametro a Normal(m,v) distribuzione normale con media m e varianza v Poisson(a) distribuzione di Poisson con parametro a Uniform(a,b) distribuzione uniforme sull intervallo [a; b) Possibile scegliere seme per generatore di numeri pseudo-casuali: options randseed; # per mostra il seme options randseed value;# cambia il seme

Esempio: Problema Investimenti Esercizio 2 Sono dati n = 200 investimenti ciascuno di costo c i e ritorno r i. Si chiede di selezionare un sottoinsieme di investimenti in modo tale che il loro prezzo totale non ecceda B=600 (budget) e il ritorno sia massimizzato. I costi sono generati con distribuzione uniforme in [5,20) e i ritorni con distribuzione uniforme in [3,10).

Modello Investimenti Modello Matematico Problema Investimenti max n r i x i i=1 n c i x i B i=1 x i {0, 1} i = 1,..., n (1)

Modello AMPL investimenti.mod param N; param r{1..n}:= Uniform(5,20); # ritorni param c{1..n}:= Uniform(3,10); # costi param B; # Budget var x{1..n}binary; maximize ritorno_tot: sum{i in 1..N}r[i] * x[i]; subject to budget : sum{i in 1..N}c[i] * x[i] <= B;