Managerial Decision Modeling A Practical Introduction to Management Science , 5ed by Cliff Ragsdale
LOG350 Operasjonsanalyse Chapter 12 Simulation Rasmus Rasmussen LOG350 Operasjonsanalyse
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. Rasmus Rasmussen LOG350 Operasjonsanalyse
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. Rasmus Rasmussen LOG350 Operasjonsanalyse
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. Rasmus Rasmussen LOG350 Operasjonsanalyse
Metoder for risiko-analyse Best-Case/Worst-Case Analyse What-if Analyse Simulering Rasmus Rasmussen LOG350 Operasjonsanalyse
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. Rasmus Rasmussen LOG350 Operasjonsanalyse
Mulige resultatfordelinger innenfor et område worst case best case worst case best case worst case best case worst case best case Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse 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. Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse 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. Rasmus Rasmussen LOG350 Operasjonsanalyse
Eksempel: Hungry Dawg Restaurants Hungry Dawg er en voksende restaurantkjede med en selv-forsikret 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. Rasmus Rasmussen LOG350 Operasjonsanalyse
Implementere modellen Rasmus Rasmussen LOG350 Operasjonsanalyse
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 ? Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse Simulering For å kunne ta forsvarlig hensyn til risikoen innebygd i modellen, må vi benytte simulering. Simulering er en 4 trinns prosess: 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. Rasmus Rasmussen LOG350 Operasjonsanalyse
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 sannsynlighets-fordelingene for de forskjellige usikre input-cellene. Rasmus Rasmussen LOG350 Operasjonsanalyse
Random Number Generators Rasmus Rasmussen LOG350 Operasjonsanalyse
Eksempler på Diskrete sannsynlighetsfordelinger Rasmus Rasmussen LOG350 Operasjonsanalyse 17
Eksempler Kontinuerlige sannsynlighetsfordelinger Rasmus Rasmussen LOG350 Operasjonsanalyse 18
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. Rasmus Rasmussen LOG350 Operasjonsanalyse
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ønns-ordningen) pr. ansatt er normalfordelt med en gjennomsnittlig økning på 1% pr. måned og et standardavvik på $3. Rasmus Rasmussen LOG350 Operasjonsanalyse
Revidering og simulering Skriv inn formelen direkte Eller velg fra menyene i Distributions Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse Definere RNG Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse Definere output Eller legg til: + PsiOutput() i cellen 2. Velg Results – Output – In Cell 1. Aktiver cellen du vil analysere Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse Risk Solver Pæren lyser = Interactive Simulation On Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse Simuleringsresultat Dobbeltklikk på cellen du vil ha resultat for Rasmus Rasmussen LOG350 Operasjonsanalyse
Mange ulike plot og tabeller Rasmus Rasmussen LOG350 Operasjonsanalyse
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 gjennom-kjø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 ... Rasmus Rasmussen LOG350 Operasjonsanalyse
Konfidensintervall for populasjonens sanne gjennomsnitt der: Merk at etter hvert som n øker, innsnevres konfidensintervallet. Rasmus Rasmussen LOG350 Operasjonsanalyse
Konfidensintervall for populasjonens virkelige andel der: Merk at etter hvert som n øker, innsnevres konfidensintervallet. Rasmus Rasmussen LOG350 Operasjonsanalyse
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 symetrisk, og 5% tilsvarer 2,5% i hver hale. NORMSINV(1-5%/2) ≈ 1,96 Rasmus Rasmussen LOG350 Operasjonsanalyse
Annen bruk av simulering Simulering brukes for å beskrive utviklingen, fordelingen og andre karakteristika for et resultatmål, når verdier til en eller flere input-variabler er usikre. Ofte er enkelte input-variabler 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. Rasmus Rasmussen LOG350 Operasjonsanalyse
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: Hva er det optimale antall seter som bør selges? 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 Rasmus Rasmussen LOG350 Operasjonsanalyse
Implementere & Simulere modellen Multiple simuleringer: Alternative mengder billetter for salg: Celle C7 =PsiSimParam(E9:E15) Rasmus Rasmussen LOG350 Operasjonsanalyse
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: Velg kolonnene for standardavvik og gjennomsnitt Sett inn et plott/scatterdiagram. Rasmus Rasmussen LOG350 Operasjonsanalyse
Valg av mengde overbooking Valget vil avhenge av graden av risikoaversjon Rasmus Rasmussen LOG350 Operasjonsanalyse
Eksempel med lagerkontroll: Millennium Computer Corporation (MCC) MCC er en forhandler av datamaskiner – der konkurransen er meget hard. 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: 0 1 2 3 4 5 6 7 8 9 10 Sannsynlighet: 0.01 0.02 0.04 0.06 0.09 0.14 0.18 0.22 0.16 0.06 0.02 Leveringstid: 3 4 5 Sannsynlighet: 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. Rasmus Rasmussen LOG350 Operasjonsanalyse
Implementere& Simulere Modellen Rasmus Rasmussen LOG350 Operasjonsanalyse
Simulerings-resultater Rasmus Rasmussen LOG350 Operasjonsanalyse
Stokastisk optimering Målsetting: Minimere gjennomsnittslager. Variabler: bestillingspunkt og bestillingskvantum. Restriksjon: Gjennomsnittlig servicenivå minst 98%. Rasmus Rasmussen LOG350 Operasjonsanalyse
Optimering & Simulering Viser utfallet for en av de 1000 løsningene fra en simulering. Hver av disse PsiOut cellene inneholder egentlig en vektor med 1000 ulike verdier. Viser gjennomsnittsverdien av de 1000 ulike løsningene. Hver gang Solver velger nye verdier på beslutningsvaiablene kjøres en ny simulering med 1000 verdier, og nye gjennomsnitt blir beregnet. Solver forsøker å finne de verdiene på beslutningsvaiablene som gir lavest gjennomsnittsverdi på lageret, samtidig som gjennomsnittlig servicenivå er minst 98%. Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse Husk Seed opsjonen Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse God løsning Rasmus Rasmussen LOG350 Operasjonsanalyse
Lagerbeholdning opprinnelig strategi Rasmus Rasmussen LOG350 Operasjonsanalyse
Lagerbeholdning ny strategi Mer stabilt lagernivå. Volatiliteten er redusert. Rasmus Rasmussen LOG350 Operasjonsanalyse
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%. Rasmus Rasmussen LOG350 Operasjonsanalyse
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. Rasmus Rasmussen LOG350 Operasjonsanalyse
Max 10% av utfallene mindre enn 98% servicenivå Rasmus Rasmussen LOG350 Operasjonsanalyse
Et prosjektvalgsproblem: TRC Technologies TRC har $2 million til investering i følgende nye R&D prosjekter. Inntektspotensiale Investering Sannsynlighet ($1,000s) Prosjekt ($1,000s) suksess Min Forventet Max 1 $250 0.9 $600 $750 $900 2 $650 0.7 $1250 $1500 $1600 3 $250 0.6 $500 $600 $750 4 $500 0.4 $1600 $1800 $1900 5 $700 0.8 $1150 $1200 $1400 6 $30 0.6 $150 $180 $250 7 $350 0.7 $750 $900 $1000 8 $70 0.9 $220 $250 $320 TRC ønsker å velge de prosjektene som maksimerer selskapets forventede profitt. Rasmus Rasmussen LOG350 Operasjonsanalyse
Implementere & Simulere Modellen Unngå bruk av IF funksjoner Ett av de 1000 ulike forsøkene Gjenneomsnittet av 1000 verdier Hvordan kan en stokastisk modell bli LP Convex? Rasmus Rasmussen LOG350 Operasjonsanalyse
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. Rasmus Rasmussen LOG350 Operasjonsanalyse
Størst forventet profitt Men 9,9% sjanse for tap Husk å bruke Seed opsjonen! Rasmus Rasmussen LOG350 Operasjonsanalyse
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 Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse 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... Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse End of Chapter 12 Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse 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) Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse 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 INT(6*RAND( ))+1 i intervallet: vil returnere verdien: 0.0 to 0.999 1 1.0 to 1.999 2 2.0 to 2.999 3 3.0 to 3.999 4 4.0 to 4.999 5 5.0 to 5.999 6 Rasmus Rasmussen LOG350 Operasjonsanalyse
LOG350 Operasjonsanalyse Generere slumptall Rasmus Rasmussen LOG350 Operasjonsanalyse