Introduzione a Lingo TM

Documenti analoghi
Lingo caratteristiche generali

Introduzione a Lingo TM

LINGO -

INTRODUZIONE A LINGO. Dispense a cura di Antonio Tiano

LOGISTICA. Laurea Specialistica-Università di Mantova Anno accademico Antonio Tiano

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Miscelazione di benzine

Introduzione. Corso di Metodi Numerici. 06 Marzo 2019

Introduzione a Matlab

Laboratorio di Matlab

MATLAB Elementi di grafica Costrutti di programmazione

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

Corso di Ricerca Operativa Esercitazione del 07/10/2015

Uso di MPL e Solver per problemi LP ed ILP. Uso di Modelli Matematici (1)

Uso avanzato di MATLAB

Esercitazione per il corso di Ricerca Operativa 10 novembre 2009

Laboratorio di Python

Esercitazione n o 3 per il corso di Ricerca Operativa

Esercitazione 00 Introduzione a Matlab

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Gruppo esercizi 1: Vettori e matrici [E.1] Date le due matrici e il vettore

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

Problemi di Ottimizzazione

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

Indice generale. Introduzione...ix. Strumenti per sviluppare applicazioni...1

Foglio di esercizi n.1

Esercitazione n o 6 per il corso di Ricerca Operativa

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

y (b) f(x, y) = y log x sin x (c) f(x, y) = tan y (d) f(x, y) = e x y (f) f(x, y) = cos(x 2 + y 2 )

Introduzione a MATLAB

Università degli Studi di Ferrara Corso di Laurea in Chimica - A.A

Francesca Mazzia Dipartimento Interuniversitario di Matematica Università di Bari. MATLAB: lezione introduttiva

Esercitazioni con GNU Octave

AMPL Sintassi ed Esempi

Laboratorio di Ricerca Operativa Cad Ingegneria Gestionale (BGER3 - I semestre) a.a Homework n 10. Docente: Laura Palagi

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

AMPL: Esempi. F. Rinaldi. Corso di Laurea Matematica. Dipartimento di Matematica Università di Padova. Esempi di Modellazione in AMPL

MICROSOFT EXCEL FORMULE E FUNZIONI

RICERCA OPERATIVA. Tema d esame del 04/03/2008 (Simulazione)

Evoluzione del C 07/04/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 16 IL LINGUAGGIO C

COMPITO DI RICERCA OPERATIVA. max x 1 + 2x 2 + x 3 x 1 x 2 + x 3 = 1 2x 1 + 3x 2 + x 4 = 2

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Modellazione GAMS. Sintassi di Base, Esempi. Domenico Salvagnin

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

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

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

COMPITO DI RICERCA OPERATIVA. (5 punti) Sia dato il seguente problema di PL: min x 1 + x 2 x 1 + x 2 3 x 1 + x 2 2 2x 1 + x 2 3.

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Scopo del laboratorio

Preappello di metodi matematici per le decisioni economiche e aziendali A

PROVE D'ESAME 1997/98

Controllo di flusso negli script: if-then-else

Introduzione al MATLAB c Parte 2 Funzioni

2 a lezione - laboratorio

Matematica con esercitazioni, Modulo 2. Analisi matematica. Diario delle lezioni.

Matlab. 1 Introduzione

Introduzione a Python e Gurobi

8 Introduzione MATLAB

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

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

L utility Unix awk [Aho-Weinberger-Kernighan]

Gruppo esercizi 1: Dominio [E.1] Disegnare nel piano cartesiano il dominio della funzione

8 Introduzione MATLAB

Domande d esame. Ricerca Operativa. G. Liuzzi. Giovedí 14 Maggio Istituto di Analisi dei Sistemi ed Informatica IASI - CNR

A1- Array MODULO Java3

Teoria della Dualità: I Introduzione

Corso di Laboratorio di Sistemi Operativi

Vediamo come risolvere un problema di PL con Excel. Riprendiamo un esercizio già visto.

Progetto e ottimizzazione di reti 2

Esercizi svolti di Programmazione Lineare. a cura di Laura Scrimali Dipartimento di Matematica e Informatica Università di Catania

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

Costrutti condizionali e iterativi

1 Il metodo dei tagli di Gomory

INTRODUZIONE A MATLAB

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

Introduzione al Column Generation Caso di Studio: il Bin Packing Problem

Matlab : le basi. Vediamo ora un esercizio di calcolo: Il volume di una sfera è dato da V=4*π*r 3 /3 dove r è il raggio.

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Dati due punti sul piano calcolare la loro distanza

>> A = [1 2 3; 4 5 6; 7 8 9]; >> A

Introduzione a Matlab

Modulo di Ricerca Operativa 1 Canale J Z Tipologia di esercizi per la prima prova in itinere A.A

Introduzione a Matlab

Corso di Ricerca Operativa Prova in itinere del 06/11/2015

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Matlab: introduzione

Il modello duale. Capitolo settimo. Introduzione

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

Introduzione alla programmazione in C(++)

Informatica Applicata al Suono Tutorial Matlab

Introduzione a MATLAB

Costrutti condizionali e iterativi

Indice generale Introduzione...xiii Capitolo 1 Strumenti per sviluppare applicazioni...1

Transcript:

Introduzione a Lingo TM www.lindo.com Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova 2001/2002 Lingo caratteristiche generali 2!E un software per la PL e IP, ma anche per problemi non lineari!permette di scrivere il problemi direttamente in termini di funzione obiettivo, vincoli e variabili (ciò che fa Lindo)!Permette di scrivere i programmi usando una sintassi simbolica (linguaggio di modellazione matematico) Rappresenta sommatorie, cicli ecc. Separa il modello dai dati

Lingo Definizione e soluzione di problemi 3! Esempio di input di un PL sulla carta Max Z = 3x E + 2x I xe + 2xI 6 2xE + xi 8 - xe + xi 1 xi 2 xe 0 xi 0 con Lingo max =3*xE+2*xI ; xe+2*xi<=6 ; 2*xE+xI<=8 ; -xe+xi<=1 ; xi<=2 ; non ci sono i vincoli di positività non c è la Z ci sono ; alla fine delle righe Lingo Definizione e soluzione di problemi 4! Esempio di input di un PL definito il modello il bottone attiva il processo di soluzione (dopo la verifica sintattica)

Lingo Definizione e soluzione di problemi 5! Esempio di input di un PL la finestra di soluzione fornisce svariate informazioni Lingo Definizione e soluzione di problemi 6! Esempio di input di un PL il report mostra il risultato ottenuto Primale informazioni sul duale

7! Struttura di un modello Lingo MODEL: [ TITLE <nome modello>; ] SETS: <definizione degli insieme di indici, delle variabili e delle costanti> END ENDSETS DATA: <assegnazioni valori alle costanti> <definizione della funzione obiettivo e dei vincoli> Ogni riga (ad eccezione di quelle che identificano le parti del modello) deve terminare per ; Commenti: testo tra! e ; 8! SETS: Insiemi e variabili Le variabili non sono tipizzate I Set sono classi di elementi che possiedono attributi che possono essere quantificati Si possono dichiarare Array o creare oggetti che assumono tanti valori quanti gli elementi di uno o più insieme Sintassi : setname [/ member_list /] [: attribute_list]; Esempio Vettori: variabili o costanti definite su un insieme SET PRIMOINSIEME /ELE1,ELE2/:PROPRIETÀ; CASE /CASA2,CASA1/:COLORE; ENDSET In questo modo sono stati creati i seguenti vettori: [PROPRIETÀ(ELE1),PROPRIETÀ(ELE2)] [COLORE(CASA1),COLORE(CASA2)] Definizione implicita: WAREHOUSES / 1..6/: CAPACITY;

9! SETS: Matrici (variabili o costanti definite su più insiemi) Sono insiemi derivati: setname( parent_set_list) [ / member_list /] [: attribute_list]; Esempio SET PRIMOINSIEME /ELE1,ELE2/:PROPRIETÀ; CASE /CASA2,CASA1/:COLORE; LINKS(PRIMOINSIEME,CASE):PREZZO,VOLUME; ENDSET Si è creato un template di una struttura: Links=(Ele1 Casa1, Ele2 Casa1, Ele1 Casa2, Ele2 Casa2) = ( Ele1 Casa1, Ele1 Casa2 Ele2 Casa1, Ele2 Casa2 ) Prezzo(i, j) e Volume(i, j) sono due matrici i cui elementi sono definiti dalle combinazioni dei due insiemi, e.g., Prezzo(Ele2, Casa1) 10! SETS: Sottinsiemi di elementi Per default un insieme derivato (o matrice) ha tanti elementi quanti il prodotto cartesiano degli insiemi da cui deriva PRODUCT / A B/; MACHINE / M N/; WEEK / 1..2/; ALLOWED( PRODUCT, MACHINE, WEEK); Si possono costruire sottinsiemi del prodotto cartesiano esplicitamente o attraverso condizioni ALLOWED( PRODUCT, MACHINE, WEEK) / A M 1, A N 2, B N 1/; HEAVY_DUTY( TRUCKS) CAPACITY( &1) #GT# 50000:; inizio condizione indice riferito al primo insieme derivato (TRUCKS)

11! DATA: assegnazione valori alle costanti La sintassi: object_list = value_list; Esempi DATA PROPRIETÀ=3,4; COLORE=ROSSO,VERDE; In questo modo sono stati assegnati i valori agli attributi degli insiemi : PROPRIETÀ (ELE1)=3, PROPRIETÀ (ELE2)=4 [COLORE(CASA1),COLORE(CASA2)]=[ROSSO,VERDE] 12! DATA: assegnazione valori alle costanti Altri esempi significativi... SETS: SET1 /A, B, C/: X, Y; ENDSETS DATA: X, Y = 1, 4, 2, 5, 3, 6;... inizializzazione delle dimensioni nella sezione DATA SETS: SET1: X, Y; ENDSETS DATA: SET1, X, Y = A 1 4 B 2 5 C 3 6;

13! DATA: assegnazione valori alle costanti Inizializzazione con un unico valore costante SETS: DAYS / MO, TU, WE, TH, FR, SA, SU/:NEEDS; ENDSETS DATA: NEEDS = 20; Attributi in parte costanti ed in parte variabili SETS: YEARS /1..5/: CAPACITY; ENDSETS DATA: CAPACITY = 34, 34,,, ; 14! Input dati runtime (what if analysis) Le costanti possono essere specificate runtime lasciandole indicate con? DATA: INFLATION_RATE =?; Si possono importare dati da fogli Excel, Database oppure file testo @IMPORT( worksheet filename, data range name); @File(filename); object_list = @ODBC( [ data_source [, table_name [, column_name_1 [, ]]]]); Esiste anche una section INIT per inizializzare le variabili INIT: X =.999; ENDINIT

15! Funzioni ricorsive Funzione da richiamare Condizione da verificare set_operator (set_name /condition : expression) Insieme su cui lavorare Espressione da eseguire 16! Funzioni ricorsive Operatori: @FOR (set_name [ conditions ] : costraint_expression) @MAX (set_name [ conditions ] : expression) @MIN (set_name [ conditions ] : expression) @SUM (set_name [ conditions ] : expression)

17! Funzioni per la specifica delle caratteristiche delle variabili Funzioni : @BND (lower bound, x, upper bound) L x U @BIN(x) x B @FREE(x) x variabile libera @GIN(x) x Z 18! Esempio @FOR (InsiemeA( ) : @BND (0, x, 1) ) Impone per tutte le variabili x definite sui valori dell InsiemeA di restare tra 0 ed 1 : L x i U i InsiemeA Le relazioni (vincoli, obiettivo) possono essere etichettate [etichetta] <relazione> [LIMITI] @FOR (InsiemeA( ) : @BND (0, x, 1) )

19! Funzioni matematiche @ABS(X) @COS(X) @EXP(X) @LOG(X) Valore assoluto di x Coseno di x, dove x è l angolo in radianti e x log(x) @SIGN(X) -1 se x < 0, e +1 se x => 0 @SIN(X) @SMAX(list ) @SMIN(list ) @TAN(X) @SIZE (set_name) Seno di x, dove x è l angolo in radianti E il più grande valore tra una lista di scalari E il più piccolo valore tra una lista di scalari Tangente di x, dove x è l angolo in radianti Fornisce il numero di elementi nel set 20! Operatori logici #EQ# = #NE# #GT# > #GE# #LT# < #LE# #AND# #OR# #NOT#

21! Un esempio di modello: un problema di Blending Descrizione: " Il manager della produzione di un impianto di raffinamento di carburanti vuole massimizzare il profitto che deriva dalla produzione di due prodotti finiti, carburanti indicati con Regular e Premium ottenuti dalla miscelazione delle materie prime, butane, catalytic reformate, naphtha. (prodotto = mat.prima 1 + mat.prima 2 + mat. prima 3) " I prodotti finali si differenziano tra loro perchè devono soddisfare dei requisiti di qualità minimi e massimi in termini di octane, vapor pressure, and volatility. " Le materie prime hanno una capacità limitata ed un costo unitario noto. " Sono date anche le richieste minime per ciascuno dei due prodotti finiti, la quantità massima che può essere venduta ed il valore del ricavo unitario dalla loro vendita. " Si vuole determinare quanto produrre dei due prodotti e come produrre, ossia la miscelazione più conveniente delle componenti che soddisfi le specifiche di produzione dei due carburanti 22! Un esempio di modello: un problema di Blending I numeri in gioco " Disponibilità e costi unitari delle materie prime : butane: 1000, 7.3 catalytic reformate: 4000, 18.2 naphtha: 5000, 12.5 " Livello di qualità delle materie prime octane vapor pressure volatility butane 120 60 105 catalytic reformate 100 2.6 3 naphtha 74 4.1 12 " Limiti sulla domanda: Regular: min=4000, max=8000 Premium: min=2000, max=6000

23! Un esempio di modello: un problema di Blending I numeri in gioco " Prezzo unitario dei prodotti finiti : Regular : 18.4 Premium : 22 " Limiti di qualità dei prodotti: MASSIMI octane vapor pressure volatility MINIMI octane vapor pressure volatility Regular 110 11 25 Regular 90 8 17 Premium 110 11 25 Premium 95 8 17 24! Formulazione sulla carta... to be continued