johdanto - jyväskylän...
TRANSCRIPT
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ä olio-
ohjelmointia.
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!