manual xpress

Post on 30-Oct-2014

110 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introduzione allIntroduzione all’’utilizzo di utilizzo di XpressXpress ((studentstudent editionedition))

PROGETTO E SIMULAZIONE DEI SISTEMI DI PRODUZIONE E

SERVIZIOGiovedì 4 Giugno 2009

Traduzione del modello in linguaggio MOSEL (Xpress-MP)

StrutturaStruttura deidei modellimodelli in in XpressXpress--MPMP (Mosel)(Mosel)• Intestazione• Parametri• Dichiarazioni• Costruzione del modello

• Funzione obiettivo• Vincoli

• Soluzione del modello• Visualizzazione dei risultati a video• Esportazione dei risultati su file dati

Intestazioni del modello

• Ogni programma Mosel inizia con la parola chiave model, seguita dal nome delmodello scelto dall'utente. Il programma Mosel termina con la parola chiave end-model.

Traduzione del modello in linguaggio MOSEL (Xpress-MP)

IntestazioneIntestazione del del modellomodello

model “Cellular Manufacturing"uses "mmxprs" ! Use Xpress-Optimizer….end-model

Definizioni dei parametri• Può essere utile definire alcuni parametri (costanti) da

utilizzare all’interno del modello.

Esempio: parametersDATAFILE= "folio.dat" ! File with problem dataOUTFILE= "result.dat“ ! Output file MAXRISK = 1/3 ! Max. investment into high-risk valuesMAXVAL = 0. ! Max. investment per shareMINAM = 0.5 ! Min. investment into N.-American valuesend-parameters

Dichiarazione oggetti (declarations)

• Si utilizza per introdurre gli insiemi, le variabili, i vettori di parametri.

• Si possono inserire diverse sezioni nel modello, ciascuna indicata con:

declarations……..end-declarations

Esempi di dichiarazioniParametri:c:integerf:realIST=1..nd:array(IST) of integerVariabili:x:array(IST) of mpvars: mpvar

Esempio funzione obiettivo

! Objective: total returnReturn:= sum(s in SHARES) RET(s)*frac(s)

…….

Maximize(Return)

Esempio espressione di insiemi di vincoli

• x(1)=0

• forall(k in IST) x(k)>=0

• sum(s in SHARES) frac(s) = 1

• forall(k in IST)doy(k) is_binarys(k)<=y(k)*Q

end-do

Esecuzione del modello (run)Occorre utilizzare il pulsante:

sull’interfaccia IVE. A meno di messaggi di errore di compilazione (sintassi) o durante l’esecuzione, si ottiene il valore delle variabili, della funzione obiettivo, e si può stampare l’output a video o su un file dati.

Stampa a video dei risultatiStampa a video dei risultati

! Solution printingwriteln("Total return: ", getobjval)forall(s in SHARES) writeln(s, ": ", getsol(frac(s))*100, "%")

Total return: 14.0667bank: 0%brewery: 6.66667%cars: 0%electronics: 0%hardware: 0%highways: 30%software: 13.3333%telecom: 0%theater: 20%treasury: 30%

Esportazione su file dati dei risultati

fopen("RESULT_LS.dat",F_OUTPUT)

forall(g in IST)dowriteln("y(",g,") : ",getsol(y(g)))writeln("s(",g,") : ",getsol(s(g)))

end-dowriteln("funzione obiettivo:

",getsol(ret1)+ getsol(ret2))writeln("End running model")

writeln("(", gettime-starttime, " sec)")

fclose(F_OUTPUT)

.......y(21) : 0s(21) : 0y(22) : 1s(22) : 32y(23) : 0s(23) : 0y(24) : 0s(24) : 0y(25) : 0s(25) : 0funzione obiettivo: 861End running model(1.201 sec)

Esempio di modello: lotlot sizingsizing problemproblem

• Modello per il dimensionamento ottimo della produzione su un orizzonte temporale discretizzato

• Minimizzazione dei costi complessivi di produzione nel rispetto della domanda assegnata ad ogni instante e di altri vincoli operativi

Esempio di modello: lotlot sizingsizingproblemproblem

Tipologie di costi considerati• Costi fissi di produzione• Costi di immagazzinamento

Vincoli operativi• Bilanciamento dei flussi• Capacità produttiva

Parametri• Domanda• Capacità installata nei diversi periodi temporali

Modello discreto utilizzato per la risoluzione di

problemi di gestione delle scorte (inventory

management)

1

k-1

k

k+1

xk

xk+1

sk Output

dkDomanda

n

ckCosti di mantenimento per unità di prodotto

xkScorte di prodotto

presenti all’istante k ykè la variabile decisionale

binaria che se pari ad uno, rappresenta l’attivazione della

produzione di sk unità di prodotto al tempo k

Esempio di modello: lotlot sizingsizing problemproblem

fkcosti fissi di set-up

Il modello matematico del CLSP

},..,1{}1,0{,0,0

00

..

)(min

1

1

1

nkysx

Cys

xsdx

sdxx

ts

yfxc

kkk

kkk

knn

kkkk

kk

n

kkk

∈∀∈≥≥

=+−=+−=

+

+

=∑

}1,..,1{ −∈∀ nk

},..,1{ nk ∈∀

In caso di capacità non fisse nel tempo (C=C(k))il problema è NP-Hard

Traduzione del modello CLSP in linguaggio MOSEL

• Intestazionemodel CapacitatedLotSizingProblemuses "mmxprs","mmsystem"; !gain access to the Xpress-

Optimizer solver……

end-model

parameters

n=25

end-parameters

Traduzione del modello CLSP in linguaggio MOSEL

declarationsIST = 1..25

x:array(IST) of mpvar !quantità immagazzinatey:array(IST) of mpvar !attivazione della produziones:array(IST) of mpvar !quantità prodotta

d:array(IST) of integer !domandaf:array(IST) of integer !costi fissi di produzionec:array(IST) of integer !costi di immagazzinamentoC: array(IST) of integer !capacità produttiva

end-declarations

Traduzione del modello CLSP in linguaggio MOSEL

Inizializzazioni dei vettori di parametri

f::[100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100]

d::[1,0,2,3,0,0,0,0,0,17,0,0,0,11,5,25,0,0,0,5,3,24,0,0,0]

C::[50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50]

c::[5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]

Traduzione del modello CLSP in linguaggio MOSEL

Traduzione del modello CLSP in linguaggio MOSEL

Vincoli di conservazione del flusso produttivoforall(k in 1..n-1)x(k+1)=x(k)-d(k)+s(k)0=x(n)-d(n)+s(n)x(1)=0

00

1

1

=+−=+−=+

xsdx

sdxx

knn

kkkk }1,..,1{ −∈∀ nk

Traduzione del modello CLSP in linguaggio MOSEL

Attivazione della produzione e capacitàforall(k in IST)do

y(k) is_binarys(k)<=y(k)*C(k)

end-do

},..,1{}1,0{

nky

Cys

k

kkk

∈∀∈≤

Traduzione del modello CLSP in linguaggio MOSEL

Fisica realizzabilità delle variabili:forall(k in IST)x(k)>=0forall(k in IST)s(k)>=0

},..,1{0,0

nksx kk

∈∀≥≥

• Funzione obiettivoStock:=sum(k in IST)c(k)*x(k)FixedCharge:=sum(k in IST)f(k)*y(k)

minimize(Stock+FixedCharge)

Traduzione del modello CLSP in linguaggio MOSEL

Outputforall(k in IST)do

writeln("y(",k,") : ",getsol(y(k)))writeln("s(",k,") : ",getsol(s(k))) writeln("x(",k,") : ",getsol(x(k))) end-do

writeln("funzione obiettivo: ",getsol(Fixedcharge)+ getsol(Stock))

writeln("End running model")

Traduzione del modello CLSP in linguaggio MOSEL

Caricamento dati da filedeclarations

n:integer

end-declarations

initializations from “nomefiledati.dat"nend-initializations

declarationsIST=1..nc: array(IST) of integerf: array(IST) of integerC: array(IST) of integerd:array(IST) of integer

end-declarations

Caricamento dati da file

Caricamento dati da fileinitializations from "DATI_LS.dat"d c f Q end-initializations

declarationsx:array(IST) of mpvary:array(IST) of mpvars:array(IST) of mpvarend-declarations

Descrizione del file dati

f:[100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100]

d:[1,0,2,3,0,0,0,0,0,17,0,0,0,11,5,25,0,0,0,5,3,24,0,0,0]

C:[50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50]

c:[5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]n: 25

Esportazione output su file datifopen("RESULT_LS.dat",F_OUTPUT)

forall(k in IST)dowriteln("y(",k,") : ",getsol(y(k)))

writeln("s(",k,") : ",getsol(s(k))) end-dowriteln("funzione obiettivo: ",getsol(Stock)+

getsol(Fixedcharge))writeln("End running model")

fclose(F_OUTPUT)

top related