Simulointi Johdanto
Simulointi Simulointi ~ jäljittely Pyrkii kuvaamaan tutkittavan ilmiön tai systeemin oleellisia piirteitä mallin avulla. Systeemin rajaus ja tarkasteltavat piirteet määriteltävä ennen mallin kiinnittämistä ja simulointia. Malli sisältää kolme mallia: Systeemin tuloksen tarkasteltavat ominaisuudet Systeemin (mallinnettu) syöte Systeemin toiminnallinen malli
Mallit Malleja voidaan luokitella eri tavoin Konkreetti/abstrakti pienoismalli vs tietokonemalli Deterministinen/stokastinen Tunnettu vs. satunnainen data Analyyttinen/numeerinen Ratkaisulle kaava vs likimääräisratkaisu Jatkuva/diskreetti Ääretön vs äärellinen määrä tiloja ja muutoksia
Esimerkkejä Vino heittoliike Yhtälöt ja alkuarvot tunnetaan, ratkaisulle esitys kaavana (deterministinen/analyyttinen) U_t = V, V_t = -g, W_t=0, U(0)=U_0, V(0)=V_0, W(0)=W_0, U(t)= U_0 + tv_0 + gt^2/2, W(t)=W_0
Esimerkkejä Tykin ammus Yhtälöt monimutkaisemmat (ilmanvastuksen ja tuulen osuus), lähtönopeus ja tuuli epätarkkoja Edellyttää numeerista ratkaisua, epävarmuuden arviointi tärkeää (stokastisuus)
Esimerkkejä Game of life Deterministiset säännöt, äärellinen määrä sääntöjä ja solujen tiloja (deterministinen, diskreettiaikainen) http://en.wikipedia.org/wiki/conway%27s_game_of_l ife Kassajono Diskreetti (äärellinen määrä tiloja/tapahtumia), Stokastinen (ajoista vain tilastollista dataa) Joskus analyyttinen (lauseke halutulle ominaisuudelle)
Kurssirunko Kurssi painottuu äärellisiin, stokastisiin malleihin (ns. discrete event) ja niiden numeerisiin simulointeihin. Esitietoina todennäköisyyslaskennan ja tilastotieteen perusteita sekä olioohjelmointia.
Luentorunko Johdanto Simulointiparadigmat Tapahtumapohjainen simulointi Oliopohjainen simulointi Satunnaisluvut Monte Carlo Tasapainotilan simulointi Varianssin hallinta Kokeensuunnittelu ja Metamallinnus
Oppimistavoitteet Tuntee tapahtumapohjaisen simuloinnin keskeiset käsitteet Hallitsee satunnaislukujen systemaattisen generoinnin Tuntee keskeisimmät simulointipradigmat ja niiden toteutusstrategiat Osaa toteuttaa yksikertaisia simulointimalleja Osaa analysoida yksittäistä simulointikoetta ja arvioida tulosten luotettavuutta Osaa suunnitella tavoitteellisia simulointikoesarjoja
Esimerkki (1/8) (Auton) pesuautomaatti Tarjolla kaksi erilaista mallia (hinta, operointikustannus ja kapasiteetti poikkeavat). Tiedossa potentiaalinen asiakasvirta. Kumpi malli on kannattavampi (ja onko kumpikaan kannattava). Arvioitava tuotto/aikayksikkö
Esimerkki (2/8) Tuotto/aikayksikkö P= au b b = kiinteät kulut/aikayksikkö a = tuotto/aikayksikkö pesun aikana U = käyttöaste a ja b tunnetaan tai ovat arvioitavissa U määrättävä simuloinnin avulla
Esimerkki (3/8) Tilanteesta tunnetaan Potentiaalisten asiakkaiden käyttäytyminen (tuloaikojen jakauma) Maksimaalinen jonon pituus Palvelutapahtuman kesto(n jakauma) Haluttu tulos Käyttöaste U =T_busy/T_total Tai 1 T_idle/T_total Tai eri varianttien käyttöasteiden erotus
Esimerkki (4/8) Tila kuvattavissa yhdellä muuttujalla N(t)= asiakkaiden määrä hetkellä t Systeemin tilaan kohdistuu kahden tyyppisiä tapahtumia Tulo: uusi asiakas (i) saapuu hetkellä t= t_a(i) Lähtö: asiakas (j) poistuu hetkellä t= t_d(j) Jos N=0, systeemi on tyhjä (asema ei käytössä). = > Simuloinnissa selvitettävä ajat, jolloin N=0 (tai N>0).
Esimerkki (5/8) Jos N(0) ja t_a:t ja t_d:t tunnetaan, N(t) on yksikäsitteisesti määrätty ja laskettavissa. Tulo- ja lähtöaikojen määrääminen edellyttää systeemin simulointia. Neljä muuttujaa + laskurit AT, DT (seuraavat tulo- ja lähtöajat) N (asiakkaiden määrä) t (nykyinen aika) E, T_idle (laskurit tyhjäajalle)
Esimerkki (6/8) Alusta simuloinnin kesto (T), jonon pituus M. t=0, laskurit (T0=0, E=0), N=0 (tyhjä systeemi), DT=maxint AT= t+ tuloaika Toista kunnes t>t Jos AT<DT tapahtuma AT, muuten DT Raportoi tulokset
Esimerkki (7/8) AT t=at; Jos N<= M, N=N+1; Jos N=1 DT=t+ palveluaika T0=T0+t-E; AT=t+ tuloaika ; DT t=dt; N=N-1; Jos N>0 DT=t+ palveluaika Muuten DT=maxint; E=t;
Esimerkki (8/8) Esimerkki oli brute force lähestyminen hyvin yksinkertaiseen tapaukseen. Yleistettävyys monimutkaisempiin tilanteisiin on huono useampia tapahtumatyyppejä, monimutkaisempi tila, asiakkaiden seuraaminen. Kaikki tehdään itse Tietojen keruu, kirjanpito tapahtumista ja systeemin tilasta, jne.
Vaativampi esimerkki Tarkastellaan esimerkkiä, jossa on enemmän rakenneosia ja niiden vuorovaikutusta Otetaan tarkasteluun jakeluverkosto purku- ja lastausoperaatioineen sekä eri pisteiden välisine matkoineen Kuvataan esimerkki konttisatamille
Konttisatamaverkosto Tarkastellaan useamman sataman verkostoa ja näiden välistä liikennettä Oletetaan liikenteen määrä (satamista toiseen) keskimäärin tunnetuksi ja annetuksi Satamilla on erilaisia ominaisuuksia (lastauslaitureiden määrä ja kapasiteetti) Laivoilla erilaisia vakioreittejä
Konttisatamat Mitä voitaisiin simuloida, mitä muutella Satamien käyttöasteet, odotusajat Tarvittavien laivojen määrät, reittien kestot ja kestojen vaihtelut (vaikutukset työvuoroihin) Eri reittivaihtoehtojen vaikutukset Eri jonotusstrategiat Jne
Konttisatamat Mitkä ovat mallin rakenneosia Satamat Lastauslaiturit Laivat Kontit? Tarvitaanko muuta?
Konttisatamat Tapahtumat ja vuorovaikutukset Laiva saapuu satamaan Laivan purku/lastaus alkaa laiturilla Laivan purku/lastaus päättyy Laiva lähtee matkalle seuraavaan satamaan (Laiva luodaan systeemiin) (Laiva poistuu systeemistä)
Konttisatamat Aloitetaan yksinkertaistetusta tapauksesta (laiva saapuu laituriin ja puretaan) Yksinkertaisin asiakas-palvelu malli (vrt pesu-asema) Laiva luodaan ja asetetaan jonoon Laiva otetaan jonosta laituriin ja aloitetaan purku (konttien määrä tunnettava) Purku loppuu, laituri vapautuu ja laiva poistetaan
Konttisatamat Isossa satamassa on useampia laitureita Samankaltaisia laitureita ei kannata hallita erillisinä Vapaat laiturit voi pistää jonoon Alussa sataman kaikki laiturit vapaa jonoon Laivan saapuessa vapaa jonosta otetaan laituri Laituri palaa jonoon kun laiva on purettu
Konttisatamat Laivoilla on yleensä reitit. Laiva luodaan, sille määritellään reitti ja se asetetaan lähtösatamaan (tarvittaessa jo valmiiksi lastattuna) Laiva aloittaa siirtymän seuraavaan satamaan Laiva saapuu ja puretaan ja se aloittaa siirtymän eteenpäin Laiva poistuu (jos ei käytetä syklistä reititystä)
Simuloinnin vaiheet 1 Systeemin/ongelman tunnistaminen Miten rajata tarkastelu, mihin kysymyksiin haetaan vastausta. Mallin suunnittelu Systeemin osat ja niiden väliset vuorovaikutukset Tiedon keruu ja parametrien arviointi Mistä saadaan realistiset syöttötiedot (paljon kovaa työtä ja mittausta)
Simuloinnin vaiheet 2 Ohjelman suunnittelu Mallin logiikan ja tarvittavien käsitteiden kuvaaminen Ohjelman toteutus Simulaattorin koodaus Ohjelman testaus Koodin debuggaus
Simuloinnin vaiheet 3 Mallin validointi Mallin laadullinen analyysi (vertailut havaittuun, intuitiivisiin odotuksiin, yksinkertaistetut tilanteet, tulosten riippuvuus epävarmoista parametreista) Mallin kokeilu Ensimmäiset tuotantoajot, tulosten tarkkuus/luotettavuus, tuotantokokeiden suunnittelu. Tulosten analyysi Johtopäätökset, riski/herkkyysanalyysi, päätöksenteko ja mallipohjainen optimointi
Simuloinnin periaatteita Älä simuloi, jos ei ole pakko Analyyttiset ja deterministiset ratkaisut ensisijaisia Älä simuloi, jos et ymmärrä, mikä on kysymys Tavoitteen vaihto kesken mallin rakennuksen voi olla todella vaikeaa When computing starts, thinking stops!