U N I V E R S I T A' D E G L I S T U D I D I B E R G A M O DIPARTIMENTO DI MATEMATICA, STATISTICA, INFORMATICA E APPLICAZIONI “Lorenzo Mascheroni” Modelli Matematici per i Mercati Finanziari I Introduzione a GAMS (Vittorio Moriggia) General Algebraic Modeling System (GAMS) Software realizzato per problemi di ottimizzazione lineare (LP), non-lineare (NLP) e mista intera (MIP) Progettato per risolvere problemi grandi e complessi Disponibile per personal computers, workstations, mainframes e supercomputers GAMS language GAMS consente all’utente di concentrarsi sulla formulazione del problema attraverso un impiego semplice del risolutore richiesto Il linguaggio di GAMS è simile alle comuni formalizzazioni dei problemi di ottimizzazione Familiare a tutti coloro che hanno esperienze di programmazione Tipi di modelli GAMS è in grado di formulare modelli in diversi tipi di classi di problemi Il passaggio da una classe all’altra è relativamente semplice in quanto si possono impiegare gli stessi dati, le stesse variabili e le stesse equazioni in differenti tipi di modelli nello stesso istante Tipi di modelli GAMS supporta i seguenti tipi di modelli di base: LP Linear Programming NLP Non-Linear Programming DNLP Non-Linear Programming with Discontinuous Derivatives MIP Mixed-Integer Programming MINLP Mixed-Integer Non-Linear Programming MCP Mixed Complementarity Problems CNS Constrained Nonlinear Systems MPEC Mathematical Programs with Equilibrium Constraints Linear Programming (LP) min cx s.t. Ax b L x U max cx s.t. Ax b L x U dove: è un vettore di variabili nell’insieme dei numeri reali cx è la funzione obiettivo (lineare) Ax > b è l’insieme dei vincoli lineari L e U sono i vettori dei limiti inferiori e superiori delle variabili (lower e upper bounds) x Programmazione lineare in GAMS GAMS accetta sia variabili libere (senza vincoli), sia variabili positive, sia variabili negative. L’utente può, inoltre, specificare degli specifici intervalli di esistenza (lower e upper bounds) In GAMS le equazioni sono specificate come equazioni vere e proprie o disequazioni “minore-uguale” o “maggiore-uguale” Non-Linear Programming (NLP) min f ( x) s.t. dove: x f(x) g(x) LeU g ( x) 0 L x U variabili reali funzione obiettivo insieme di vincoli bounds delle variabili Non-Linear Programming with Discontinuous Derivatives min f ( x) s.t. dove: x f(x) g(x) LeU g ( x) 0 L x U variabili reali funzione obiettivo insieme di vincoli bounds delle variabili Come NLP, ma f(x) e g(x) possono avere derivate discontinue (contenenti ad es. abs, min, max) Mixed-Integer Programming (MIP) dove: min cx d y s.t. Ax By b L x U y 0,1, 2, ... variabili reali x y variabili intere cx+dy funzione obiettivo Ax+By > b insieme di vincoli LeU bounds delle variabili reali {0, 1, 2, …} insieme dei numeri interi Mixed-Integer Non-Linear Programming (MINLP) dove: min f ( x) Dy s.t. g ( x) Hy 0 L x U y 0,1, 2, ... x variabili reali y variabili intere f(x)+Dy funzione obiettivo g(x)+Hy insieme di vincoli LeU bounds delle variabili reali {0, 1, 2, …} insieme dei numeri interi Esempio di problema LP Modello lineare per la soluzione del problema dei trasporti, storicamente utilizzato nell’evoluzione delle tecniche di ottimizzazione [cfr. Dantzig (1963)] Problema del trasporto Il classico problema dei trasporti prevede un certo numero di impianti e un certo numero di mercati di un certo bene di cui sono noti: il costo unitario per il trasporto da uno specifico impianto a uno specifico mercato la capacità produttiva di ciascun impianto la domanda di quel bene in ciascun mercato ci si chiede quanto bene deve essere fornito da ciascun impianto per ciascun mercato in modo da minimizzare il costo totale per la fornitura Formalizzazione del problema Indici: i = impianti (unità produttive) j = mercati Dati del problema: ai = capacità produttiva dell’impianto i (in scatole) bj = domanda del bene nel mercato j (scatole) cij = costo unitario per il trasporto del bene dall’impianto i al mercato j ($/scatola) Variabili decisionali: xij = quantità di bene trasportata da i a j (scatole), dove xij 0, per ogni i, j Formalizzazione del problema x a , i 2) x b , j 0) min c x 1) dove: 1) 2) 0) j ij i i ij j ij ij i j vincolo del limite delle capacità produttive vincolo di soddisfazione della domanda funzione obiettivo Struttura del linguaggio SETS dati: PARAMETERS, TABLES, SCALARS VARIABLES EQUATIONS dichiarazione definizione MODEL SOLVE [DISPLAY] Riferimenti http://www.gams.com