6 slides per sida

TAOP14: Föreläsning 2
2
Föreläsning 2: A/ modellera och lösa LP-­‐problem TAOP14:
Föreläsning 2
§  Problemställning i ord → matema=sk modell → → AMPL-­‐modell → CPLEX → resultatutskriD → → svar på den givna problemställningen Problemställning i ord →
matematisk modell → AMPL-modell →
CPLEX → resultatutskrift →
svar på den givna problemställningen
TAOP14: Föreläsning 2
3
Verkligt problem Verifiering Iden=fiering, avgränsningar, förenklingar, antaganden TAOP14: Föreläsning 2
Problemställning i ord →
matematisk modell Förenklat problem Formulering Validering 4
Op=meringsmodell Beslut Variabler Mål Målfunk=on Begränsningar Bivillkor Lösningsmetod Lösning Resultat TAOP14: Föreläsning 2
5
TAOP14: Föreläsning 2
6
Exempel: Produk=onsplanering Modellformulering §  Produk=on av två olika produkter. §  Maximera den totala vinsten. §  Resurs=llgång vid de två =llverkningsavdelningarna: avd 1: 240h; avd 2: 140h Variabeldefini=on: §  Produkt 1 • 
• 
• 
• 
vinst/enhet: 30 kr resursåtgång avd 1: 4h resursåtgång avd 2: 2h begränsad eDerfrågan: 40 st §  Produkt 2 •  vinst/enhet: 20 kr •  resursåtgång avd 1: 3h •  resursåtgång avd 2: 2h xi = antalet =llverkade av produkt i, i = 1, 2 Matema=sk modell: max
z = 30x1 + 20x2
[målfunk)on] då
4x1 + 3x2  240
2x1 + 2x2  140
x1
 40
x 1 , x2
0
[resurs, avd. 1] [resurs, avd. 2] [maxproduk)on] [variabelbegränsningar] 1
TAOP14: Föreläsning 2
7
TAOP14: Föreläsning 2
8
Vid modellering Parametrar §  Parametrar: Givna data, beskriver problemet. Alla siffror som är kända, givna från början, beskriver förutsä/ningarna för problemet. Till exempel: §  Resurser -­‐ Tillgångar bkt ( råvara k, =d t ) -­‐ Åtgång
akj ( råvara k, produkt j ) •  Resursbegränsningar, priser, =llgångar, eDerfrågan §  Variabler: Det man ska fa/a e/ beslut om / vill ha svar på. •  Produk=on, försäljning, inköp, lager, transport, blandning §  Bivillkor:
Kopplar samman variabler och parametrar §  Priser
som behöver kommunicera med varandra. •  Resursbegränsningar, priser, =llgångar, eDerfrågan pkt ( råvara k, =d t ) cjt ( produkt j, =d t ) §  EDerfrågan -­‐ Krav på produk=on djt ( produkt j, =d t ) §  Målfunk=on: Maximera vinst / minimera kostnader •  ”Försäljning gånger intäkt minus inköp gånger inköpspris” TAOP14: Föreläsning 2
-­‐ Inköpspriser -­‐ Försäljningspriser
9
Kan vara minimumkrav (≥) , maximumkrav (≤) eller exakt eDerfrågan (=). TAOP14: Föreläsning 2
10
Variabler Bivillkor Det man ska bestämma / kan påverka / vill ha svar på: Reglerar så a/ ställda krav tvingas a/ uppfyllas : §  Produk=on xjt hur mycket ska produceras av §  Resursbegränsningar produkt j under =dsperiod t ykt hur mycket ska köpas in av råvara k under =dsperiod t §  Lagerbalans §  Inköp
§  Lager
Lkt hur mycket finns i lager av råvara k i slutet (början) av =dsperiod t Tmnt hur mycket ska transporteras från §  Transport ∑a
x jt ≤ bkt
∀ k, t
Lk ,t −1 + ykt − ∑ akj x jt = Lkt
∀ k, t
kj
j∈J
j∈J
§  Transportkrav
(från varje m) ∑T
≤ smt
∀ m, t
∑T
≥ d nt
∀ n, t
x jt ≥ 0
∀ j, t
mnt
n∈N
plats m =ll plats n under =dsperiod t (=ll varje n) §  Variabelbegränsningar TAOP14: Föreläsning 2
11
mnt
m∈M
TAOP14: Föreläsning 2
12
Målfunk=on Formulering av bivillkor Ska minimeras eller maximeras Givet följande variabeldefintion :
xijt = Mängd råvara i som ska blandas i produkt j i tidsperiod t
§  Kan bestå av flera komponenter (intäkter / kostnader). där i = 1,..,20 j = 1,..,10 och t = 1,..,5
•  Ska bestå av all=ng som man tjänar på, samt allt som kostar §  Koppla samman varje kostnad / intäkt med en lämplig variabel. Exempelvis: •  Inköpskostnad (parameter) & inköpsmängd (variabel) pkt * ykt •  Försäljningspris (parameter) & försäljning (variabel) cjt * xjt §  Om en viss intäkt / kostnad inte verkar passa ihop med någon av variablerna: •  Fundera över om någon variabel saknas! Formulera följande bivillkor: a)  Användningen av råvara i =ll produkt j får inte övers=ga =llgången bijt enheter per vecka t b)  Användningen av råvara i får inte övers=ga den totala =llgången ci enheter c)  Den totala användningen av råvaror får inte övers=ga btotal enheter T 2.1 2
TAOP14: Föreläsning 2
13
TAOP14: Föreläsning 2
14
Formulering av bivillkor Exempel: produk=onsplanering II d)  Den totala mängden av produkt j ska vara minst dj enheter e)  Den totala mängden av produkter får högst vara dtotal under varje vecka t f)  Mängden av råvara i = 2 ska vara densamma som råvara i = 3 =ll produkt j under vecka t = 4 g)  Varje enskild produkt som =llverkas får innehålla som mest 30% av råvara i = 10 §  De kommande tre veckorna, t = 1,2,3, är eDerfrågan av en viss produkt d1, d2, respek=ve d3. EDerfrågan i vecka t =llgodoses an=ngen genom produk=on eller a/ ta från befintligt lager. §  Lagret har en kapacitet på S produkter och det kostar p kronor a/ lagra en enhet från en vecka =ll nästa. Vill man lagra y/erligare enheter kan man hyra in sig hos e/ företag bredvid, vilket kostar q kr/enhet (q > p). §  Kostnaden a/ =llverka en enhet i vecka t är ct. Vid produk=on används en maskin vars kapacitet är M =mmar varje vecka. För a/ =llverka en enhet vecka t åtgår ht =mmar. Behöver man y/erligare maskin=mmar kan man leasa en maskin för k kr/
=mme. Ini=allagret betecknas L_init respek=ve m_init. §  Formulera problemet som e/ linjärt op=meringsproblem T 2.2 TAOP14: Föreläsning 2
15
LP-­‐modell, produk=onsplanering II 3
3
3
3
min w =
∑c x
t t
t=1
t=1
max z = cT x
då Ax ≤ b
x≥0
t=1
Lt ≤ S , t = 1,2,3
ht xt ≤ M + zt , t = 1,2,3
Lt−1 + mt−1 + xt − dt = Lt + mt , t = 1,2,3
L0 = L _ init
m0 = m _ init
xt , zt ≥ 0 , t = 1,2,3
Lt , mt ≥ 0 , t = 0,1,2,3
x = (x1 x2
(c
b=( S
c=
TAOP14: Föreläsning 2
17
LP-­‐modell, matrisform A = 0
0
0
h1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
h2
0
0
1
0
h3
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
16
LP-­‐modell, matrisform + p∑ Lt + q∑ mt + k ∑ zt
t=1
då
TAOP14: Föreläsning 2
1
c2
x3
L0
c3
S S
OBS: I denna modell finns både = -­‐ villkor och ≤ -­‐ villkor L1 L2
0
p
p
M
M
M
L3 m0 m1 m2 m3
p 0 q q q k k k
d1 d2
d3
)
T
L _ init m _ init
TAOP14: Föreläsning 2
T
z3 )
z1 z2
)
T
18
Kom ihåg! 0
0
1
0
0
0
0
0
0 0 0
0 0 0
1 −1 0
0 1 −1
0
0
0
0
0 0 0
0 0 0
1 −1 0
0 1 −1
1
0
0
1
−1 0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
−1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
−1 0
0 −1
0 0
0 0
1
−1
0
0
0
0
0
0
0
0
0
0
0
0
0
§  Skilj på parametrar (numerisk data) och variabler (det vi ska fa>a beslut om). §  I en LP-­‐modell får variabler inte mul=pliceras eller divideras med varandra! §  I bivillkoren, skilj på: -­‐ e/ villkor för varje index ( ∀
) -­‐ summera över index ( ∑ ) 3
TAOP14: Föreläsning 2
19
TAOP14: Föreläsning 2
20
Matema=sk modell → AMPL-­‐modell AMPL §  AMPL = modelleringsspråk som används för a/ formulera en matema=sk modell så a/ e/ datorprogram, tex CPLEX, kan förstå den. §  Skrivs i en vanlig texnil. Alterna=v 1: Alterna=v 2: max
z = 30x1 + 20x2
max z =
då
4x1 + 3x2  240
2x1 + 2x2  140
x1
 40
x 1 , x2
0
Två strategier: §  Alterna=v 1: Modell och data =llsammans §  Alterna=v 2: Modell och data var för sig TAOP14: Föreläsning 2
Modell och data =llsammans. Enkelt för små problem. 21
AMPL-­‐modell, alt. 1 # Variabeldefinition
var x1 >= 0;
var x2 >= 0;
# Målfunktion
maximize z :
Tecknet ”#” används framför kommentarer 4*x1 + 3*x2 <= 240;
2*x1 + 2*x2 <= 140;
x1
<= 40;
TAOP14: Föreläsning 2
X
då
j2J
23
xj
0,
i2I
j2J
TAOP14: Föreläsning 2
22
set PRODUKTER;
set AVDELNING;
# Har olika produkter
# Har olika avdelningar
param Vinst{ PRODUKTER };
# Täckningsbidraget
param Maxtid{ AVDELNING };
param a{ PRODUKTER, AVDELNING };
# Tidstillgång, avd.
# Tidsåtgång
param Maxprod{ PRODUKTER };
# Maxtillverkning
var x{ PRODUKTER } >= 0;
# Variabeldefinition
TAOP14: Föreläsning 2
24
AMPL-­‐modell, alt. 2, modell AMPL-­‐modell, alt. 2, data set PRODUKTER := p1 p2;
set AVDELNING := m1 m2;
Namn på
villkoret
För varje ...
Avd_tid{ j in AVDELNING }:
sum{ i in PRODUKTER } a[i,j]*x[i] <= Maxtid[j];
Maxproduktion{i in PRODUKTER}:
x[i] <= Maxprod[i];
aij xj  bi ,
Modell och data var för sig. Smidigare för stora problem, mer generellt. maximize z :
sum{ i in PRODUKTER } Vinst[i]*x[i];
subject to
c j xj
j2J
AMPL-­‐modell, alt. 2, modell 30*x1 + 20*x2;
# Bivillkor
subject to
Avd_tid1 :
Avd_tid2 :
Maxproduktion :
X
Summera
över ...
param : Vinst
p1
30
p2
20
Maxprod :=
40
1000 ;
param : Maxtid :=
m1
240
m2
140 ;
Här specificeras:
2 produkter
2 avdelningar
M=1000, ”ett
tillräckligt stort tal”
param a : m1 m2 :=
p1
4 2
p2
3 2;
4
TAOP14: Föreläsning 2
25
TAOP14: Föreläsning 2
26
AMPL-­‐modell → CPLEX Kommandofil §  Vi har en modell-­‐ och en datafil som beskriver vårt problem. Hur få datorn a/ lösa det? reset;
options solver cplex ;
# nollställer tidigare beräkningar
# väljer lösare
model exempel1.mod ;
data exempel1.dat ;
# väljer modell
# väljer data
solve;
# löser problemet
modellfil: mi/problem.mod kommandofil: mi/problem.run datafil: mi/problem.dat # skriver resultatet till fil
display x
> exempel1.res;
display Avd_tid.slack > exempel1.res;
TAOP14: Föreläsning 2
27
CPLEX → resultatutskriD Alt. 1, modell och data i samma fil Alt. 2, separata filer z
z
= 1733.33
x1 = 40
x2 = 26.67
Avd_tid1.slack = 0
Avd_tid2.slack = 6.67
TAOP14: Föreläsning 2
28
resultatutskriD → svar på den givna problemställningen Läs av resultatet och gör en rimlighetsbedömning: = 1733.33
§  Är variabelvärdena rimliga ... ... i rela=on =ll vad som är lönsamt? ... i rela=on =ll de villkor och krav som finns? x [ * ] :=
p1 40
p2 26.67;
§  Är målfunk=onsvärdet rimligt? •  Om möjligt, gör en överslagsräkning •  Jämför med en op=mis=sk ska/ning •  Jämför med en pessimis=sk ska/ning Avd_tid.slack [ * ] :=
m1 0
m2 6.67;
TAOP14: Föreläsning 2
29
TAOP14: Föreläsning 2
30
Op=mis=sk ska/ning Pessimis=sk ska/ning Måste all=d, med säkerhet, ge e/ värde som är bä/re än det op=mala målfunk=onsvärdet. Måste all=d, med säkerhet, ge en lösning som är =llåten med avseende på bivillkoren. Strategi: §  Använd enkel ”papper och penna räkning” §  Ska/a variablerna så a/ de blir för bra §  Förenkla målfunk=onen så a/ den ger e/ för bra värde max z = 30x1 + 20x2
Strategi: §  Använd enkel ”papper och då 4x1 + 3x2  240
penna räkning” 2x1 + 2x2  140
§  Förenkla problemet utan a/ fler x1
 40
lösningar än de ursprungliga blir x 1 , x2
0
=llåtna, troligen fås då färre =llåtna lösningar §  Förenkla målfunk=onen så a/ den ger e/ för dåligt värde T 2.4 max
z = 30x1 + 20x2
då
4x1 + 3x2  240
2x1 + 2x2  140
x1
 40
x 1 , x2
0
T 2.3 5
TAOP14: Föreläsning 2
31
TAOP14: Föreläsning 2
32
Labora=on 1 Uppsummering Fö. 2 §  SyDar =ll a/ ni ska komma igång med AMPL §  Gå från problemställning i ord =ll resultatutskriD §  Byggs upp stegvis §  Förberedelse inför projektuppgiDen där ni ska lösa e/ något större problem §  Modellering •  Parametrar, variabler, bivillkor, målfunk=on •  AMPL, modelleringsspråk för op=meringsproblem •  Sista sidorna på dagens föresläsning visar AMPL-­‐
modellen för problemet ”Produk=onsplanering II” §  Unörliga exempel ”Ska/ningar” på Lisam: •  Ger exempel på hur man kan skapa en op=mis=sk och pessimis=sk ska/ning •  Här för produk=onsuppgiDen från Lek=on 2 / Labb 1 TAOP14: Föreläsning 2
33
Produk=onsplanering II 3
min w =
3
∑c x
t t
t=1
t=1
modellfil, del 1 set produkter;
param T;
param c{produkter};
param Efterfrågan{1..T}
param p;
param q;
param k;
param M;
param h{1..T};
param S;
param L_init;
param m_init;
t=1
Lt ≤ S , t = 1,2,3
ht xt ≤ M + zt , t = 1,2,3
Lt−1 + mt−1 + xt − dt = Lt + mt , t = 1,2,3
L0 = L _ init
m0 = m _ init
xt , Lt , mt , zt ≥ 0 , t = 1,2,3
Behöver skapa tre filer. 34
3
+ p∑ Lt + q∑ mt + k ∑ zt
t=1
då
3
TAOP14: Föreläsning 2
kommandofil: exempel2.run modellfil:
exempel2.mod datafil: exempel2.dat TAOP14: Föreläsning 2
35
#
#
#
#
#
#
#
#
#
#
#
#
Olika produkter
Antal veckor
Produktionskostnad
Efterfrågan varje vecka
Lagerkostnad hemma
Lagerkostnad borta
Leasingkostnad
Maskinkapacitet
Åtgång vid tillverkning
Lagerkapacitet
Initiallager eget
Initiallager extra
TAOP14: Föreläsning 2
modellfil, del 2 modellfil, del 3 # Antal producerade produkter vecka t:
var x{1..T} >= 0;
minimize z: sum{t in 1..T} c[t]*x[t] + sum{t in 1..T} p*L[t] + sum{t in 1..T} q*m[t] + sum{t in 1..T} k*z[t]);
# Antal produkter i lager vecka t:
Var L{0..T} >= 0;
36
subject to
Lagerkapacitet{t in 1..T} : L[t] <= S;
# Antal produkter i lager borta vecka t:
var m{0..T} >= 0;
Maskintid{t in 1..T} : h[t]*x[t] <= M + z[t];
# Antal leasingtimmar vecka t:
var z{1..T} >=0;
Lagerbalans{t in 1..T}: L[t-1] + m[t-1] + x[t] - d[t] = L[t] + m[t];
Init_eget : L[0] = L_init;
Init_extra : m[0] = m_init;
6