L u e n t o Katariina Kemppainen / Logistiikka Simulointi Luennon sisältö Simulointimallit päätöksenteossa Todennäköisyysjakaumat Satunnaisluvut ja Ecel Mallin rakentaminen 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 Relative capacity (hr) 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 Relative capacity (hr) frequency 360 (9 machines) 0.30 400 (10 machines) 0.40 440 (11 machines) 0.30 Average weekly operating machine hours = 400 hours Luento gamma 4 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. Luento gamma 3
Simulointi yksi mallintamismenetelmistä Perustuu malliin, joka on abstraktio, yksinkertaistus, todellisesta systeemistä Sisältää kaikki systeemin kannalta oleelliset piirteet Koe todellisessa systeemissä Systeemi Fyysinen malli Mallin mukainen koe Analyyttinen ratkaisu Matemaattinen malli Simulointi 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 Luento gamma 6 Luento gamma 8 Simulointimallien perusluokittelu Simulointimallissa huomioitava 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 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? Luento gamma 7 Luento gamma 9
Simuloinnin hyötyjä ja haittoja Perusmääritelmiä 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ää 10 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() avulla - funktion kokonaispinta-ala on 1; kumulatiivinen jakaumafunktio F() Luento gamma 13 Erilaisia ohjelmistoja paljon tarjolla Käytetyimmät todennäköisyysjakaumat Kaupallisia ohjelmistopaketteja mm. ProcessModel, ProModel, Arena, Etend, Enterprice Dynamics, ithink Ecelin (lisä)työkalut Satunnaislukugeneraattori ja muut funktiot mahdollistavat yksinkertaisten simulaatiomallien kehittämisen Add-ins: @Risk ja Crystal Ball 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 Sovellusmahdollisuudet Assembly Language FORTRAN PASCAL C, C++ SLAM SIMAN Käytön helppous ProcessModel Ecel Lotus 1-2-3 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 Luento gamma 11 Luento 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) Satunnaislukujen generointi Ecelillä RAND() generoi 0 ja 1 välisen satunnaisarvon tasaisesta jakaumasta RANDBETWEEN(min;ma) 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 Luento gamma 15 Luento gamma 18 Diskreettejä jakaumia Tiheysfunktio ja kertymäfunktio 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 R = F () 15% 50% 80% f() 1 2 3 R 3 = 0,80 1 R = F () R 2 = 0,50 Kertymäfunktion arvo Ecelillä: = NORMINV(R;m;s) R 1 = 0,15 0 1 2 3 Luento gamma 16 Luento gamma 19
Käänteisfunktiomenetelmä jatkuva jakauma Muuntaa satunnaisluvun mallin satunnaismuuttujaksi Käänteisfunktiomenetelmä käytännössä Eksponenttijakauma, jossa asetetaan R=F() Todennäköisyys 1.0 F() R 0.8 0.6 0.4 F() Vaiheet 1) Oleta, että R on satunnaisluku ja R=F(). 2) Käytä RAND() funktiota satunnaisluvun generointiin eli generoi R~Tas(0,1) 3) Laske :n arvo kyseisen jakauman kertymäfunktion F() käänteisfunktion F -1 (R) avulla eli ratkaise R:n funktiona 0.2 200 300 400 500 600 700 800 X=F -1 (R) Huom! Tämä ei ole mahdollista, jos kertymäfunktio F() ei ole tiedossa tai sen käänteisfunktio F 1 (R) on mahdoton (tai hankala) laskea Esimerkki saapumistahti l= 0,5 satunnaisluku R=0,75 havainto eksponenttijakaumasta: -(1/0,5)*LN(1-0,75) = 2,77 Luento gamma 20 Luento gamma 22 Käänteisfunktiomenetelmä diskreetti jakauma Simulointimallin perusvaiheet Muuntaa satunnaisluvun mallin satunnaismuuttujaksi Todennäköisyys R 1.0 0.8 0.6 0.4 0.2 F() F() 200 300 400 500 600 700 800 Vaiheet 1) Oleta, että R on satunnaisluku ja R=F(). 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 - akselilta. 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 Luento gamma 21 Luento 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: =RAND() =VLOOKUP (C18;$C$6:$D$11;2) =VLOOKUP (D18;$G$6:$H$10;2) Luo Ecelillä malli, joka simuloi 500 viikon myynnit BestCar-autokaupassa. Mallin tulisi laskea simuloidun kokeen perusteella keskimääräinen viikoittainen myytyjen autojen määrä ja tuotto. Luento gamma 25 Ecel-mallin rakentamisen peruspalikat Käyttökelpoisia Ecel-funktioita 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 Ecel-funktioita tämän mallin rakentamisessa ovat mm. RAND() ja VLOOKUP. VLOOKUP(lookup_value, table_array, col_inde_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_inde = value to be returned range_lookup = indicates if eact or approimate 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() Luento gamma 26 Luento gamma 28
Jono-ongelma -esimerkki Jono-ongelman simulointimallin logiikka 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. start: I = 0 Arrival_time(0) = 0 Completion_time(0) = 0 Process new customer: I = I +1 Generate TBA(I) Is Completion_time(I-1) > Arrival_time(I) Yes Start_time(I) = Completion_time(I-1) Generate service time for customer I: ST(I) No Start_time(I) = Arrival_time(I) 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. Arrival_time(I) = Saapumisaika(I-1) + TBA(I) Number in queue = No. of prior customers whose Completion_time > Arrival_time(I) Yes Wait_time(I) = Start_time(I) Arrival_time(I) Completion_time(I) = Start_time(I) + ST(I) Idle_time(I) = Start_time(I) -Completion_time(I-1) Process another customer? Ei STOP Luento gamma 29 Luento gamma 31 Jono-ongelma -esimerkki - case laskeminen kaavoilla - Jono-ongelma -esimerkki - case laskeminen simuloimalla - =C22+B23 =D23+E23 = D3/(D4*(D4-D3)) = 1/(D4-D3) = 1-(D3/D4) = D3/D4 M/M/1 kaavat =-(1/$D$18)*LN(RAND()) =MAX(F22;C23) =-(1/$D$19)*LN(RAND()) =D31-C31 =D31-F30 Luento gamma 30 Luento 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