19 Simualtion

Operasjonsanalytiske
emner
Del 19
Simulering
Modeller med
stokastiske variabler
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
1
Introduksjon til simulering
I mange regneark kan verdien i en eller flere celler
som representerer uavhengige variabler (X1, X2, …,
Xk) være ukjent eller usikker.
Som resultat blir også verdien til den avhengige
variabelen usikker:
Y = f(X1, X2, …, Xk)
Simulering kan benyttes til å analysere slike modeller.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
2
Stokastiske variabler & Risiko
En stokastisk variabel (random variable) er en hvilken som helst
variabel der verdien ikke kan predikeres eller fastslås med sikkerhet.
Mange “input cells” i regnearkmodeller er egentlig stokastiske
variabler.
Framtidige råmaterialkostnader
Framtidige rentesatser
Framtidig antall ansatte i et firma
Framtidig forventet etterspørsel etter et produkt
Beslutninger basert på usikker informasjon medfører som regel
risiko.
“Risiko” impliserer også en viss mulighet for tap.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
3
Hvorfor analysere risiko ?
Å sette inn forventede verdier for usikre celler sier oss
ingen ting om variasjonen i resultatmålet vi baserer
beslutningene på.
Anta at en investering på $1,000 vil gi en forventet
avkastning på $10,000 om to år. Vil du investere
hvis...
Resultatet kan variere fra $9,000 til $11,000?
Resultatet kan variere fra -$30,000 til $50,000?
Alternativer med samme forventet verdi kan ha
forskjellig grad av risiko.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
4
Metoder for risiko-analyse
Best-Case/Worst-Case Analyse
What-if Analyse
Simulering
Hvorfor simulering:
http://web.stanford.edu/~savage/faculty/savage/FOA%20Index.htm
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
5
Best-Case/Worst-Case Analyse
Best case – sett inn de mest gunstige
verdiene for hver av de usikre input-cellene.
Worst case - sett inn de mest ugunstige
verdiene for hver av de usikre input-cellene.
Dette er lett å gjøre, men sier oss ingen ting
om fordelingen av mulige utfall mellom
best-case og worst-case grensene.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
6
Mulige resultatfordelinger
worst case
best case
worst case
best case
worst case
best case
worst case
best case
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
7
What-If Analyse
Sett inn forskjellige mulige verdier for de usikre
input-cellene og se hva som skjer.
Dette er enkelt å gjøre i regneark.
Problemer:
Verdier kan bli valgt på en ”skjev” måte.
Flere hundre eller tusener av scenarios kan være nødvendige for å
gjengi en representativ fordeling.
Gir ikke håndfaste bevis (facts and figures) som er nødvendige for å
forsvare beslutninger overfor ledelsen.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
8
Simulering
Minner om automatiserte What-If analyser.
Verdier for usikre input-celler velges på en ”nøytral”
(ikke ”skjev”) måte.
Datamaskinen genererer flere hundre (eller tusener)
av scenarier.
Vi kan analysere resultatene fra disse scenariene for
bedre å forstå usikkerheten i resultatmålet, og foreta
beslutninger basert på solide empiriske beregninger.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
9
Eksempel: Hungry Dawg Restaurants
Hungry Dawg er en voksende restaurantkjede med en selvforsikret sykelønnsordning.
Inkluderte ansatte betaler $125 pr. måned til ordningen,
Hungry Dawg betaler resten.
Antall ansatte inkludert i ordningen endres fra måned til
måned.
Antall ansatte var 18,533 forrige måned og dette forventes å
øke med 2% pr. måned.
Gjennomsnittlig kostnad pr. ansatt var $250 forrige måned og
forventes å øke med 1% pr. måned.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
10
Implementere modellen
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
11
Spørsmål vedrørende modellen
Vil antall ansatte faktisk øke med nøyaktig 2% hver
måned ?
Vil gjennomsnittlig sykelønnskostnad pr. ansatt faktisk
øke med nøyaktig 1% hver måned ?
Hvor sannsynlig er det at de totale kostnadene for
selskapet vil bli nøyaktig $36.125.850 neste år ?
Hva er sannsynligheten for at selskapets totale
sykelønnskostnader vil overstige f.eks. $38.000.000 ?
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
12
Simulering
For å kunne ta forsvarlig hensyn til risikoen innebygd i
modellen, må vi benytte simulering.
Simulering er en 4 trinns prosess:
1.
2.
3.
4.
Identifiser de usikre input-cellene i modellen.
Benytt dekkende sannsynlighetsfordelinger for hver
usikker celle.
Kjør modellen n ganger, og registrer verdien til
resultatmålet hver gang.
Analyser det utvalget av mulige verdier for resultatmålet
som simuleringen har skapt.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
13
Random Number Generators (RNG)
En RNG (slumptall generator) er en matematisk
funksjon som på slump skaper (genererer) en
verdi fra en bestemt sannsynlighetsfordeling.
Vi kan benytte RNGs for usikre celler (stokastiske
variabler), slik at vi trekker (simulerer) verdier fra
sannsynlighetsfordelingene for de forskjellige
usikre inputcellene.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
14
Random Number Generators
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
15
Eksempler på Diskrete sannsynlighetsfordelinger
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
16
Eksempler Kontinuerlige sannsynlighetsfordelinger
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
17
Diskrete kontra kontinuerlige
stokastiske variabler
En diskret stokastisk variabel kan anta verdier fra en gitt,
tellbar mengde mulige verdier (vanligvis heltall).
Eksempel: Antall defekte dekk på en ny bil kan være: 0, 1, 2,
3, eller 4
(5 hvis den har reservehjul).
En kontinuerlig stokastisk variabel kan anta verdier fra en
uendelig mengde innenfor et gitt intervall.
Eksempel: Mengden av drivstoff i en ny bil kan være en
hvilken som helst verdi mellom 0 og maksimal kapasitet på
drivstofftanken.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
18
Klargjøre modellen for simulering
Anta at vi har analysert historiske data, og funnet at:
Endringen i antall ansatte (som dekkes av
sykelønnsordningen) hver måned er fordelt likt fra 3%
reduksjon til 7% økning.
Gjennomsnittlig kostnad (ved sykelønnsordningen) pr.
ansatt er normalfordelt med en gjennomsnittlig økning på
1% pr. måned og et standardavvik på $3.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
19
Revidering og simulering
Skriv inn formelen direkte
Eller velg fra menyene i Distributions
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
20
Definere RNG
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
21
Definere output
Eller legg til: + PsiOutput() i cellen
2. Velg Results – Output – In Cell
1. Aktiver cellen du vil analysere
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
22
Risk Solver
Pæren lyser = Interactive Simulation On
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
23
Simuleringsresultat
Dobbeltklikk på cellen du vil ha resultat for
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
24
Mange ulike plot og tabeller
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
25
Mangler ved begrensede utvalg
Gjennomkjøringene av vår modell representerer et utvalg fra
(den uendelige) populasjonen av alle mulige gjennomkjøringer.
Anta at vi repeterte en simulering med samme antall
gjennomkjøringer.
Q: Ville vi få de samme statistiske resultatene ?
A: NEI (Bare hvis vi benytter SEED-funksjonen)
Etter hvert som utvalgsstørrelsen (antall gjennomkjøringer)
øker, vil de statistiske egenskapene konvergere mot de sanne
verdiene til hele populasjonen.
Vi kan også lage konfidensintervall for en rekke statistiske
egenskaper for utvalget ...
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
26
Konfidensintervall for populasjonens
sanne gjennomsnitt
s
n
s
95% øvre konfidensg rense = y  1.96 
n
der:
95% nedre konfidensg rense = y -1.96 
y  utvalgets gjennomsni tt
s = utvalgets standardav vik
n = utvalgets størrelse (og n  30)
Merk at etter hvert som n øker, innsnevres konfidensintervallet.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
27
Konfidensintervall for populasjonens
virkelige andel
95% nedre konfidensg rense = p-1.96 
p (1  p )
n
95% øvre konfidensg rense = p  1.96 
p (1  p )
n
der:
p  andelen av utvalget som er mindre enn en verdi Y p
n = utvalgsstø rrelsen (og n  30)
Merk at etter hvert som n øker, innsnevres konfidensintervallet.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
28
Konfidensintervall i Excel
Verdiene fra standard normalfordelingen kan finnes
direkte i Excel med funksjonen =NORMSINV(1-α/2)
Et 95% konfidensnivå tilsvarer 5% signifikansnivå.
Normalfordelingen er symmetrisk, og 5% tilsvarer
2,5% i hver hale.
NORMSINV(1-5%/2) ≈ 1,96
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
29
Annen bruk av simulering
Simulering brukes for å beskrive utviklingen,
fordelingen og andre karakteristika for et resultatmål,
når verdier til en eller flere inputvariabler er usikre.
Ofte er enkelte inputvariabler kontrollert av
beslutningstakeren.
Vi kan benytte simulering til å finne verdier på
kontrollerbare variabler som medfører at ”systemet”
opereres optimalt.
Følgende eksempel illustrerer prosessen.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
30
Eksempel på et reservasjonproblem:
Piedmont Commuter Airlines
PCA Flight 343 flyr mellom en liten regional flyplass og en stamruteplass.
Flyet har 19 seter, mange er ofte tomme.
Flybilletten koster $150 per sete.
Det er 10% sannsynlighet for at et solgt sete står tomt.
Hvis PCA overbook’er, så må de i gjennomsnitt betale $325 for hver
passasjer som blir stående igjen.
Etterspørselen etter seter er stokastisk, som følger:
Etterspørsel
14 15 16 17 18 19 20 21 22
23 24 25
Sannsynlighet
.03 .05 .07 .09 .11 .15 .18 .14 .08 .05 .03 .02
Hva er det optimale antall seter som bør selges?
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
31
Implementere & Simulere modellen
Multiple simuleringer:
Alternative mengder billetter for salg:
Celle C7 =PsiSimParam(E9:E15)
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
32
Resultat fra alle simuleringene
Lag en tabell for alle 7 simuleringer:
Kolonne med standradavvik: =PsiStdDev($C$15;G9)
Kolonne med gjennomsnitt:=PsiMean($C$15;G9)
Kolonne med max:=PsiMax($C$15;G9)
Kolonne med min:=PsiMin($C$15;G9)
Lag et plott for forventning og risiko:
1. Velg kolonnene for standardavvik og gjennomsnitt
2. Sett inn et plott/scatterdiagram.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
33
Valg av mengde overbooking
Valget vil avhenge av graden
av risikoaversjon
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
34
Eksempel med lagerkontroll:
Millennium Computer Corporation (MCC)
MCC er en forhandler av datamaskiner – i hard konkurranse.
Stock Out (utsolgt) forekommer på en populær skjerm.
Dagens etterbestillingspunkt er 28.
Nåværende ordrestørrelse er 50.
Daglig etterspørsel og leveringstid varierer som følger:
Etterspørsel:
Sannsynlighet:
0
1
2
3
4
5
6
7
8
9 10
0.01 0.02 0.04 0.06 0.09 0.14 0.18 0.22 0.16 0.06 0.02
Leveringstid:
Sannsynlighet:
3
4
5
0.2 0.6 0.2
MCC’s eiere ønsker å bestemme etterbestillingspunktet og
ordrestørrelsen som gir 98% service grad, og samtidig holde
gjennomsnittslageret så lite som mulig.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
35
Implementere& Simulere Modellen
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
36
Simulerings
-resultater
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
37
Stokastisk optimering
Målsetting: Minimere gjennomsnittslager.
Variabler:
bestillingspunkt og bestillingskvantum.
Restriksjon:
Gjennomsnittlig servicenivå minst 98%.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
38
Optimering & Simulering
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
39
Husk Seed opsjonen
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
40
God løsning
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
41
Lagerbeholdning opprinnelig strategi
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
42
Lagerbeholdning ny strategi
Mer stabilt
lagernivå.
Volatiliteten
er redusert.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
43
Stor variasjon i Servicenivå
Det er 39,3% av
utfallene som har
et servicenivå
mindre enn 98%,
noen ganger så lavt
som 89%.
Med et
bestillingspunkt på
36 og
ordrekvantum på 7,
er det nesten 40%
sjanse for at
servicenivået blir
mindre enn 98%.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
44
Nye typer restriksjoner
 Value at risk constraint (VaR):


Kan spesifisere hvor stor andel av utfallene i en simulering
som må tilfredstille en restriksjon.
For eksempel 90% av utfallene må ha en gjennomsnittlig
servicegrad på 98%.
 Conditional Value at risk constraint (CVaR)

Legger restriksjon på gjennomsnittlig størrelse på avviket fra
restriksjonen for de ulike utfallene i en simulering.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
45
Max 10% av utfallene mindre enn
98% servicenivå
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
46
Et prosjektvalgsproblem: TRC Technologies
TRC har $2 million til investering i følgende nye R&D prosjekter.
Prosjekt
1
2
3
4
5
6
7
8
Investering
($1000)
250
650
250
500
700
30
350
70
Sannsynlighet
Suksess
0,9
0,7
0,6
0,4
0,8
0,6
0,7
0,9
Inntektspotensiale
($1000)
Min
Forventet
600
750
1250
1500
500
600
1600
1800
1150
1200
150
180
750
900
220
250
Max
900
1600
750
1900
1400
250
1000
320
TRC ønsker å velge de prosjektene som maksimerer selskapets
forventede profitt.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
47
Implementere & Simulere Modellen
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
48
Stokastisk Transformasjon
Solver har transformert en stokastisk modell til en
deterministisk ekvivalent modell. Denne modellen
er her lineær.
Den kan dermed løses av en lineær solver, som
raskt finner globalt optimum.
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
49
Størst forventet profitt
Men 9,9% sjanse for tap
BØK710 OPERASJONSANALYTISKE EMNER
Husk å bruke Seed
opsjonen!
Rasmus Rasmussen
50
Maksimere sjansen for profitt
tilsvarende minst 1000
Minimere sjansen for at profitten
blir mindre enn 1000
Nå er modellen stokastisk, og må løses
med Evolutionary Solver
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
51
Risikostyring
Løsningen som maksimerer forventet profitt har også
en stor mulighet for å gå med tap (10%).
Anta at TRC foretrekker en løsning som maksimerer
sannsynligheten for å tjene minst $1 million samtidig
som det ikke er mer enn 5% sannsynlighet for å gå
med tap.
Vi kan benytte Risk Solver Platform for å finne slike
løsninger...
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
52
Hvordan RNGs virker
RAND() funksjonen returnerer uniformt (lik)
fordelte slumptall mellom 0,0 og 0,9999999.
Anta at vi ønsker å simulere resultatet av å foreta
myntkast.
La 1 representere “krone”
og 2 representere “mynt”.
Vurdér følgende RNG:
=IF(RAND()<0,5;1;2)
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
53
Simulere Terningkast
Vi ønsker at verdiene 1, 2, 3, 4, 5 & 6 skal opptre tilfeldig
med lik sannsynlighet.
Bruk følgende RNG:
=INT(6*RAND())+1
Hvis 6*RAND( ) ender
i intervallet:
0.0 to 0.999
1.0 to 1.999
2.0 to 2.999
3.0 to 3.999
4.0 to 4.999
5.0 to 5.999
BØK710 OPERASJONSANALYTISKE EMNER
INT(6*RAND( ))+1
vil returnere verdien:
1
2
3
4
5
6
Rasmus Rasmussen
54
Generere slumptall
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
55
Slutt på kapittel 19
BØK710 OPERASJONSANALYTISKE EMNER
Rasmus Rasmussen
56