13.07.2015 Views

2. Introduzione all'uso del software Xpress

2. Introduzione all'uso del software Xpress

2. Introduzione all'uso del software Xpress

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Introduzione</strong> all’uso di FICO <strong>Xpress</strong>Metodi di Ottimizzazione per la Logistica e la Produzione1


2Alcuni risolutori per laProgrammazione Matematica


Indice Sono a disposizione numerosi risolutori diProgrammazione Matematica, soprattutto rivolti allaProgrammazione Lineare e Lineare Intera: Microsoft Solver per Excel Gurobi Cplex <strong>Xpress</strong> Lindo … Lista esaustiva su Wikipedia alla voce LinearProgramming3


CPLEXhttp://www-01.ibm.com/<strong>software</strong>/commerce/optimization/cplex-optimizer/index.html4


Gurobihttp://www.gurobi.com/5


Lindohttp://www.lindo.com/6


AMPLhttp://www.ampl.com/7


XPRESShttp://www.fico.com/en/Products/DMTools/Pages/FICO-<strong>Xpress</strong>-Optimization-Suite.aspx8


9Il <strong>software</strong> XPRESS


Caratteristiche Generali Interfaccia user-friendly Linguaggio di programmazione molto semplice Implementazione di mo<strong>del</strong>li matematici Implementazione di semplici algoritmi euristici Possibilià di chiamata da C/C++ Student edition gratuita Numerose estensioni Schermate grafiche Programmazione matematica non lineare …10


XPRESS Optimization Suitehttp://www.fico.com/en/Products/DMTools/xpress-overview/Pages/<strong>Xpress</strong>-Optimizer.aspx11


XPRESS – Linguaggio MOSELhttp://www.fico.com/en/Products/DMTools/xpress-overview/Pages/<strong>Xpress</strong>-Mosel.aspx12


Versione gratuita per studentihttp://optimization.fico.com/student-version-of-fico-xpress.html13


Manuale e altro materiale per l’utilizzohttp://www.fico.com/en/Products/DMTools/xpress-overview/Pages/<strong>Xpress</strong>-Documentation.aspx14


15Uso <strong>del</strong>l’interfaccia grafica


Interfaccia grafica16


Esempio 1mo<strong>del</strong> esempio1uses "mmxprs"declarationsx1, x2: mpvarend-declarationsz:= x1 + 2*x23*x1 + 2*x2


Esempio 1Esecuzione :z = 171.429x1 = 114.286x2 = 28.18


Esempio 2: Knapsack ProblemMaximize MaxVal =8i18Value i X is. t. MaxWeight = Weight i Xi WTMAXDati: WTMAX = 102 e:i1X i : BinaryItem 1 2 3 4 5 6 7 8Value 15 100 90 60 40 15 10 1Weight 2 20 20 30 40 30 60 10


Elementi necessari all’implementazione Dichiarazione di array di numeri reali Weight (i) e Value(i) Dichiarazione di un array di variabili decisionali X(i) range di definizione degli array come items=1..8 valore costante capacità Dati di input per Weight (i) e Value(i); Definizione <strong>del</strong>le sommatorie Uso di loop Variabili binarie20


Implementazionemo<strong>del</strong> knapsackuses "mmxprs“declarations items = 1..8 profitti: array(items) of integer pesi: array(items) of integer x: array(items) of mpvar cap: integerend-declarations profitti:: [15, 100, 90, 60, 40, 15, 10, 1 ] pesi:: [ 2, 20, 20, 30, 40, 30, 60, 10 ] cap:= 102z:= sum(i in items) profitti(i)*x(i)v1:= sum(i in items) pesi(i)*x(i)


22Alcuni elementi utili all’uso <strong>del</strong>linguaggio MOSEL


Memoria dinamicaE’ preferibile usare l’allocazione dinamica <strong>del</strong>la memoriaE’ necessario in questo caso inizializzare in modo opportuno i dati:23


StringheE’ possibile utilizzare <strong>del</strong>le stringhe alfanumeriche per indicizzare i dati:E’ necessario anche in questocaso inizializzare in modoopportuno i dati:24


Variabili associate a vincoliE’ possibile associare variabili alla f.o. ed ai vincoli:che possono essere opportunatamente interrogate:25


if-thenMosel permette di controllare l’ordine di esecuzione di un programma permezzo di due tipi di controlli: selezione e loop.L’istruzione di selezione più semplice è l’istruzione if-then:Esistono anche le istruzioni if-then-else ed if-then-elif-then-else.26


Loop: forall• L’istruzione di loop più semplice è l’istruzione forall:Altri loop sono:while (do .... end-do)repeat .... until27


Loop: repat - until• Un’altra istruzione di loop è il repeat-until:28


Loop: condizioni logiche E’ possibile costruire condizioni logiche per mezzo deglioperatori >=,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!