Simuloinnin taktisia kysymyksiä Timo Tiihonen Tietotekniikan laitos 2010
Simuloinnin taktisia kysymyksiä Simuloinnilla on aina tavoite. Simuloitaessa on käytössä ohjelma, joka tilastollisesti riittävän yhtenevä alkuperäisen systeemin kanssa. Miten simulointi järjestetään niin, että tavoite saavutetaan riittävän hyvin ja ilman tarpeetonta työtä. Mitä mitataan. Miten simulointi aloitetaan/lopetetaan. Kauanko simuloidaan, onko simuloitava lisää, paljonko?
Estimaatit Simuloinnin tulos on aina likiarvo (estimaatti) jostakin suureesta, jolla on periaatteessa yksikäsitteinen arvo. Olkoon α tuntematon esimoitavan parametrin arvo (esimerkiksi käyttöaste). Tavoite on estimoida α. Suoritetaan N simulointia tuloksin X i, i = 1,..., N. Näiden avulla johdetaan kaksi estimaattia: piste-estimaatti A = A(X 1,..., X N ) ja intervalliestimaatti [A 1, A 2 ]. Tavoitteena on, että α A on pieni ja α [A 1, A 2 ] suurella todennäköisyydellä. A on satunnaismuuttuja. A on harhaton (unbiased), jos E(A) = α. A on konsistentti, jos P( A α > ɛ) 0, kun N.
Piste-estimaatit Jos α on satunnaismuuttujan X odotusarvo, A = X = 1 N (ns otoskeskiarvo) on harhaton estimaatti. Lisäksi, jos X i :t ovat riippumattomia, i X i Var(A) = Var( X ) = 1 N 2 Var( i X i ) = 1 N Var(X ) 0 joten A on konsistentti.
Harhaton simulointi Miten simuloida niin, että X :n (eli yksittäisen simuloinnin tuloksen) odotusarvo on α. Simulointikokeen kesto on määriteltävä estimoitavan suureen luonteen mukaisesti. Esimerkiksi käyttöaste (palveluaika/kokonaisaika) edellyttää vakioajan mittaisia toistoja. Keskimääräinen odotusaika/asiakas puolestaan vakiomäärää asiakkaita. Seurattavat suureet voi jakaa karkeasti systeemiriippuviin ja asiakasriippuviin - mitataan aika- tai asiakaskeskiarvoja).
Intervalliestimaatit Simulointeja on yleensä toistettava, jotta Var(X ) voidaan estimoida. Havaittujen arvojen X i avulla on määrättävä A j (X ) siten että P(A 1 (X ) < α < A 2 (X )) = 1 β annetulle luottamustasolle 1 β. Jos X i : ovat normaalijakautuneita (N(α, σ)), testisuure ẑ(x ) = X α N 1/2 σ on N(0, 1) jakautunut ja voidaan määrittää z 1, z 2 siten, että P(z 1 < ẑ < z 2 ) = 1 β.
Intervalliestimaatit ẑ(x ) = X α N 1/2 σ Käytännössä ẑ ei anna riittävää tietoa α:sta, koska σ on tuntematon. Σ:aa voidaan arvioida σ 2 s 2 = (X i X )2 /(N 1). Testisuure z = ˆX α N 1/2 noudattaa t-jakaumaa (vapausasteella s N-1). Tälle voidaan määrätä z 1 ja z 2 vastaavasti. (z 1 = z 2 )
Intervalliestimaatit Nyt P( X (z1 s/n 1/2 ) < α < X + (z1 s/n 1/2 )) = 1 β Tämä määrittää intervalliestimaatin α:lle (luotettavuustasolla 1 β). Intervallin pituuden (2z 1 s/n 1/2 ) lyhentäminen (tarkentaminen) tapahtuu, joko kasvattamalla N:ää (raakaa työtä) kasvattamalla β:aa (tinkimällä luotettavuudesta) pienentämällä s:ää (simuloimalla viisaammin)
Hypoteesin testaus Simuloinnin tulos on satunnainen, epävarma ja epätarkka. Miten vältetään virheelliset johtopäätökset. Esimerkki: yritetään perustella simuloinnilla investoinnin kannattavuutta. Investointi tehdään, jos ennustettu käyttöaste on riittävän suuri. Hypoteesin testauksessa tehdään kaksi hypoteesia H 0, nollahypoteesi: Systeemi ei toteuta asetettua ehtoa (tässä käyttöaste ei riittävän suuri). H 1, todistettava hypoteesi: Systeemi täyttää kriteerin (käyttöaste yli raja-arvon)
Hypoteesin testaus H 0 hyväksytään aina, jos se on mahdollinen tulkinta simulointituloksille. H 1 hyväksytään vain, jos H 0 olisi hyvin epätodennäköinen (p < β) saatujen tulosten valossa. Esimerkissä simuloidaan käyttöasteelle intervalliestimaatti [A 1, A 2 ]. Jos tavoite on osoittaa, että käyttöaste U > U 0, H 1 hyväksytään vain, jos A 1 > U 0, muuten hyväksytään H 0 riippumatta piste-estimaatin arvosta.
Hypoteesin testaus Mahdollisia virhepäätelmiä on kahta lajia Tyyppi I: hylätään H 0, vaikka se on oikea tulos (tn < β). Tyyppi II: hyväksytään H 0, vaikka H 1 olisi oikea (erittäin todennäköistä, jos simulointeja vähän, vaadittu luotettavuus suuri tai systeemin tila lähellä päätösrajaa). Tyyppi II virhe merkitsee, että päätös jää tekemättä, koska simulointitulos ei ole riittävän luotettava.
Tasapainotilan simulointi Tasapainotilassa alkuehtojen (tai ympäristössä tapahtuneiden muutosten) vaikutus systeemin tilamuuttujien jakaumiin on hävinnyt. Vastakohtana transienttitila, jossa tilamuuttujien jakaumat muuttuvat ajan funktiona. (muistavat lähtötilan tai muutosta edeltäneen tilan). Tasapainotilaa tarvitaan yleensä normaalitilanteen simulointiin tai systeemin saattamiseen normaalitilaan ennen kiinnostavaa simuloitavaa tapahtumaa (esim. vikatilanne ja siitä toipuminen).
Tasapainotilan simulointi Simulointiajon alussa alkutilanne vaikuttaa alkuosa tuloksista jätettävä huomiotta (tai tulos harhainen) työtä menee hukkaan useiden toistojen tekeminen alusta lähtien on kallista Vaihtoehtona yksi pitkä simulointiajo, josta otetaan peräkkäisiä näytteitä vain yksi unohdettava alkutransientti usean toiston (näytteen) tekeminen tehokkaampaa peräkkäiset näytteet riippuvat toisistaan tulosten analyysi vaikeampaa
Tasapainotilan simulointi Alkutransientin tunnistamiseen ja peräkkäisten näytteiden analyysiin tarvitaan kovarianssin ja autokorrelaation käsitteitä. Olkoon X j järjestetty jono satunnaismuuttujia, E(X j ) = α j. Määritellään Cov(X i, X j ) = E((X i α i )(X j α j )). X i ja X j ovat riippumattomia jos ja vain jos Cov(X i, X j ) = 0.
Tasapainotilan simulointi Olkoot X j :t simulointiajosta saatavia näytteitä. Tasapainotilassa X j :n jakauma ei riipu j:stä, E(X j ) = α, j. Tällöin Cov(X i, X j ) riippuu vain i j =: d:stä. Määritellään jonon X autokorrelaatio ρ d = Cov(X i, X i+d ) Var(Xi )Var(X i+d ) Tasapainotilassa ρ d = Cov(X i,x i+d ) σ 2. Jos ρ d 0, d > d 0, alkutransientin voi katsoa hävinneen d 0 näytteen jälkeen.
Samasta simuloinnista otettujen peräkkäisten näytteiden analyysi voidaan tehdä kahdella eri tavalla Jätetään havaintoja pois näytteiden väliltä niin, että ρ 1 = ρ 2 =... = 0, ja analysoidaan riippumattomia näytteitä. Lasketaan ja huomioidaan autokorrelaatio simulointituloksissa Riippuville havainnoille X j otoskeskiarvon X varianssi on [ ] σ Var( X 2 N 1 ) = 1 + 2 (1 d N N )ρ d d=1 Jos ρ d :t ovat positiivisia, X :n varianssi on suurempi kuin σ2 /N, joten samaan luottamusväliin tarvitaan enemmän toistoja kuin riippumattomille havainnoille.
Tasapainotilan simulointi Renewal-tekniikalla Tietyissä tapauksissa peräkkäisten näytteiden korrelaatio voidaan poistaa renewal-tekniikalla. Edellytyksenä on, että tietty tila toistuu usein (yleensä tyhjä systeemi) ja data on muistitonta (Poisson prosesseja eli välit eksponentiaalisesti jakautuneita). Jos uusi näyte aloitetaan aina samasta tilasta, peräkkäiset näytteet ovat riippumattomia (ilman, että dataa hukataan näytteiden väliltä). Yksittäisen näytteen kestoa ei voi kontrolloida, joten estimaateista tulee harhaisia.
Tasapainotilan simulointi Renewal-tekniikalla Esimerkki: yksinkertainen jonomalli (yksi jono, yksi palvelin), josta tarkastellaan keskimääräistä jonotusaikaa. Vaihdetaan näyte aina kun asiakas tulee tyhjään systeemiin. Simuloidaan n jaksoa, joissa L i asiakasta (i = 1,..., n). Yksittäiset jonotusajat w ij ja jonotusaika i:nnessä jaksossa y i = L i W j=1 ij. Simuloitu keskimääräinen odotusaika on w = Odotusajan oikea odotusarvo on yi Li = ȳ L µ = E(y) E(L) E(ȳ L )
Tasapainotilan simulointi Renewal-tekniikalla Harhan aiheuttaa se, että renewal-tila pakotetaan simuloinnin alkuun (alkutila ei edusta tasapainotilaa). Virhe on luokkaa 1/n. Näytteiden määrästä riippuvan harhan pienentämiseen on kehitetty ns. Jackknife-tekniikka. Olkoon ˆθ n estimaatti n näytteestä, jolle pätee n E(ˆθ n ) = θ + α i /n i Lasketaan lisäksi estimaatti ˆθ n 1 käyttäen n 1 näytettä. Tällöin i=1 E(nˆθn (n 1)ˆθ n 1 ) = θ + n ˆα i /n i = θ + O( 1 n ). 2 i=2
Tasapainotilan simulointi Renewal-tekniikalla E(nˆθ n (n 1)ˆθ n 1 ) = θ + n ˆα i /n i = θ + O( 1 n ). 2 i=2 (Ts. harha pienenee nopeammin n:n funktiona). Yleensä Jackknife muodostetaan poistamalla vuoronperään näyte i jolloin saadaan estimaatti ˆθ i ja korjattu estimaatti J i (ˆθ) = nˆθ (n 1)ˆθ i. Lopullinen estimaatti on 1 n i J i(ˆθ). Tekniikkaa voi käyttää, kun tuloksissa on näytteiden lukumäärästä riippuva harha.
Varianssin pienentäminen Tehokkain tapa lisätä simuloinnin tarkkuutta/luotettavuutta on pyrkiä pienentämään simuloitujen tulosten varianssia. Käsitellään neljää perustekniikkaa yhteisten satunnaislukujen käyttö antiteettiset satunnaisluvut satunnaissuureiden korvaaminen odotusarvoilla kontrollimuuttujat
Yhteiset satunnaisluvut Olkoon tavoitteena tutkia kahden systeemivariantin (A ja B) eroja. Vastaavat tulokset ovat X A ja X B. Kiinnostava suure on erotus X A X B ja sen odotusarvo α A α B. Suurelle saadaan piste-estimaatti XA XB. Jos simuloinnit ovat riippumattomia, erotuksen varianssi on Var( XA ) + Var( XB ) (S 2 A + S 2 B)/N
Yhteiset satunnaisluvut Jos simuloinnit ovat keskenään riippuvia, Var( XA XB ) = Var( XA ) + Var( XB ) 2Cov( XA, XB ) Jos kokeet ovat keskenään positiivisesti korreloituneita, erotuksen varianssi on pienempi kuin riippumattomille kokeille. Tähän voidaan päästä käyttämällä samoja satunnaislukuja molemmille systeemeille (tuloajat, palveluajat yms generoidaan samoja siemenlukuja käyttäen).
Yhteiset satunnaisluvut Edellyttää sitä, että satunnaislukugeneraattoreiden käynnistys on täysin simuloijan kontrollissa jokaisessa toistossa. Toimii parhaiten, jos eri systeemivarianttien logiikka on mahdollisimman yhdenmukainen satunnaislukujen käytön osalta. Esim. arvotaan kaikki asiakkaaseen liittyvät suureet kerralla riippumatta asiakkaan tulevasta kohtalosta. Näin taataan, että helpot ja vaikeat tulevat samassa järjestyksessä.
Antitettiset muuttujat Tarkastellaan yksittäistä simulointikoetta (ei kahden kokeen erotusta). Oletetaan satunnaislukusekvenssit U i, jotka antavat N tulosta X i. Tehdään N lisäkoetta satunnaisluvuilla U tuloksin X. Asetetaan i i piste-estimaatiksi Y = ( X + X )/2. Tälle E(Y ) = E(X ) = E(X ) ja Var(Y ) = 1 4 (Var( X ) + Var( X ) + 2Cov( X, X ) eli 1 2 (Var( X ) + Cov( X, X )).
Antitettiset muuttujat Jos Cov( X, X ) < 0, varianssi pienenee enemmän kuin tehtäessä N riippumatonta lisäkoetta. Negatiivista korrelaatiota voi hakea esim. korvaamalla systemaattisesti U 1 U:lla Tas(0,1) generaattorissa. vaihtamalla esim tuloaikojen ja palveluaikojen generaattoreiden siemenluvut keskenään. Menetelmällä saadaan 2N simulointiajolla N riippumatonta simulointia, joissa ääri-ilmiöt esiintyvät symmetrisemmin ja siten varianssi on yleensä pienempi.
Odotusarvoilla korvaaminen Usein havainto kiinnostavasta suureesta on summa satunnaisesta määrästä satunnaismuuttujia. Jos jonkin tulokseen vaikuttavan satunnaissuureen jakauma tai odotusarvo tunnetaan, tätä voidaan hyödyntää havainnon analyysissä. Esimerkki: käyttöasteen määrääminen. Käyttöaste on N palv i=1 s i /T missä s i on yksittäisen asiakkaan palveluaika, N palv palveltujen asiakkaiden määrä. E(s i ) tunnetaan (simulointiparametri), merkitään t s. Tällöin myös on estimaatti käyttöasteelle. N palv t s /T
Odotusarvoilla korvaaminen Tasapainossa palvellut asiakkaat = tulleet asiakkaat - hukatut asiakkaat. Tulleiden asiakkaiden jakauma/odotusarvo tunnetaan (simulointiparametri, t a aikayksikköä/asiakas). Eli N palv = T /t a N lost. Tästä käyttöaste on t s /t a N lost t s /T Tällä on sama odotusarvo mutta yleensä pienempi varianssi kuin alkuperäisellä havainnolla.
Odotusarvoilla korvaaminen Kadotettuja asiakkaita voi vielä analysoida tarkemmin. Asiakas kadotetaan vain kun asiakas on tulossa täyteen systeemiin. Siis E(N lost ) = E(T full )/t a Voidaan siis tarkkailla aikaa, jolloin jono on täysi. Estimaatti t s /t a (1 T full /T ) Eri mittarien generointi ei edellyttänyt uusia simulointeja (vain ongelman ymmärtämistä ja analyysiä). On edullista seurata useampaa mittaria ja valita se, joka antaa luotettavimman tuloksen.
Kontrollimuuttujat Kontrollimuuttujien käyttö on usein tehokkain keino varianssin pienentämiseen. On tunnistettava havainnoitavan suureen kanssa vahvasti korreloiva suure, jonka odotusarvo tunnetaan. Tämän jälkeen havainnoidaan näiden erotusta. Olkoot tarkkailtavana havainnot X i, odotusarvo E(X i ) = α tuntematon. Lisäksi mitataan Y i, jolle E(Y i ) = β tunnetaan. Muodostetaan mitattava suure V = X + β Ȳ. Tämä on harhaton estimaatti α:lle, E(V ) = α + β β = α. Var(V ) = Var( X ) + Var(Ȳ ) 2Cov( X, Ȳ ) Jos Cov( X, Ȳ ) > 1 2 Var(Ȳ ), on V tarkempi havainto kuin X (luottamusväli pienempi).
Kontrollimuuttujat Kontrollimuuttuja Y voi olla yksinkertaisemman mallin simulointitulos. Edellyttää toisen mallin simulointia + analyyttistä ratkaisemista (eli voi olla kallista ja vaikeaa). Vaihtoehtoisesti Y voi olla jokin mallin data, jonka jakauma tunnetaan ja joka selittää mitattavaa suuretta hyvin (ns. concommittant muuttuja). (Ei ylimääräistä mallia tai laskentatyötä). Käyttöaste-esimerkissä esim saapuneet asiakkaat (kertaa palveluaika).