L u e n t o Simulointi Luennon sisältö Katariina Kemppainen / Logistiikka Simulointimallit päätöksenteossa Todennäköisyysjakaumat Satunnaisluvut ja Excel Mallin rakentaminen
Simulointimallit päätöksenteossa
Mitä simulointi on? Menetelmä, jonka tehtävänä on antaa tietoa todellisen systeemin piirteistä matkimalla sitä keinotekoisesti, usein tietokoneen avulla Simuloinnin tavoitteita antaa yleiskuva systeemistä tilastollisten tunnuslukujen avulla ennustaa systeemin tilaa arvioida tapahtumien todennäköisyyttä esim. riski määrätylle tappioille testata toimintamallien toimivuutta Simulointi on siis todellisen ilmiön jäljittelyä liikennesuunnittelu, tuotannon suunnittelu, auton testaus, varastojen suunnittelu, astronauttien harjoittelu, yrityspelit, populaation kasvu, kassavirtojen simulointi, lentosimulaattori, arvopapereiden hintamuutokset, investointivaihtoehtojen vertailu, jne. TUTA 16-gamma-3
Simulointi kätevää kun muuttujissa vaihtelua Weekly production requirements (hr) Relative frequency 200 0.05 250 0.06 300 0.17 350 0.05 400 0.30 450 0.15 500 0.06 550 0.14 600 0.02 Total 1.00 Average weekly production requirements = 200(0.05) + 250(0.06) + 300(0.17) + + 600(0.02) = 400 hours Regular capacity (hr) Relative frequency 320 (8 machines) 0.30 360 (9 machines) 0.40 400 (10 machines) 0.30 Average weekly operating machine hours = 320(0.30) + 360(0.40) + 400(0.30) = 360 hours Regular capacity (hr) Relative frequency 360 (9 machines) 0.30 400 (10 machines) 0.40 440 (11 machines) 0.30 Average weekly operating machine hours = 400 hours TUTA 16-gamma-4
Simulointi yksi mallintamismenetelmistä Perustuu malliin, joka on abstraktio, yksinkertaistus, todellisesta systeemistä Sisältää kaikki systeemin kannalta oleelliset piirteet Systeemi Koe todellisessa systeemissä Mallin mukainen koe Fyysinen malli Matemaattinen malli Analyyttinen ratkaisu Simulointi TUTA 16-gamma-6
Simulointimallien perusluokittelu Deterministiset mallit luottaa tilamuuttujiin ja yhtälöihin, jotka kuvaavat kuinka tilamuuttujat muuttuvat ajan myötä, päätösten ja ulkoisten tapahtumien mukaan voidaan käyttää päätöspolitiikkojen analysoinnissa ja monimutkaisten vuorovaikutussuhteiden ymmärtämisessä Stokastiset mallit matkivat systeemien käytöstä satunnaisten tekijöiden vallitessa. voidaan käyttää arviomaan systeemin suorituskykyä ajan myötä muuttuvien sisäisten ja ulkoisten tekijöiden vaihdellessa satunnaisesti keskeiset puutteet - mallin rakentaminen ja vahvistus usein erittäin aikaa vievää - ei tuota tietoa optimaalisista tuloksista tai suunnitelmista TUTA 16-gamma-7
Miten simulointi eroaa optimoinnista? Molemmat simulointi ja optimointi tukevat päätöksentekoa, mutta eri tavoin simuloinnissa päätösmuuttujat ovat yleensä mallin syötetietoja (inputs) optimoinnissa päätösmuuttujat ovat yleensä mallin antamia tuloksia (outputs) Simuloinnin tuloksena saadaan tietoa eri tekijöiden käyttäytymisestä tarkastelujakson aikana simulointi mittaa ehdotetun ratkaisun laatua ja sitä, miten paljon vaihtelua tuloksissa voi olla mallin syöttötietojen satunnaisuudesta ja mallin sisäisestä rakenteesta johtuen (vrt. herkkyysanalyysi) simulointia voidaan käyttää optimointiin, esim. vertailtaessa eri vaihtoehtoja, mutta se ei takaa optimaalisuutta TUTA 16-gamma-8
Simulointimallissa huomioitava Mallin rakenteelliset tekijät viittaa mallin sääntöihin ja peruselementteihin - muuttujat - mallin komponenttien fyysiset/loogiset suhteet - päätösvaihtoehdot ja niiden seuraukset - takaisinkytkennät (feedback) Mallin kvantitatiiviset tekijät millaisia numeerisia oletuksia mallin muuttujista tehdään eli - muuttujien mahdolliset arvot - muuttujien keskinäiset tilastolliset riippuvuudet - käytettävät todennäköisyysjakaumat Mallin hyvyyden tarkastelu validointi: kuinka hyvin malli vastaa todellisuutta? verifiointi: onko malli toteutettu / koodattu oikein (esim. bugit)? hyväksyttävyys: miten hyvin mallin käyttäjät hyväksyvät mallin? TUTA 16-gamma-9
TUTA 16-gamma-10 Simuloinnin hyötyjä ja haittoja Todelliseen systeemiin verrattuna + usein ainoa mahdollisuus, koska todellista systeemiä ei voi tutkia pitkällä aikavälillä tai sitä ei ole edes olemassa + halvempi ja vähäriskisempi kuin todellisen systeemin rakentaminen + mahdollistaa asioiden tutkimisen etukäteen ennen systeemin rakentamista + intuitiivinen ja joustava: muuttujia voidaan kontrolloida helpommin + auttaa ymmärtämään systeemiä (koulutustyökalu päätöksentekijöille) + voidaan saada tilastollisia tunnuslukuja ja jakaumia simulointi ei vastaa täydellisesti todellista systeemiä (validiteetti) arvioi ainoastaan annettuja, pelkistettyjä vaihtoehtoja Matemaattisen mallin analyyttiseen ratkaisuun verrattuna + mahdollistaa monimutkaisten mallien tutkimisen, joilla ei ole olemassa analyyttistä ratkaisua (tai ratkaisu on vaikea) + ei tarvitse välttämättä tehdä niin useita yksinkertaistavia oletuksia ei saada yksinkertaisia kaavoja (ja optimaalista ratkaisua), jotka voivat auttaa systeemin ymmärtämisessä tuloksena saadaan arvioita, joihin sisältyvä satunnaisvirhe tulisi myös pystyä arvioimaan edellyttää laskentakapasiteettia ja sekä mallin rakentaminen että vaihtoehtojen vertailu voi olla vaikeaa ja aikaa vievää
Erilaisia ohjelmistoja paljon tarjolla Kaupallisia ohjelmistopaketteja mm. ProcessModel, ProModel, Arena, Extend, Enterprice Dynamics, ithink Excelin (lisä)työkalut Satunnaislukugeneraattori ja muut funktiot mahdollistavat yksinkertaisten simulaatiomallien kehittämisen Add-ins: @Risk ja Crystal Ball Sovellusmahdollisuudet Assembly Language FORTRAN PASCAL C, C++ SLAM SIMAN ProcessModel Excel Lotus 1-2-3 Käytön helppous TUTA 16-gamma-11
Satunnaisluvut ja todennäköisyysjakaumat
Perusmääritelmiä Satunnaismuuttuja numeerinen kuvaus kokeen tuloksesta Satunnaisluku (random number) viittaa satunnaismuuttujaan, joka on tasaisesti jakautunut välillä 0 ja 1 satunnaismuuttujat ja -luvut lisäävät malliin satunnaisuutta eli stokastisuutta (=lähes kaikkiin systeemeihin liittyvä epävarmuus) koska tietokoneet eivät voi generoida lukuja, jotka ovat aidosti satunnaisia, satunnaislukualgoritmeja käytetään generoimaan lukuja jotka vaikuttavat satunnaisilta (näennäissatunnaiset luvut) Todennäköisyysjakauma kuvaus mahdollisista arvoista, joita satunnaismuuttuja voi saada sekä näiden arvojen todennäköisyydet diskreetit todennäköisyysfunktiot määritellään todennäköisyyskertymäfunktion perusteella - jokaisen tuloksen todennäköisyys täytyy olla välillä 0 ja 1 - kaikki todennäköisyydet summautuvat arvoon 1 jatkuvat todennäköisyysjakaumat määritellään todennäköisyystiheysfunktionsa f(x) avulla - funktion kokonaispinta-ala on 1; kumulatiivinen jakaumafunktio F(x) TUTA 16-gamma-13
Käytetyimmät todennäköisyysjakaumat Tasainen jakauma kaikki lopputulokset minimiarvon a ja maksimiarvon b välillä yhtä todennäköisiä voidaan käyttää kun satunnaismuuttujasta on vain vähän tai ei lainkaan tietoa Normaalijakauma kellomainen (keskiarvo μ, keskihajonta σ) - keskeisen raja-arvolauseen perusteella sellaisen satunnaismuuttujajoukon joilla mikä tahansa jakauma keskiarvon voidaan olettaa noudattavan tätä jakaumaa - esim. palveluajat palvelusysteemissä ja poikkeamat teknisistä määrittelyistä tuotantoprosessissa TUTA 16-gamma-14
Jatkuvia todennäköisyysjakaumia Kolmiojakauma parametrit: minimi a, todennäköisin arvo m, ja maksimi b eliminoi äärimmäiset arvot, koska rajattu jakauma voidaan datan puutteessa käyttää approksimoimaan muita jakaumia kuten normaalijakaumaa Eksponentiaalinen jakauma ei muoto- tai sijaintiparametreja - voidaan käyttää mallintamaan tapahtumia, jotka toistuvat satunnaisesti ajan kuluessa, kuten aika asiakkaiden saapumisen välissä (time between arrivals=tba) TUTA 16-gamma-15
Diskreettejä jakaumia Binomijakauma mallintaa n itsenäistä toistoa Bernoullin kokeesta p:n onnistumistodennäköisyydellä keskiarvo np, varianssi np(1-p) Poisson-jakauma käytetään mallintamaan tapahtumien määrää mitattavassa yksikössä keskiarvo = varianssi TUTA 16-gamma-16
Satunnaislukujen generointi
Satunnaislukujen generointi Excelillä RAND() generoi 0 ja 1 välisen satunnaisarvon tasaisesta jakaumasta RANDBETWEEN(min;max) generoi määritettyjen arvojen välisen satunnaisarvon (kokonaisluku) tasaisesta jakaumasta Random number generator Valitse Tools Data analysis Random number generation huom! luvut eivät päivity laskennan yhteydessä kuten RAND() ja RANDBETWEEN() funktioilla TUTA 16-gamma-18
Tiheysfunktio ja kertymäfunktio 50% R = F (x) 80% 15% f(x) x 1 x 2 x 3 x R 3 = 0,80 1 R = F (x) R 2 = 0,50 Kertymäfunktion arvo Excelillä: = NORMINV(R;m;s) R 1 = 0,15 0 x 1 x 2 x 3 x TUTA 16-gamma-19
Käänteisfunktiomenetelmä jatkuva jakauma Muuntaa satunnaisluvun mallin satunnaismuuttujaksi Todennäköisyys 1.0 F(x) R 0.8 0.6 0.4 F(x) Vaiheet 1) Oleta, että R on satunnaisluku ja R=F(x). 2) Käytä RAND() funktiota satunnaisluvun generointiin eli generoi R~Tas(0,1) 3) Laske x:n arvo kyseisen jakauman kertymäfunktion F(x) käänteisfunktion F -1 (R) avulla eli ratkaise x R:n funktiona 0.2 200 300 400 500 600 700 800 X=F -1 (R) x Huom! Tämä ei ole mahdollista, jos kertymäfunktio F(x) ei ole tiedossa tai sen käänteisfunktio F 1 (R) on mahdoton (tai hankala) laskea TUTA 16-gamma-20
Käänteisfunktiomenetelmä diskreetti jakauma Muuntaa satunnaisluvun mallin satunnaismuuttujaksi Todennäköisyys 1.0 F(x) R 0.8 0.6 0.4 0.2 F(x) Vaiheet 1) Oleta, että R on satunnaisluku ja R=F(x). 2) Käytä RAND() funktiota satunnaisluvun generointiin (eli generoi R~Tas(0,1) 3) Valitse sijainti y-akselilla R:n mukaan 4) Lue kyseisen satunnaisluvun arvo x- akselilta. 200 300 400 500 600 700 800 x x TUTA 16-gamma-21
Käänteisfunktiomenetelmä käytännössä Eksponenttijakauma, jossa asetetaan R=F(x) Esimerkki F( x) = 1-e e R= 1-e -lx = 1-R -lx -lx - lx= ln(1 -R) 1 x=- ln1 - l ( R) saapumistahti l= 0,5 satunnaisluku R=0,75 havainto eksponenttijakaumasta: -(1/0,5)*LN(1-0,75) = 2,77 TUTA 16-gamma-22
Simulointimallin rakentaminen
Simulointimallin perusvaiheet 1. Muotoile ongelma ja suunnittele tutkimus 2. Kerää data ja määritä malli 3. Tarkista, että käsitteellinen malli on pätevä/validi 4. Laadi tietokoneohjelma ja verifioi 5. Tee testiajoja 6. Tarkista, että ohjelmoitu malli on pätevä/validi 7. Suunnittele kokeet 8. Suorita simulaatioajot 9. Analysoi tulostiedot 10. Dokumentoi, esitä ja käytä tuloksia TUTA 16-gamma-24
Myyntitulojen vaihtelu esimerkki BestCar autokauppa myy uusia autoja. Kaupan johtaja uskoo, että viikossa myydyillä autoilla on seuraava todennäköisyysjakauma. Lisäksi tiedämme, että autojen hinnat vaihtelevat seuraavasti: Viikoittainen myynti (autoa) Suhteellinen frekvenssi 0 0,05 1 0,15 2 0,20 3 0,30 4 0,20 5 0,10 Myyntihinta (hinta/auto) Suhteellinen frekvenssi $18 000 0,15 $20 000 0,35 $22 000 0,35 $24 000 0,10 $26 000 0,05 Luo Excelillä malli, joka simuloi 500 viikon myynnit BestCar-autokaupassa. Mallin tulisi laskea simuloidun kokeen perusteella keskimääräinen viikoittainen myytyjen autojen määrä ja tuotto. TUTA 16-gamma-25
Excel-mallin rakentamisen peruspalikat Viikkomyynti vaihtelee välillä 0 ja 5 Ł generoi satunnaismuuttuja määrittämään myytyjen autojen määrää Autojen hinta oleta, että hinta on sama kaikille yhden viikon aikana myydyille autoille Ł generoi satunnaismuuttuja määrittämään myytyjen autojen hintaa Simuloidaan viikoittainen tuotto rakenna malli, joka simuloi myyntimäärän ja myyntihinnan 500 viikon ajanjaksolle Relevantteja Excel-funktioita tämän mallin rakentamisessa ovat mm. RAND() ja VLOOKUP. TUTA 16-gamma-26
=RAND() =VLOOKUP (C18;$C$6:$D$11;2) =VLOOKUP (D18;$G$6:$H$10;2)
Käyttökelpoisia Excel-funktioita VLOOKUP(lookup_value, table_array, col_index_num, range_lookup) lookup_value = value to be found in the first column of the array table_array = area from which the value is looked col_index = value to be returned range_lookup = indicates if exact or approximate match is returned LARGE(array, k) array = range of data for which the k-th largest value is determined k = the position (from the largest) in the array of data to return FREQUENCY(range of data, range of bins) press CTRL-SHIFT-ENTER simultaneously ROUND(), ROUNDUP() TUTA 16-gamma-28
Jono-ongelma -esimerkki Mike pyörittää autopesulaa. Hän on vastuussa taloudesta, kirjapidosta, markkinoinnista ja analysoinnista; hänen poikansa vastaa tuotannosta. Asiakkaat saapuvat satunnaisesti, keskimäärin 15 autoa tunnissa. Yhden auton pesu kestää keskimäärin 3 minuuttia, mutta aika vaihtelee melko paljon johtuen vaihtelusta valmistautumisessa. Mike ei käsitä, kuinka jonoa voi kertyä, kun hänen poikansa pystyy työskentelemään nopeammin kuin autot saapuvat. Vaikka asiakkaat valittavat hieman, he eivät lähde vaikka he joutuvat odottamaan. Antaaksesi Mikelle jotain käsitystä, määritä seuraavat keskeiset luvut: Asiakkaan keskimääräinen odotusaika, asiakkaan keskimääräinen aika prosessissa, todennäköisyys, että hänen pojallaan ei ole mitään tekemistä ja todennäköisyys, että hänen poikansa on kiireinen. Oleta, että asiakkaat prosessoidaan FCFS -periaatteella. Vertaa tuloksia simulaatiotuloksiin. TUTA 16-gamma-29
Jono-ongelma -esimerkki - case laskeminen kaavoilla - = D3/(D4*(D4-D3)) = 1/(D4-D3) = 1-(D3/D4) = D3/D4 M/M/1 kaavat TUTA 16-gamma-30
Jono-ongelman simulointimallin logiikka start: I = 0 Arrival_time(0) = 0 Completion_time(0) = 0 Process new customer: I = I +1 Is Completion_time(I-1) > Arrival_time(I) Yes Start_time(I) = Completion_time(I-1) No Start_time(I) = Arrival_time(I) Generate TBA(I) Generate service time for customer I: ST(I) Arrival_time(I) = Saapumisaika(I-1) + TBA(I) Wait_time(I) = Start_time(I) Arrival_time(I) Completion_time(I) = Start_time(I) + ST(I) Number in queue = No. of prior customers whose Completion_time > Arrival_time(I) Yes Idle_time(I) = Start_time(I) -Completion_time(I-1) Process another customer? Ei STOP TUTA 16-gamma-31
Jono-ongelma -esimerkki - case laskeminen simuloimalla - =C22+B23 =D23+E23 =-(1/$D$18)*LN(RAND()) =MAX(F22;C23) =-(1/$D$19)*LN(RAND()) =D31-C31 =D31-F30 TUTA 16-gamma-32
=G122 =H123 esim. TABLE funktiolla Simulointi table-funktiolla: Määritä ja numeroi simulointikertojen määrä (tässä 100 - solut B128-B227) Linkitä taulukon oikea yläkulma laskelman tulokseen (tässä esim. soluun B127 solun G122 arvo) "Maalaa" koko taulukko (tässä esim. solusta A127 soluun B227) Valitse valikoista Data-Table ja määritä sarakesolu mihin tahansa tyhjään soluun