Introduzione a Lingo TM

Documenti analoghi
Miscelazione di benzine

Esercitazione n o 3 per il corso di Ricerca Operativa

Soluzione di problemi di ottimizzazione

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

MATLAB (1) Introduzione e Operazioni con array

Introduzione al MATLAB c Parte 2

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

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

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

126 APPROFONDIMENTI SUI PARAMETRI. SCRIPT IN AMPL

Un applicazione della programmazione lineare ai problemi di trasporto

Laboratorio di Matlab

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Lezioni di Ricerca Operativa. Corso di Laurea in Informatica Università di Salerno. Lezione n 4

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

I grafici. Dati numerici. Grafico

- Trovare soluzione ottima primale ( con il simplesso o algoritmo analogo)

CORSO DI STATISTICA (parte 1) - ESERCITAZIONE 5

MATEMATICA GENERALE Prova d esame del 4 giugno FILA A

1 Breve introduzione ad AMPL

Corso di Laurea in Ingegneria Informatica Analisi Numerica

1. Sia dato un poliedro. Dire quali delle seguenti affermazioni sono corrette.

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

Corso Matlab : Terza lezione (Esercitazione, 04/10/13) Samuela Persia, Ing. PhD.

2011 Politecnico di Torino 1

Linguaggi di modellizzazione

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

DATABASE PER IL WEB. Programmazione Web 1

Strutture/forme di mercato. Concorrenza perfetta Monopolio Oligopolio à la Cournot Stackelberg Bertrand - Collusione

Introduzione alla programmazione lineare. Mauro Pagliacci

Un problema di Capital Budgeting

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

ESEMPIO P.L. : PIANIFICAZIONE DI INVESTIMENTI

Offerta in concorrenza perfetta: Cap.6

Massimo Paolucci DIST Università di Genova. Metodi per supportare le decisioni relative alla gestione di progetti


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

La stima del valore di trasformazione: definizione e stima

Ricerca Operativa e Logistica

Marketing mix, break even point e profitto. massimo

x log(x) + 3. f(x) =

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

EQUAZIONI DIFFERENZIALI Esercizi svolti. y = xy. y(2) = 1.

Problema del trasporto

Modulo 1 Information Communication Technology. ICT e computer... Pag. 6 Classificazione dei computer...» 8

Esercitazione R.O. 2. Andrea Raiconi A.A

Cosa è importante: pom.xml Goal Plug-in Repository

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Modelli di Programmazione Lineare Intera

Pianificazione di Produzione in DEC

PROBLEMI DI SCELTA dipendenti da due variabili d azione

BASI DI DATI. basi di dati - introduzione ai sistemi informativi 1

Regole sintattiche. Simboli

FUNZIONI CONTINUE - ESERCIZI SVOLTI

b i 1,1,1 1,1,1 0,1,2 0,3,4

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Matematica con il foglio di calcolo

Tecniche di analisi multivariata

Programma precorso di matematica

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

MINISTERO DELL'ISTRUZIONE, DELL'UNIVERSITÀ, DELLA RICERCA SCUOLE ITALIANE ALL ESTERO

Pianificazione produzione. Pianificazione della produzione

ASSE MATEMATICO. Competenze Abilità Conoscenze

L utility Unix awk [Aho-Weinberger-Kernighan]

PROTOCOLLO ITACA PUGLIA RESIDENZIALE Istruzioni d'uso del software Versione 1.0

Generazione di Numeri Casuali- Parte 2

Esercitazione in Laboratorio: risoluzione di problemi di programmazione lineare tramite Excel il mix di produzione

Il comportamento del produttore

Modelli di PL: allocazione ottima di risorse. Un esempio Modelli a risorse condivise Modelli a risorse alternative Modelli multi-periodo

5 Programmazione lineare Risoluzione di modelli

Introduzione a MATLAB. Il Laboratorio. MATLAB Cos è? Oltre alle lezioni. Octave ( ) Scilab ( )

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad una Software (SW) House:

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

Vettori ed assegnamenti in R

Introduzione alla Programmazione Lineare

La Programmazione Lineare

Il Principio dei lavori virtuali

Capitolo 5: Ottimizzazione Discreta. E. Amaldi DEI, Politecnico di Milano

Ricerca Operativa e Logistica

Introduzione agli ambienti

Esercizi Capitolo 8. Convenienza economica ad eliminare o aggiungere un segmento

PROGRAMMA DI INFORMATICA CLASSE TERZA SEZ. A. CORSO Amministrazione Finanza e Marketing. DOCENTE: Noto Giancarlo

ALGORITMO DEL SIMPLESSO

Ottimizzazione Multi Obiettivo

Logistica - Il problema del trasporto

CAPITOLO II. Il Vantaggio Assoluto

Prodotto Materia S (kg/unità) Materia U (kg/unità) Componente L Alce 0,15 0,45 2 Orso 0,75 0,75 3

Riclassificazione del conto economico

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di Localizzazione

ITCS Erasmo da Rotterdam. Anno Scolastico 2014/2015. CLASSE 4^ M Costruzioni, ambiente e territorio

Laboratorio di Elementi di Bioinformatica

Moduli Bluetooth 03 - connessione seriale via BT

Ingegneria del Software 1: Eclipse

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> ENDSETS DATA: <assegnazioni valori alle costanti> ENDDATA <definizione della funzione obiettivo e dei vincoli> END 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; ENDDATA 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; ENDDATA... inizializzazione delle dimensioni nella sezione DATA SETS: SET1: X, Y; ENDSETS DATA: SET1, X, Y = A 1 4 B 2 5 C 3 6; ENDDATA

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; ENDDATA Attributi in parte costanti ed in parte variabili SETS: YEARS /1..5/: CAPACITY; ENDSETS DATA: CAPACITY = 34, 34,,, ; ENDDATA 14 Input dati runtime (what if analysis) Le costanti possono essere specificate runtime lasciandole indicate con? DATA: ENDDATA 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 Insiemi Prodotti finiti F, i F Materie prime M, j M Qualità Q, k Q Dati Disponibilità materie prime (vettore), a j Costo unitario materie prime (vettore), c j Qualità unitarie delle materie prime (matrice), q jk Prezzo prodotti finiti (vettore), p i Richiesta minima prodotti finiti (vettore), dl i Richiesta massima prodotti finiti (vettore), du i Specifica minima delle qualità unitarie dei prodotti finiti (matrice), ql ik Specifica massima delle qualità unitarie dei prodotti finiti (matrice), qu ik

25 Formulazione sulla carta Variabili (decisioni) Quanto produrre dei prodotti (batch) (vettore), x i Quantità di materia prima usata per produrre i prodotti (matrice), u ij Obiettivo (da massimizzare): profitto = ricavo - costi x0 = pi xi c j u i F j M i F ij 26 Formulazione sulla carta Vincoli Rispetto disponibilità Quantità totale prodotta uij i F a j uij = j M j M xi i F Limiti massimi e minimi per la produzione dli xi dui i F Rispetto delle specifiche di qualità qlik xi qjk j M uij quik xi i F, k Q

27 Formulazione sulla carta Introducendo una variabile di slack (per visualizzare nel risultato quanto margine c è rispetto il limite massimo) qs ik = slack rispetto il max livello di k del prodotto i qjk j M uij + qsik = quik xi i F, k Q qsik (quik qlik ) xi i F, k Q 28 La formulazione con Lingo MODEL: TITLE BLEND;... END

29 La formulazione con Lingo SETS:! Materie prime; RAWMAT/ BUTANE, CATREF, NAPHTHA/: AVAIL, COST;! Prodotti finiti (batch è la variabile x ); FINGOOD/ REGULAR, PREMIUM/: MINREQ, MAXSELL, PRICE, BATCH;! Qualità ; QUALMES/ OCTANE, VAPOR, VOLATILITY/;... 30 La formulazione con Lingo SETS:...! Misura della qualità unitaria delle materie prime ; RXQ( RAWMAT, QUALMES): QLEVEL;! Specifiche livelli minimi e massime delle qualità dei prodotti ;! Definizione delle variabili slack di qualità ; QXF( QUALMES, FINGOOD): QUP, QLOW, QSLACK;! Miscelazione: quantità di materie prime usate nei prodotti ; RXF( RAWMAT, FINGOOD): USED; ENDSETS

31 La formulazione con Lingo DATA:! Disponibilità materie prime ; AVAIL = 1000, 4000, 5000;! Costi materie prime; COST = 7.3, 18.2, 12.5;! Parametri di qualità materie prime ; QLEVEL = 120, 60, 105, 100, 2.6, 3, 74, 4.1, 12;! Limiti domanda prodotti finiti ; MINREQ = 4000, 2000; MAXSELL = 8000, 6000;... 32 La formulazione con Lingo DATA:...! Prezzi prodotti finiti ; PRICE = 18.4, 22;! Specifiche minime e massime sulla qualità dei prodotti finiti ; QUP = 110, 110, 11, 11, 25, 25; QLOW = 90, 95, 8, 8, 17, 17; ENDDATA

33 La formulazione con Lingo - Vincoli! Disponibilità materie prime ; @FOR( RAWMAT( R): [RMLIM] @SUM( FINGOOD( F): USED( R, F)) <= AVAIL( R); ); 34 La formulazione con Lingo - Vincoli @FOR(FINGOOD(F):! Produzione totale (batch); [BATCOMP] BATCH(F) = @SUM(RAWMAT(R): USED(R, F));! Limiti minimi e massimi della produzione (batch); @BND(MINREQ, BATCH, MAXSELL);! Vincoli sulla qualità dei prodotti finiti ; @FOR(QUALMES(Q): [QRESUP] @SUM(RAWMAT(R): QLEVEL(R, Q) * USED(R, F)) + QSLACK(Q, F) = QUP(Q, F) * BATCH(F); [QRESDN] QSLACK(Q, F) <= ( QUP(Q, F) - QLOW(Q, F)) * BATCH(F); ); );

35 La formulazione con Lingo - Obiettivo! Massimizzazione del profitto; [OBJECTIVE] MAX = @SUM(FINGOOD: PRICE * BATCH) @SUM(RAWMAT(R): COST(R) * @SUM(FINGOOD(F): USED(R, F)));... provare ad eseguirlo ed ad interpretare il risultato...