Chapter 13: Simulation Simulation er en kvantitativ metode til bestemmelse af et real life systems basale karakteristika under usikkerhed v.h.a. eksperimenter indenfor en modelramme, der repræsenterer systemet. Simulationsmodellen indeholder de matematiske og logiske relationer, der tilsammen beskriver, hvordan modellens inputs transformeres til dens outputs. Der opereres med 2 typer af inputs 1) kontollerbare inputs og 2) probabilistiske inputs. Et simulationsexperiment indebærer a priori specifikation af værdierne for de kontrollerbare inputs og tilfældig generering af værdier for de probabilistiske inputs (i overensstemmelse med sandsynlighedsfordelingen for pågældende input). For ethvert sæt af tilfældigt genererede data beregnes herefter modellens outputs. Det er nu efter en serie af sådanne experimenter muligt at bestemme basale karakteristika for modellens outputs i form af f.eks. forventningsværdier, spredningsmål og extremsituationer. Eksempler på anvendelsesområder: 1) Udvikling af nye produkter (profitabilitet) 2) Airline overbooking (hvor ofte vil en afgang være overbooket og hvad er den profitmaximerende overbooking politik?) 3) Lagerstyring (beregning af optimal ordrestørrelse og reorder point) 4) Trafik (hvad er konsekvenserne af at lukke en gade i vejnettet p.g.a. reparationsarbejde i form af køer og ventetider?) 5) Køsystemer (beregning af steady state sandsynligheder og basale køkarakteristika L, L ;, W og W ; når disse ikke kan afdækkes analytisk) Eksempler på anvendelser: 1) Risikoanalyse En virksomhed overvejer produktion af et nyt produkt. Data for 1. års omkostninger er givet nedenfor salgspris pr. enhed kr. 249 faste omkostninger kr. 1.000.000 variable omkostninger pr. enhed Ðarbejdskraft Ñ ckr. " variable omkostninger pr. enhed Ðkomponenter Ñ c 2 kr. Profitten i det første år kan da beregnes som (i kr.) Profit (249 c c)x 1.000.000 œ " #
idet x måler efterspørgsel det første år. c ", c # og x kendes ikke med sikkerhed, og kan derfor betragtes som probabilistiske inputs. Det er nu muligt at beregne profitten for et antal værdier af de probabilistiske inputs. Det kan vi enten gøre ved selv at vælge et antal sådanne værdier. Men vi kan også bruge simulation. Dette kræver specifikation af sandsynlighedfordelingerne for de probabilistiske inputs og generering af realiseringer af de underliggende random variables c ", c # og x i overensstemmelse med respektive fordelinger. Dette kan gøre i et regneark, i GAMS eller i en simulationskode. Sandsynlighedsfordeling for c : 1 sandsynlighedsfordeling for c c" sandsynlighed 43 0.1 44 0.2 45 0.4 46 0.2 47 0.1 " Opsplit tallinien mellem 0 og 1 svarende til disse sandsynligheder: ----- ---------- --------------------- ---------- ----- 0.1.3.7.9 1 Generer nu et tilfældigt tal! mellem 0 og 1i en uniform fordeling:! [ 0,.1[ Ê c" œ43! [.1,.3[ Ê c" œ44! [.3,.7[ Ê c" œ45! [.7,.9[ Ê c" œ46! [.9,.1] Ê c œ47 " Sandsynlighedsfordeling for c uniform [a, b]: 2 Generer et tilfældigt tal! mellem 0 og 1 og sæt c# œ a! (b a) Sandsynlighedsfordeling for x normal med middelværdi. og standardafvigelse 5: Generer i regneark eller GAMS et tilfældigt tal fra denne fordeling.
Vi kender nu en realisering af c, c og x, hvilket gør det muligt at bergne profitten " # for netop denne kombination af realiseringer. Gentages dette nu 'mange' gange, kan profittens middelværdi og spredning beregnes og bruges som integreret del af et beslutningsstøttesystem. Dette er essensen af en simulationsmodel. 2) Lager simulation Vi har i Kapitel 11 arbejdet med den såkaldte Periodic-Review Model with Probabilistic Demand. Ideen her var, at den optimale ordre Q blev bestemt som differensen mellem et såkaldt replenishment niveau M og aktuel lagerbeholdning H. Det kan være hensigtsmæssigt at benytte en simulationsmodel til bestemmelse af det optimale M. En virksomhed køber et produkt til til prisen P5 pr. enhed og sælger det til prisen P= pr. enhed (P5 P = ÑÞ Den månedlige efterspørgsel D er normalfordelt med middelværdi. og standardafvigelse 5. Produktet modtages den 1. hver måned, og lagerbeholdningen umiddelbart efter modtagelsen er M. Hvis den månedlige efterspørgsel er mindre end M, betaler virksomheden holding cost C2 pr. enhed, der ikke er solgt. Hvis den månedlige efterspørgsel er større end M er virksomheden konfronteret med en stockout, og vurderer at goodwill cost pr. enhed, der ikke kan leveres, er C 1Þ Virksomheden ønsker nu at bestemme den gennemsnitlige månedlige profit for et givet M og vil også gerne have et estimat på andelen af den totale efterspørgsel, der kan dækkes. For en given realisering af D kan 2 situationer forekomme: a) DŸ Q Brutto profit: (P= P 5)D Holding cost: (Q D)C2 Netto profit: (P= P 5)D (Q D)C2 b) D Q Brutto profit: (P= P 5)Q Goodwill cost: (D Q)C1 Netto profit: (P P )Q (D Q)C = 5 1 Ideen i simulationsmodellen kan beskrives på følgende måde: 1) Initialisering af parametre P= ß P5ß C 2, C1ß M, #runs. Sæt parametrene tællerœ0, efterspørgselœ0, og dækket efterspørgsel œ!þ 2) tællerœtæller 1.
Generer tilfældig realisering af D i overensstemmelse med specificerede fordelingskarakteristikaþ efterspørgselœefterspørgsel D. Hvis DŸ Q, gå til 3). Ellers gå til 4). 3) Beregn netto profit: (P= P 5)D (Q D)C 2. dækket efterspørgselœdækket efterspørgsel D; 4) Beregn netto profit: (P= P 5)Q (D Q)C 1. dækket efterspørgselœdækket efterspørgsel Q; 5) Gem beregnet nettoprofit. Hvis tæller œ #runs, gå til 6). Ellers gå til 2). 6) Beregn gennemsnitlig netto profit og standardafvigelse for samme. Beregn den procentuelle dækning af efterspørgsel som dækket efterspørgsel efterspørgsel STOP;. Her angiver #runs antal gange, der genereres et nyt D fra den kendte normalfordeling for månedlig efterspørgsel. Bemærk: Simulationsmodellen ovenfor er kørt for fast replenishment niveau M. Modellen kan raffineres ved at blive gentaget for forskellige værdier af M. 3) Simulation af et køsystem: Antal channelsœ 1 Fordelingskarakteristika: Interarrival times IAT uniform fordelt i intervallet [a, b] -> IAT œ+ Ð, +Ñ<<, tilfældigt tal mellem 0 og 1 Serviceringstider normalfordelte med middelværdi. og standardafvigelse 5
Notation: IAT: tilfældigt genereret interarrival time AT( 3Ñ: ankomststid for kunde 3 ST( 3): starttid for servicering af kunde 3 W(): ; 3 ventetid i køen for kunde 3 ServT: tilfældigt genereret serviceringstid CT( 3): tidspunkt hvor kunde 3 forlader systemet W( 3): længde af periode, hvor kunde 3 opholder sig i systemet Simulationsmodel: 1) Initialisering af parametre: 3œ0; AT(0) œ 0; CT(0) œ 0; #runs œ5; 2) Sæt 3œ3 1; STOP hvis 3 5 1; Generer IAT; Beregn AT( 3) œat( 3 1) IAT; Hvis AT( 3Ñ CT( 3 " ), gå til 3); ellers gå til 4); 3) Channel ledig -> kunde 3 kan påbegynde service nu -> ST( 3) œat( 3); 4) Channel optaget -> kunde 3 må vente til foregående kunde forlader systemet -> ST( 3) œct( 3 1); 5) W() ; 3 œst( 3) AT( 3); Generer ServT; CT( 3) œst( 3) ServT; W( 3) œct( 3) AT( 3); Gå til 2). En simulationsmodel må altid @/<303-/</= og @+63./</=. Verifikation indebærer test for logisk konsistens af modellen. -> kontroller f.eks. et antal runs med tilsvarende beregninger i hånden lad modellen løse et antal specialtilfælde f.eks. med næsten deterministiske data -> kontroller at modellens output er rimeligt
Validering indebærer check for, om modellen afspejler det foreliggende real life system. -> er specificerede parametre og fordelinger rimelige? -> hvordan opfører modellen sig på historiske data?