manual xpress
Embed Size (px)
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)