Soluzione di problemi di ottimizzazione



Documenti analoghi
Soluzione di problemi di ottimizzazione

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

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

1 Breve introduzione ad AMPL

Linguaggi di modellizzazione

Progetto e ottimizzazione di reti 2

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

Ottimizzazione Combinatoria

Protezione. Protezione. Protezione. Obiettivi della protezione

INTRODUZIONE A EXCEL ESERCITAZIONE I

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

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 al MATLAB c Parte 2

Scopo del laboratorio

Un problema di Capital Budgeting

TSP con eliminazione di sottocicli

PiattoRicco_XL (Versione 1.0) Software gratis e open source per il controllo di gestione nella ristorazione

TSP con eliminazione di sottocicli

Il web server Apache Lezione n. 3. Introduzione

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

LABORATORIO DI ANALISI DEI SISTEMI

Fogli Elettronici: MS Excel utilizzo avanzato

Ottimizzazione Combinatoria

Corso di PHP. Prerequisiti. 1 - Introduzione

Ricerca Operativa A.A. 2008/2009

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Linguaggio C. Fondamenti. Struttura di un programma.

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

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

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

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

Database. Si ringrazia Marco Bertini per le slides

Modelli LP (complementi)

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

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

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

DATABASE.

Corso sul linguaggio SQL

Problema della produzione dei monitor

Organizzazione degli archivi

RISOLUTORE AUTOMATICO PER SUDOKU

Appunti sul linguaggio di programmazione MPL

developed by Emanuele De Carlo

Guida Software GestioneSpiaggia.it

Ottimizzazione Multi Obiettivo

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

Le command line di Java

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

Pianificazione di Produzione in DEC

Rendering air show e verifica della sincronizzazione

Laboratorio di Basi di Dati e Web

STAMPA UNIONE DI WORD

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

Gestione Impresa. Mese Unità richieste

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

Compilatore risorse display grafico LCD serie IEC-line

Software di gestione della stampante

METODI per effettuare previsioni con analisi di tipo WHAT-IF

AMBIENTE DEV PASCAL. Dev-Pascal Finestra di apertura

Il problema della dieta: guida visuale all utilizzo del solutore di Excel 1

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Ricerca Operativa e Logistica

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di Network design

MODULO 02. Iniziamo a usare il computer

Ricerca Operativa e Logistica

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

Intel One Boot Flash Update Utility Guida dell utente

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

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Operazioni di Comunicazione di base. Cap.4

SOFTWARE A SUPPORTO DELLA GESTIONE AMMINISTRATIVA DELLO SPORTELLO UNICO SPECIFICA DEI REQUISITI UTENTE

Simple & Efficient.

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Servizio Telematico Paghe

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Fortran per Ingegneri

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Lezione V. Aula Multimediale - sabato 29/03/2008

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

Compito di Informatica Grafica 5 appello 29/06/2006

Presentazione integrazione AdHoc e KarthaDoc

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

I database relazionali (Access)

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Schedulatore per la comunicazione con le Porte di Dominio

Elena Baralis 2013 Politecnico di Torino 1

Dispensa di Informatica I.1

Modelli di Programmazione Lineare. PRTLC - Modelli

Programmazione lineare

IBM SPSS Statistics - Essentials for R- Istruzioni di installazione per Windows

I Sistemi Operativi. Confronto Windows MAC OS X Linux

CASSA AUTOMATICA SelfCASH

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Installazione MS SQL Express e utilizzo con progetti PHMI

FIRESHOP.NET. Gestione Lotti & Matricole.

Stai impaginando manualmente centinaia di pagine?

Transcript:

Soluzione di problemi di ottimizzazione Problema di programmazione lineare: Possibili ulteriori vincoli (Es.: x INTERO) Soluzione: Trovare x* tale che per ogni LE.1

Input: Solutori di problemi di PL/PLI n, m, (c), (A), (b) Eventuali altri vincoli (interezza variabili) Output: z, (x) Informazioni aggiuntive (variabili duali, costi ridotti, ) LE.2

Uso di Modelli Matematici Es: Problema della dieta: n possibili cibi m sostanze nutritive b i : fabbisogno giornaliero sostanza i c j : costo cibo j a ij : quantità di sostanza i per unità di cibo j Determinare la dieta (mix di alimenti) di costo minimo, assicurando il fabbisogno giornaliero di ogni sostanza LE.3

Uso di Modelli Matematici (2) à Modello matematico: min Σ j=1,n c j x j Σ j=1,n a ij x j b i i = 1,, m x j 0 j = 1,., n LE.4

n = 5 m = 8 Dieta - esempio (cibi) (nutrienti) c j = {10, 8, 15, 6, 16} b i = {40, 20, 30, 10, 42, 41, 65, 17} a ji = { 0, 14, 2, 36, 0, 55, 33, 44, 36, 89, 1, 99, 30, 17, 7, 10, 8, 42, 15, 9, 26, 3, 23, 11, 20, 17, 0, 6, 55, 1, 0, 0, 7, 44, 16, 19, 28, 0, 10, 4} LE.5

Soluzione 1: scrittura manuale Definizione di un file di input (testo) per un risolutore (es. Cplex) /* file CPLEX */ MINIMIZE z: 10 x1 + 8 x2 + 15 x3 + 6 x4 + 16 x5 SUBJECT TO CONSTR1: 36 x2 + 8 x3 + 20 x4 + 7 x5 >= 40 CONSTR2: 14 x1 + 89 x2 + 42 x3 + 17 x4 + 44 x5 >= 20 CONSTR3: 2 x1 + x2 + 15 x3 + 16 x5 >= 30 CONSTR4: 36 x1 + 99 x2 + 9 x3 + 6 x4 + 19 x5 >= 10 CONSTR5: 30 x2 + 26 x3 + 55 x4 + 28 x5 >= 42 CONSTR6: 55 x1 + 17 x2 + 3 x3 + x4 >= 41 CONSTR7: 33 x1 + 7 x2 + 23 x3 + 10 x5 >= 65 CONSTR8: 44 x1 + 10 x2 + 11 x3 + 4 x5 >= 17 END LE.6

Soluzione 2: scrittura su File Scrittura automatica del file di input (testo) void diet( n, m, a, b, c) { int i, j; FILE *fou; } fou = fopen( diet.lp,w); fprintf(fou, MINIMIZE\n Z: ); for (j = 1; j <= n; j++) fprintf(fou, +%d x%d,c[j], j ); fprintf(fou, \n SUBJECT TO \n ); for (i = 1; i <= m; i++) { fprintf(fou, CONSTR%d :,i ); for (j = 1; j <= n; j++) fprintf(fou, +%d x%d,a[i,j],j); fprintf(fou, >= %d \n,b[i] ); } fprintf(fou, END\n ); fclose(fou); LE.7

Soluzione 3: MPL LE.8

Soluzione 3: MPL (2) Modello MPL del problema TITLE Example INDEX nutrients := 1..8; foods := ( pasta, ham, cheese, egg, bread ); DATA Required[nutrients] = ( 40, 20, 30, 10, 42, 41, 65, 17); Cost[foods] = ( 10, 8, 15, 6, 16); A[foods,nutrients] = ( 0, 14, 2, 36, 0, 55, 33, 44, 36, 89, 1, 99, 30, 17, 7, 10, 8, 42, 15, 9, 26, 3, 23, 11, 20, 17, 0, 6, 55, 1, 0, 0, 7, 44, 16, 19, 28, 0, 10, 4); DECISION x[foods]! dollars of food to be purchased daily MODEL MIN z = SUM(foods: Cost*x) ; SUBJECT TO CONSTR[nutrients] : SUM(foods: A*x) > Required[nutrients] END LE.9

Soluzione 4: : MPL+DATABASE Modello MPL del problema integrato con una base di dati TITLE Example OPTIONS DatabaseType = Access DatabaseAccess = diet.mdb" INDEX nutrients := DATABASE( sostanze", sostanzaid"); foods := DATABASE( cibi", ciboid"); DATA Required[nutrients] = DATABASE( sostanze", min_req"); Cost[foods] = DATABASE( cibi", costo_unit"); A[foods,nutrients] = DATABASE("valori", foods="idfoods", nutrients="idnutrients"); DECISION x[foods] EXPORT ACTIVITY TO DATABASE( sostanze ); MODEL MIN z = SUM(foods: Cost*x) ; SUBJECT TO CONSTR[nutrients] : SUM(foods: A*x) > Required[nutrients] END LE.10

MPL: Introduzione MPL è un pacchetto software che permette di implementare problemi di Programmazione Lineare (PL) e Programmazione Lineare Intera (PLI) in modo chiaro, efficiente e conciso. E dotato di un linguaggio ad alto livello che permette di descrivere sistemi anche molto complessi. Realizza la separazione tra dati e modello. LE.11

MPL: Introduzione (2) I modelli sono indipendenti dal risolutore impiegato e dalla piattaforma sulla quale sono eseguiti (Windows, Unix, Macintosh, OSF Motif) Permette di importare i dati da diverse sorgenti (file di testo, excel, database, ) Nell output sono indicate, in modo comprensibile, tutte le operazioni svolte dal risolutore. Si può interfacciare con strumenti di grafica. LE.12

MPL Modeling System (1) MODELS DATA MPL SOLVERS LE.13

MPL: Solver MPL si può interfacciare con i seguenti Solvers: CPLEX (ILOG) XPress-MP (DASH Associates) OSL XA FrontLine Lindo FortMP C-Whiz LE.14

MPL: Input Data MPL consente di acquisire i dati di input: Direttamente nel file MPL. Da file di testo. Da database esterno (ACCESS, EXCEL, ODBC, ORACLE...). Da database interno a MPL. LE.15

MPL: Modeling Language Alcune caratteristiche: Utilizzo di nomi lunghi e alias. Importazione dati da altri programmi. Utilizzo di sommatorie di vettori e matrici. Lunghezza delle righe: 255 caratteri (i rimanenti vengono ignorati da MPL). Separatori: ogni statement deve terminare con ; Commenti: {} racchiudono un blocco di commenti anche su più righe.! commenta fino a fine riga. LE.16

Struttura file MPL Parte I: Dichiarazioni TITLE INDEX DATA DECISION MACRO OPTIONS Nome del Modello (Opzionale) Definizione indici per insiemi Vettori di input e costanti Variabili decisionali Definizione di macro Opzioni varie LE.17

Struttura file MPL (2) Parte II: Modello MAX/MIN SUBJECT TO BOUNDS INTEGER BINARY FREE END Funzione obiettivo Vincoli del modello Upper e Lower bound Variabili intere Variabili binarie Variabili libere Fine modello LE.18

TITLE Diet; Modello dieta LE.19

INDEX Gli indici definiscono i domini del problema. Possono essere: Numerici: nutrients:= 1..8; Nominali: foods:=(pasta, ham, cheese, egg, bread); Il numero di caratteri può essere limitato foods :=(pasta,ham,cheese,egg,bread):3; genera (pas, ham, che, egg, bre); LE.20

INDEX (2) Indici circolari: Se i domini rappresentano periodi di tempo è spesso necessario usare operazioni in modulo sul valore dell indice day := (mo,tu,we,th,fr,sa,su) CIRCULAR; month := 1..12 CIRCULAR; Si possono definire sottoinsiemi di indici, specificando: l indice di base la lista di valori del sottoinsieme day := (mo,tu,we,th,fr,sa,su); holiday[day] := (sa,su); LE.21

Modello dieta (2) TITLE Diet; INDEX nutrients := 1..8; foods := ( pasta, ham, cheese, egg, bread ); LE.22

DATA In questa sezione si specificano i coefficienti utilizzati dal modello (costanti o vettori) 1. Costanti: DATA MaxP = 10; MeseFerie = 3; LE.23

DATA (2) 2. Vettori (contenenti i dati di ingresso) INDEX nutrients := 1..8; DATA Required[nutrients] := (40, 20, 30, 10, 42, 41, 65, 17); Per l output sono generati i nominativi: Required1, Required2, Required8 con Required1 = 40, Required2 = 20, LE.24

DATA (3) 3. Matrici (definite per righe) INDEX i := 1..4; j := 1..3; DATA Cost[i,j] := (40, 20, 30, 13, 21, 7, 10, 42, 41, 65, 17, 13); LE.25

DATA (4) Dati da una fonte esterna: 1. File di testo: A[foods,nutrients]:= DATAFILE( input.dat"); { input.dat }! Calories Protein Calcium Iron VitaminA Thiamine Riboflavin Niacin! (1000) (grams) (grams) (MG) (1000 IU) (MG) (MG) (MG) WheatFlour 0 14 2 36 0 55 33 44 CornMeal 36 89 1 99 30 17 7 10 EvapMilk 8 42 15 9 26 3 23 11 Margarine 20 17 0 6 55 1 0 0 Cheese 7 44 16 19 28 0 10 4 2. File Excel: A[foods,nutrients]=EXCELRANGE( input.xls", foods"); LE.26

Modello dieta (3) TITLE Diet; INDEX nutrients := 1..8; foods := ( pasta, ham, cheese, egg, bread ); DATA Required[nutrients] = ( 40, 20, 30, 10, 42, 41, 65, 17); Cost[foods] = ( 10, 8, 15, 6, 16); A[foods,nutrients] = ( 0, 14, 2, 36, 0, 55, 33, 44, 36, 89, 1, 99, 30, 17, 7, 10, 8, 42, 15, 9, 26, 3, 23, 11, 20, 17, 0, 6, 55, 1, 0, 0, 7, 44, 16, 19, 28, 0, 10, 4); LE.27

VARIABILI DECISIONALI DECISION In questa sezione sono definite le variabili del problema. Per definire un insieme di variabili con lo stesso nome, si indica il nome del vettore e la dimensione del vettore stesso. X[foods]; Si possono definire variabili multidimensionali. y[processor,day]; LE.28

VARIABILI DECISIONALI (2) Se alcune delle variabili decisionali sono intere bisogna indicare ciò con la parola chiave INTEGER INTEGER VARIABLES y[processor,day]; Nel caso in cui siano binarie si usa BINARY BINARY VARIABLES y[processor,day]; La definizione può essere fatta alla fine del file MPL LE.29

Modello dieta (4) TITLE Diet; INDEX nutrients := 1..8; foods := ( pasta, ham, cheese, egg, bread ); DATA Required[nutrients] = ( 40, 20, 30, 10, 42, 41, 65, 17); Cost[foods] = ( 10, 8, 15, 6, 16); A[foods,nutrients] = ( 0, 14, 2, 36, 0, 55, 33, 44, 36, 89, 1, 99, 30, 17, 7, 10, 8, 42, 15, 9, 26, 3, 23, 11, 20, 17, 0, 6, 55, 1, 0, 0, 7, 44, 16, 19, 28, 0, 10, 4); DECISION x[foods]; LE.30

FUNZIONE OBIETTIVO Esprime la funzione lineare da ottimizzare. Deve essere indicata all inizio del modello MPL (parte II); preceduta dalla parola chiave MIN o MAX; MAX 3x1 + 5x2 ; MIN Z = SUM(foods:cost*x); MINIMIZE Cost = SUM(foods,nutrients: Y); Il nome è opzionale. LE.31

Modello dieta (5) TITLE Diet; INDEX nutrients := 1..8; foods := ( pasta, ham, cheese, egg, bread ); DATA Required[nutrients] = ( 40, 20, 30, 10, 42, 41, 65, 17); Cost[foods] = ( 10, 8, 15, 6, 16); A[foods,nutrients] = ( 0, 14, 2, 36, 0, 55, 33, 44, 36, 89, 1, 99, 30, 17, 7, 10, 8, 42, 15, 9, 26, 3, 23, 11, 20, 17, 0, 6, 55, 1, 0, 0, 7, 44, 16, 19, 28, 0, 10, 4); DECISION x[foods]; MODEL MIN z = SUM(foods: Cost*x); LE.32

VINCOLI I vincoli del modello vengono definiti immediatamente dopo la funzione obiettivo. Preceduti dalla parola chiave SUBJECT TO I plain constraints sono espressi direttamente Name: X1 + X2 + X3 >= 2; I vector constraints sono associati ad indici. CONST[nutrients]: SUM(foods:A*x)>required[nutrients]; LE.33

Modello dieta (6) TITLE Diet; INDEX nutrients := 1..8; foods := ( pasta, ham, cheese, egg, bread ); DATA Required[nutrients] = ( 40, 20, 30, 10, 42, 41, 65, 17); Cost[foods] = ( 10, 8, 15, 6, 16); A[foods,nutrients] = ( 0, 14, 2, 36, 0, 55, 33, 44, 36, 89, 1, 99, 30, 17, 7, 10, 8, 42, 15, 9, 26, 3, 23, 11, 20, 17, 0, 6, 55, 1, 0, 0, 7, 44, 16, 19, 28, 0, 10, 4); DECISION x[foods]; MODEL MIN z = SUM(foods: Cost*x); SUBJECT TO CONSTR[nutrients]: SUM(foods: A*x) > Required[nutrients]; LE.34

DOMINIO VARIABILI E possibile indicare nel modello un lower bound e/o un upper bound per ogni variabile. Si utilizza la parola chiave BOUNDS BOUNDS X1 >= MinP; Default: lower bound =0 per tutte le variabili. Il file MPL deve terminare con la parola END LE.35

Modello dieta (completo) TITLE Diet; INDEX nutrients := 1..8; foods := ( pasta, ham, cheese, egg, bread ); DATA Required[nutrients] = ( 40, 20, 30, 10, 42, 41, 65, 17); Cost[foods] = ( 10, 8, 15, 6, 16); A[foods,nutrients] = ( 0, 14, 2, 36, 0, 55, 33, 44, 36, 89, 1, 99, 30, 17, 7, 10, 8, 42, 15, 9, 26, 3, 23, 11, 20, 17, 0, 6, 55, 1, 0, 0, 7, 44, 16, 19, 28, 0, 10, 4); DECISION x[foods]; MODEL MIN z = SUM(foods: Cost*x); SUBJECT TO CONSTR[nutrients]: SUM(foods: A*x) > Required[nutrients]; END LE.36

MPL su web www.maximal-usa.com Download software/download Step1: request activation code form Step2: download the software (with http) student version (300 constraints/variables, 100 integer) Step3: install the software (winzip) Step4: activating the Cplex license MPL user manual /mplman/mpltoc.html LE.37