Mat-2.108 Sovelletun matematiikan erikoistyöt 03.08.00 Laivueen toiminnan simulointi
1 JOHDANTO...3 2 SIMULOINNIN PERUSTEITA...4 2.1 SIMULOINNIN TAUSTAA...4 2.2 SIMULOINTIMALLIEN LUOKITTELUA...5 2.2.1 Jatkuva-aikaiset mallit...5 2.2.2 Diskreetit tapahtumamallit...5 3 DISKREETTI TAPAHTUMASIMULOINTI...6 3.1 DISKREETIN TAPAHTUMAMALLIN PERUSKÄSITTEITÄ...6 3.1.1 Mallin perusterminologiaa...6 3.1.2 Mallirakenteiden tyypit...7 3.2 SIMULOINTIMALLIN ANALYSOINTI...9 3.2.1 Simulointiprosessin perusidea...9 3.2.2 Simulointimallin tilastollisen analysoinnin erityispiirteitä...10 4 SIMULOINTIOHJELMISTOT...12 4.1 SIMULOINTIOHJELMISTOJEN JAOTTELUA JA OMINAISPIIRTEITÄ...12 4.2 SIMULOINTIOHJELMISTOJEN TARJONTA...13 4.2.1 Yleistä saatavilla olevista ohjelmistoista...13 4.2.2 GPSS...13 4.2.3 Arena...14 4.2.4 Extend...14 4.2.5 Simul8...14 4.3 SIMULOINTIOHJELMISTON VALINTAAN LIITTYVIÄ TEKIJÖITÄ...15 5 ESIMERKKI LAIVUEEN TOIMINNAN SIMULOINNISTA...16 5.1 LAIVUEEN TOIMINNAN PERUSTEET...16 5.2 LAIVUEEN SIMULOINTIMALLIN TOTEUTUS...18 5.2.1 Simulointimallin yleinen rakenne...18 5.2.2 Simulointimallin rakenteen yksityiskohtainen tarkastelu...18 5.2.3 Simuloinnin lopetusehto ja mallin ulostuloparametrit...19 5.2.4 Muita simulointimallin ominaisuuksia...20 5.3 SIMULOINTIMALLIN HERKKYYSANALYYSI...21 5.3.1 Hälytysten väliajan herkkyysanalyysi...22 5.3.2 Tuhoutumistodennäköisyyden herkkyysanalyysi...23 5.3.3 Rikkoutumistodennäköisyyden herkkyysanalyysi...25 5.3.4 Keskimääräisen lentoajan herkkyysanalyysi...26 5.3.5 Herkkyysanalyysin tulokset ja pohdintaa...27 5.4 JOHTOPÄÄTÖKSIÄ ESIMERKKIMALLISTA...27 6 YHTEENVETO JA JOHTOPÄÄTÖKSET...28 7 KIRJALLISUUSLÄHTEET...29 2
1 Johdanto Erikoistyössä tarkastellaan diskreettiä tapahtumasimulointia ja sen soveltamista lentolaivueen toiminnan analysointiin. Diskreetti tapahtumasimulointi on eräs simulointimenettely, jota voidaan käyttää diskreetisti muuttuvien järjestelmien mallinnukseen ja analysointiin. Diskreettiä tapahtumasimulointia on sovellettu monissa logistiikka- ja tuotantojärjestelmien suunnittelu- ja parannustehtävissä. Esimerkkejä sovelluskohteista on olemassa sadoittain lähtien teleliikenneverkkojen mitoitustehtävistä aina laivastotukikohtien logistiikan suunnitteluun. Kaikissa näissä tapauksissa diskreetti tapahtumasimulointi on tarjonnut menetelmän järjestelmän toiminnan analysoimiseksi ennen kuin investointeja todellisen järjestelmän rakentamiseksi on tarvinnut tehdä. Tietokoneiden ominaisuuksien parantuessa diskreetistä tapahtumasimuloinnista on muodostunut yhä tehokkaampi vaihtoehto järjestelmien analysoimiseksi. Markkinoille on ilmestynyt kymmenittäin ohjelmistoja, jotka helpottavat erilaisten diskreettien järjestelmien mallinnusta. Tämä on tehnyt monimutkaistenkin systeemien mallinnuksesta hallittavampaa mutta samalla myös halvempaa. Tässä työssä esitetään aluksi muutamia diskreetin tapahtumasimuloinnin peruskäsitteitä ja sen käyttöön liittyviä toimintamalleja. Lisäksi tarkastellaan markkinoilla olevia simulointiohjelmistoja, joilla diskreettejä tapahtumamalleja voidaan rakentaa ja analysoida. Ohjelmistoista selvitetään niiden mallintamis- ja analysointiominaisuuksia sekä ohjelmistojen eroavaisuuksia. Lisäksi käsitellään simulointiohjelmiston valintaan liittyviä seikkoja. Lopuksi esitellään yksinkertaistettu lentolaivueen toiminnan mallinnus diskreettillä tapahtumasimuloinnilla Mallilla voidaan esimerkiksi kuvata laivueen toimintaa sotatilan aikana. Tällöin lentokoneita tuhoutuu lentotehtävien aikana jollakin todennäköisyydellä. Simulointimallilla voidaan tässä tapauksessa arvioida kuinka kauan lentotoimintaa sodanajan tilanteessa voidaan tehokkaasti jatkaa. Esimerkkimallin perusteella voidaan havaita, että diskreetillä tapahtumamallilla pystytään ongelmitta kuvaamaan laivueen toiminta yksinkertaistetulla tasolla. Lisäksi simulointimallin herkkyysanalyysi osoittaa, että tuhoutumistodennäköisyys on mallin herkkä parametri. Herkkyys tulee esiin erityisesti pienillä tuhoutumistodennäköisyyden arvoilla. 3
2.1 Simuloinnin taustaa 2 Simuloinnin perusteita Simuloinnilla viitataan moniin erilaisiin menetelmiin ja sovelluksiin, joita käytetään jonkin todellisen järjestelmän matkimiseksi. Ajatuksena simuloinnin ja yleisesti kaiken mallintamisen pohjalla on se, että todellinen järjestelmä reagoi jollakin tavalla ympäristönsä antamiin syötteisiin. Tämä vuorovaikutus pyritään esittämään jollakin loogisella menetelmällä tai mallilla. Kun mallille annetaan sama syöte kuin todelliselle systeemille, mallin vasteen tulisi vastata todellisen järjestelmän vastetta. Kuvassa 1 on havainnollistettu tätä prosessia. Simuloinnilla pyritäänkin määrittämään todelliselle järjestelmälle tyypillisiä ominaisuuksia analysoimalla mallin antamia vasteita erilaisille syötteille. [7], s. 1. Systeemiin tuleva syöte Mallinnettava systeemi Mitattavissa olevat vasteet Syötedataa Malli todellisesta systeemistä Mallin antamat vasteet Kuva 1 Kaavio simulointimallin käytöstä. Simulointia käytetään samoista syistä kuin systeemien mallintamista yleensä. Tällainen syy voi olla se, että todellista järjestelmää ei voida käyttää testauksessa. Järjestelmän testaus todellisessa ympäristössä saattaa olla esimerkiksi liian vaarallista tai liian kallista ja vaikeaa. Mahdollisesti järjestelmää ei vielä ole edes olemassa, jolloin systeemin toiminnasta saadaan tietoa vain mallintamalla se etukäteen. Simulointimallien käyttöön saatetaan päätyä myös tilanteessa, jossa tarkasteltava systeemi on liian monimutkainen, jotta sen käyttäytymistä kuvaavia piirteitä voitaisiin ratkaista analyyttisesti. Simuloinnilla voidaan monimutkaisiakin järjestelmiä testata systemaattisesti erilaisilla syötteillä ja analysoida järjestelmän käyttäytymistä ja erityispiirteitä. Usein simulointimalleja käytetään myös yksinkertaistetuista malleista ratkaistujen analyyttisten tulosten testaukseen ja varmistamiseen. [7], s. 3. 4
2.2 Simulointimallien luokittelua Simulointimallit voidaan jakaa karkeasti kahteen eri luokkaan, jatkuva-aikaisiin malleihin ja diskreetteihin tapahtumamalleihin. Mallityypit soveltuvat eri tavoin ajassa muuttuvien systeemien kuvaukseen. Lisäksi on olemassa malleja, jotka ovat edellisten perustyyppien yhdistelmiä. 2.2.1 Jatkuva-aikaiset mallit Jatkuva-aikaiset mallit soveltuvat sellaisen järjestelmän kuvaukseen, jossa mallinnettavan systeemin tila muuttuu jatkuvasti ajan funktiona. Toisinsanoen, jos systeemin ajassa muuttuva ominaisuus, eli systeemin tila, voidaan esittää ajasta riippuvan funktion X(t) avulla, tulee funktion X(t) olla jatkuva jollakin välillä t Τ. Usein tällaisten systeemien käyttäytymistä voidaan kuvata differentiaaliyhtälösysteemeillä. [7], s. 8. Kuvassa 2 on annettu esimerkki jatkuva-aikaisen systeemin tilafunktion kehityksestä. X(t) t Kuva 2. Jatkuva-aikaisen systeemin tilafunktion kehitys ajan suhteen. Mallityyppiä voidaan soveltaa esimerkiksi lentokoneen liiketilan mallintamiseen tai vaikkapa läpivirtaussäiliön simulointiin. 2.2.2 Diskreetit tapahtumamallit Diskreetit tapahtumamallit soveltuvat sellaisten systeemien mallintamiseen, joissa järjestelmän tila muuttuu hyppäyksittäin tiettyinä ajanhetkinä. Jos systeemin tila voidaan esittää ajasta riippuvan funktion X(t) avulla, muuttuu funktion X(t) arvo äärellisillä hyppäyksillä tiettyinä ajanhetkinä t 1 < t 2 < jollakin välillä t i Τ. Ominaispiirre diskreetille tapahtumamallille on se, että systeemi voidaan kuvata sarjana tapahtumien ajankohtia ja niitä vastaavina tilojen muutoksina [7], s. 9. Diskreetin tapahtumamallin tilafunktion käyttäytymisestä hyppäysten välillä esiintyy kirjallisuudessa lievää eroavaisuutta. Toisessa näkökannassa systeemin tila voi muuttua jatkuvan funktion tavoin hyppäysten välillä [7], s. 9. Toisessa näkökulmassa funktion arvojen oletetaan olevan vakioita hyppäysten välillä [13], s. 681, [5], s. 19. Jatkossa puhuttaessa diskreetistä tapahtumamallista, tarkoitetaan mallia, jossa tilafunktio on vakio hyppykohtien välillä. Jos systeemin tila muuttuu jatkuvan funktion tavoin hyppäysten välillä, puhutaan yhdistetystä mallista. Kuvassa 3 on esitetty esimerkkikuva diskreetin tapahtumasysteemin tilafunktion kehityksestä. 5
X(t) t Kuva 3. t 1 t 2 t 3 t 4 t 5 Diskreetin tapahtumasysteemin tilafunktion kehitys ajan suhteen. Diskreetillä tapahtumamallilla voidaan kuvata esimerkiksi jonojen käyttäytymistä tai vaikkapa puhelinverkon liikennettä. Näille systeemeille on ominaista, että systeemin muutokset tapahtuvat tiettyinä ajanhetkinä ja muutokset tilassa ovat selkeitä, äärellisiä hyppyjä. 3 Diskreetti tapahtumasimulointi 3.1 Diskreetin tapahtumamallin peruskäsitteitä Diskreetin tapahtumasimuloinnin kenttä on melko laaja ja tällä alueella käytettävien menetelmien kirjo on suurta. Seuraavassa pyritään kuitenkin ottamaan esille diskreettien tapahtumamallien perustermistöä sekä muutamia erilaisia perusmenetelmiä, joilla diskreetti tapahtumamalli voidaan toteuttaa. 3.1.1 Mallin perusterminologiaa Perustermistön merkitys on hivenen vaihtelevaa riippuen siitä, millaista mallityyppiä ollaan tarkastelemassa. Tämän takia seuraavassa pyritään antamaan vain yleiskuva muutamista oleellisimmista peruskäsitteistä. Vaikka suurin osa käsitteistä on selkeitä ja intuitiivisesti ymmärrettäviä, täsmennetään määrittelyitä kuitenkin seuraavassa kohdassa. Koska vakiintuneita suomenkielisiä vastineita ei osalle termeistä ole, on ohessa esitetty myös niiden englanninkieliset vastineet: [5], s. 50. Yksikkö (Entity) Aktiviteetti (Activity) Tapahtuma (Event) Jono (Queue) Attribuutti (Attribute) Tila (State) Yksikkö (Entity) Yksiköllä tarkoitetaan mitä tahansa mallin itsenäistä kokonaisuutta, esimerkiksi palvelujärjestelmässä asiakasta tai palvelupistettä, jossa asiakasta palvellaan. Usein tehdään myös jaottelua pysyvien (permanent) ja väliaikaisten (temporary) yksiköiden välillä. Pysyvät yksiköt säilyvät mallissa koko simulaation ajan, kun taas väliaikaiset yksiköt saapuvat malliin ja poistuvat siitä jossain vaiheessa. Palvelupiste on esimerkki pysyvästä yksiköstä ja asiakas taas on tyypillinen esimerkki väliaikaisesta yksiköstä. 6
Aktiviteetti (Activity) Aktiviteeteillä tarkoitetaan niitä toimenpiteitä, joita yksiköt tekevät, tai joita yksiköille tehdään. Palvelujärjestelmäesimerkissä aktiviteetti olisi asiakkaan palveleminen. Tapahtuma (Event) Tapahtumilla tarkoitetaan niitä ajanhetkiä, jolloin systeemissä tapahtuu muutos. Palveluesimerkissä asiakkaan saapuminen palvelujärjestelmään tai poistuminen järjestelmästä on tyypillinen tapahtuma. Yleisesti aktiviteetit alkavat ja loppuvat tapahtumaan. Jono (Queue) Jonot ovat yksiköiden passiivisia odotustiloja. Jono voidaan myös käsittää omaksi yksikökseen, jossa toiset yksiköt odottavat tietyn järjestyksen mukaisesti jotakin tapahtumaa. Jonon täsmällinen määritelmä riippuu simulointimallin kuvauksessa käytetyn rakenteen valinnasta. Intuitiivinen lähtökohta on kuitenkin varsin riittävä jono käsitteen ymmärtämiseksi. Attribuutti (Attribute) Attribuutilla tarkoitetaan yleisesti yksiköiden ominaisuuksia. Palveluesimerkkiä seuraten asiakas-yksikön attribuutti voi olla esimerkiksi ikä. Mahdollisesti attribuuttina voi olla vaikkapa asiakkaan kokonaisjonotusaika, jota päivitetään simulaation aikana. Tila (State) Tilalla viitataan joko koko mallin tai yksikön sen hetkiseen asemaan tai toimintaan. Palveluesimerkissä asiakkaan tiloina voi olla esimerkiksi jonotus tai palveltavana oleminen. 3.1.2 Mallirakenteiden tyypit Diskreetin tapahtumamallin kuvaamiseen on olemassa muutamia eri perustapoja. Pohjimmiltaan mallit kuvaavat erilaisia jonopalvelurakenteita ja mallien poikkeavuudet liittyvät lähinnä tapaan esittää systeemin toiminnan logiikka. Yleisimmät lähestymistavat voidaan jakaa kolmeen eri luokkaan. [5], s. 103. Aktiviteettipohjaiset mallit Tapahtumapohjaiset mallit Prosessipohjaiset mallit Seuraavassa esitellään lyhyesti eri mallien ominaisuudet ja yhteydet. Koska tapahtuma- ja erityisesti prosessipohjaiset mallit ovat useimmiten käytössä nykyisissä simulointiohjelmistoympäristöissä. [13], s. 706. Tarkastellaan näitä mallinnustapoja hivenen tarkemmin. Aktiviteettipohjaiset mallit Aktiviteetteihin perustuvassa mallissa jokaiselle systeemin yksikölle on määritelty eri tilat, joihin yksikkö voi systeemissä joutua. Eri tilat toimivat joko jonoina tai aktiviteetteina. Tilojen välille on määritelty ehdolliset siirtymät, joita pitkin tila voi vaihtua toiseksi.[5], s. 93. Tarkastellaan esimerkkinä yksinkertaisen kioskin mallinnusta. Mallin osiksi voidaan erotella asiakas ja kioskin myyjä. Asiakkaan tiloina voidaan pitää saapuminen, odotus, palvelu, poistuminen ja ulkomaailma tiloja. Kioskin myyjän tiloiksi voidaan ajatella vaikkapa asiakkaan palvelu, asiakkaan odotus ja kioskin siivoaminen. Jonotilat on merkitty 7
tummennetulla reunaviivalla. Eri yksiköiden aktiviteettidiagrammeista voidaan yhdistämällä muodostaa yksi, koko järjestelmää kuvaava malli. Kuvassa 4 on esitetty graafisesti eri osien tilat ja tilasiirtymät Asiakkaan palvelu Asiakkaan odotus Kioskin siivous Saapuminen Odotus Ulkomaailma Palvelu Poistuminen Myyjän aktiviteettidiagrammi Asiakkaan aktiviteettidiagrammi Kuva 4. Esimerkki aktiviteettipohjaisen simulointimallin osista ja osien tilasiirtymistä. Varsinainen simulointi tapahtuu seuraamalla eri yksiköiden tilasiirtymien ehtojen toteutumista, ja muutamalla yksiköiden tiloja mikäli ehdot toteutuvat. Simuloinnin tuloksena saadaan tietoa siitä, missä tiloissa kukin yksikkö eri ajanjaksoina on. Tapahtuma- ja prosessipohjaiset mallit Tapahtumapohjainen mallirakenne perustuu nimensä mukaisesti eri tapahtumien ja niistä aiheutuvien toimintojen seuraamiseen. Malli muodostetaan etsimällä systeemin tapahtumat ja määrittämällä eri tapahtumien seuraukset mallin eri yksiköille. Varsinainen simulointi on näiden tapahtumien seurantaa ja oikeiden toimintojen käynnistämistä eri tapahtumien kohdalla. [7], s. 17. Käytännössä seuranta tarkoittaa tapahtumalistan ylläpitoa. Tapahtumalistalle merkitään kaikkien mallissa meneillään olevien aktiviteettien kestoajat, jolloin seuraava tapahtuma määräytyy lyhimmän keston omaavaan aktiviteetin perustella. Tapahtumaan liittyvä toiminto päivittää tapahtumalistaa ja muita mallin parametreja, kuten yksiköiden tiloja. Tarkastellaan seuraavaksi prosessipohjaista mallia. Prosessi voidaan käsittää tapahtumasarjojen ja niihin liittyvien toimintojen kokonaisuudeksi. Esimerkiksi palveluprosessi voi koostua yksikön saapumis- ja poistumistapahtumista, joihin liittyy palveluprosessille ominainen toiminto. Tapahtumat voivat olla eri prosesseille samoja, mutta tapahtumaa seuraavat toimenpiteet ovat jokaiselle prosessille ominaisia. Prosessipohjaisessa mallissa järjestelmän käyttäytyminen voidaan kuvataan toisiinsa kytkettyjen prosessien joukkona. [7], s. 20. Prosessipohjainen malli on ehkäpä kaikkien intuitiivisin ja helpoiten rinnastettavissa todellisiin järjestelmiin. Varsin hyvän kuvan prosessipohjaisen mallin rakenteesta saa ajattelemalla palvelujärjestelmää. Mallin yksiköt voidaan jakaa väliaikaisiin yksikköihin, eli asiakkaisiin, sekä pysyviin yksiköihin eli prosesseihin. Mallin voidaan ajatella koostuvan lähteistä, jossa asiakkaat syntyvät, palvelupisteistä, joissa palveluaktiviteetti toteutetaan, sekä jonoista jossa asiakkaat voivat tarpeen vaatiessa odottaa palvelupisteen vapautumista. Asiakkaat häviävät mallista poistumisprosessin kautta. Malli kuvaa siis asiakkaiden kulkua 8
toisiinsa linkitettyjen palvelupiste- ja jonojärjestelmien läpi. Kuvassa 5 on havainnollistettu tätä tilannetta. [13], s. 706., [5], s. 106. Saapumisprosessi Palveluprosessi Jonotusprosessi Poistumisprosessi Kuva 5. Prosessipohjaisen mallin perusrakenne. Muut mallityypit Vaikka edellä kuvatut menetelmätyypit ovat varsin usein käytössä simulointiohjelmistoissa, on olemassa myös muita lähestymistapoja diskreettien tapahtumaprosessien mallintamiseen. Tällaisia ovat esimerkiksi stokastisiin Petri -verkkoihin pohjautuvat mallit [8], sekä niin sanotut GSMP (Generalized Semi-Markov Process) mallit. [10] 3.2 Simulointimallin analysointi Tarkastellaan seuraavassa simulointimallien käyttöön liittyviä perusajatuksia. Tarkoituksena on antaa näkemys siitä, kuinka diskreetti tapahtumasimulointimalli käytännössä toimii. Aiheen käsittely on tehty jossain määrin prosessipohjaisen mallinnuksen näkökulmasta, mutta analysoinnin perusideat eivät luonnollisestikaan muutu muiden mallityyppien kohdalla. 3.2.1 Simulointiprosessin perusidea Diskreetin tapahtumamallin analysointi on perusidealtaan suoraviivainen. Simulointiprosessin voidaan ajatella noudattavan karkeasti ottaen seuraavanlaista toimintaketjua. Diskreetin tapahtumamallin rakentaminen Aktiviteettien kestojen ja muiden tunnettujen tilastollisten suureiden syöttäminen malliin Simulointiajo, josta saadaan tietoa yksiköiden tilojen muutoksista ajan suhteen Useiden simulointiajojen tulosten kerääminen ja niiden tilastollinen analysointi Kun mallinnettavan systeemin toiminta on esitetty jollakin mallityypillä, annetaan mallille syötteenä tunnettuja tilastollisia tunnusarvoja aktiviteettien kestoista ja lisäksi joidenkin tapahtumien väliaikojen jakaumista. Tällaisia ovat tyypillisesti palvelujen kestoajan jakauma ja asiakkaiden saapumisvälin jakauma. Syötteinä annettavia tilastollisia parametreja tunnetaan usein jo ennalta mallin eri osille. Jos parametrit eivät ole tiedossa, voidaan ne myös estimoida suoraan todellisesta järjestelmästä 9
tai jostain toisesta analogisesta systeemistä. Tietyin rajoituksin parametrien valinnassa voidaan tukeutua myös ad hoc-päättelyyn. Kun malli on rakennettu ja kaikki tuntemattomat syöteparametrit annettu, tehdään simulointiajo. Simulointiajo perustuu Monte Carlo-menetelmän soveltamiseen. Käytännössä tämä tarkoittaa sitä, että mallin toimintaa lasketaan läpi yksityiskohtaisesti arpomalla annetuista tilastollisista jakaumista eri aktiviteettien kestoja sekä tapahtumien väliaikoja. Yksittäisen simulaatioajon tuloksena saadaan tietoa eri yksiköiden tilojen muutoksista ajan suhteen. Yleensä mielenkiinnon kohteena ovat jonotusajat, jonojen pituudet tai muut vastaavat järjestelmän toimintaa ja tehokkuutta kuvaavat indikaattorit. Kerättäessä useiden simulaatioajojen tulokset yhteen, voidaan niiden perusteella tehdä tilastollista analyysia simulointimallin antamista tuloksista. Tyypillisesti tarkasteltavia tilastollisia suureita ovat tulosdatan keskiarvot ja varianssit, sekä mahdollisesti tulosdatan jakauman tyyppi. Kappaleessa 3.2.2 käsitellään tarkemmin simulointimallin analysoinnissa sovellettavia tilastollisen analyysin erityispiirteitä. Kuvassa 6 on esitetty simulointiprosesin kulku. Edellä esitetty prosessi ei luonnollisestikaan kuvaa kokonaisen simulointiprojektin läpivientiä. Kokonaisen projektin läpiviennissä prosessi on huomattavasti laajempi. Simulointiprojekti lähtee liikkeelle ongelman formuloinnista, mallinnettavan systeemin ja simulointimallin määrittelystä ja etenee siitä edelleen simulointimallin rakentamiseen, sen verifioimiseen ja validointiin. Tämän jälkeen mallia voidaan käyttään systeemin piirteiden analysointiin ja tulosten keräämiseen. [9] Tilastollista syötedataa Simulointiajo Simulointiajon tulokset Tilastollista ulostulodataa Kuva 6. Kaavio simulointimallin käytöstä. 3.2.2 Simulointimallin tilastollisen analysoinnin erityispiirteitä Simulointiajojen tuloksena saatu data ei sinällään ole käyttökelpoista. Mielenkiinnon kohteina ovat pääsääntöisesti mitattujen suureiden tilastolliset ominaisuudet, kuten keskiarvot ja varianssit sekä niiden tilastollista merkittävyyttä kuvaavat luottamusvälit. Näiden tilastollisten arvojen laskeminen tapahtuu samoilla periaatteilla kuin minkä tahansa 10
satunnaismuuttujan tapauksessa. Näitä tilastollisia estimaatteja kutsutaan jatkossa tehokkuusmittareiksi. Tarkastellaan seuraavassa muutamia asioita, jotka tulee huomioida simulointimallista saadun datan keräämisessä. Alkutransientti Jotta tilastollisten parametrien määrittäminen mallista olisi järkevää, joudutaan olettamaan, että mitattujen suureiden taustalla olevat jakaumat ovat stationaarisia. Oletus on yleensä pätevä, mikäli taustalla oleva mallirakenne ei muutu simuloinnin aikana. Oletus stationaarisesta mallirakenteesta rikkoutuu kuitenkin simuloinnin käynnistymisessä syntyvän alkutransientin takia. Alkutransientti johtuu siitä, että simulaatiomalli käynnistyy tyhjänä, jolloin järjestelmän ominaisuudet muuttuvat simuloinnin alkuvaiheessa. Kuvassa 7 on esitetty tyypillinen alkutransientin vaikutus simulointiajasta riippuvaan tehokkuusmittarin estimaattiin µ(t). Alkutransientti tulee huomioida lopullisissa tehokkuusmittarin estimaateissa siten, että käynnistysvaiheen data jätetään pois estimaatin laskennassa. Tällöin estimaatti lasketaan ainoastaan siltä ajanjaksolta, kun malli toimii ns. steady state -tilassa. Alkutransientin ennustamiseksi ei ole olemassa mitään keinoa, vaan sen pituus täytyy määrittää kokeilemalla erilaisten mallien kohdalla. [13], s. 699. µ(t) Kuva 7. Simulointiaika T Alkutransientin vaikutus tehokkuusmittarin estimaattiin. Keskeytyvä simulaatio Keskeytyvällä simulaatiolla tarkoitetaan tilannetta, jossa mallinnettavan systeemin luonteeseen kuuluu olennaisesti sen toiminnan keskeytyminen. Pankin toiminta on tyypillisesti kerrallaan vain 8 tunnin mittainen, jolloin sen simulointi olisi tyypillinen esimerkki keskeytyvästä simuloinnista. Keskeytyvässä simulaatiossa alkutransientti on oleellinen osa järjestelmän toimintaa, joten sitä ei voida sivuuttaa tarkasteluissa. Ongelmana keskeytyvässä simulaatiossa on rajoitettu havaintojen määrä. [13], s. 700. Havaintojen keräysmenetelmiä Keskeytyvän simulaation tapauksessa ajaudutaan tilanteeseen, jossa yhden simulaatioajon pohjalta saadaan harvoin riittävästi havaintoja, jotta tilastollisesti luotettavia estimaatteja voidaan laskea. Keskeytymättömän simulaation tapauksessa ongelmallisia tekijöitä ovat taas pääasiallisesti alkutransientin vaikutukset ja satunnaislukugeneraattoreiden toistuvuudesta aiheutuvat virheet. Tilastolliseen analysointiin käyttökelpoisen havaintoaineiston tuottamiseksi on olemassa muutamia erilaisia lähestymistapoja. Tarkastellaan seuraavassa kahta niistä. Batch-Means menetelmässsä jaetaan yhden pitkän simulaatioajon havaintoaineisto useampaan vakiopituiseen osaan (Batch) ja lasketaan tehokkuusmittarien arvot jokaisessa osassa erikseen. Lopullinen tehokkuusmittarin arvo saadaan keskiarvona näistä havainnoista Tässä 11
menetelmässä alkutransientin vaikutus ilmenee vain kertaalleen, koska simulointia ei aloiteta jokaisen osan välillä uudestaan. Menetelmän ongelmat liittyvät pääasiallisesti siihen, että peräkkäiset osiot korreloivat jonkin verran keskenään.. Ongelmia sattaa aiheuttaa myös se, että simulointiohjelmistoissa käytetyt satunnaislukugeneraattorit toistavat itseään mikäli niitä ei alusteta kesken simulaatioajon uudestaan. Menetelmä soveltuu käytännössä vain keskeytymättömiin simulaatioihin. [13], s. 701. Toinen tapa on riippumattomien toistojen menetelmä (independent replications). Tässä menetelmässä simulointiajo toistetetaan useita kertoja ja jokaisesta ajosta määritetään tehokkuusmittarin arvo. Lopullinen tehokkuusmittarin arvo lasketaan näiden arvojen keskiarvosta. Menetelmää käytetään datan keräämiseen erityisesti keskeytyvän simulaation tapauksessa. Mentelmän etuja on satunnaislukugeneraattoreiden toistuvuuden aiheuttamien virheiden pieneneminen. Ongelmia aiheuttaa toisaalta transienttiefekti, joka ilmenenee jokaisessa simulointiajossa. [13], s. 702. 4 Simulointiohjelmistot 4.1 Simulointiohjelmistojen jaottelua ja ominaispiirteitä Diskreetin tapahtumasimuloinnin toteuttamiseen on nykyisin saatavilla kymmeniä simulointiympäristöjä. Nämä simulointiympäristöt voidaan jakaa karkeasti kolmeen luokkaan: Ohjelmointikielet ja niille tehdyt valmiit simulointikirjastot Ohjelmointikielten kaltaiset simulointikielet Graafisella käyttöliittymällä varustetut simulointiympäristöt Tarkastellaan seuraavassa eri simulointiympäristöjen ominaispiirteitä Ohjelmointikielet ja simulointikirjastot Kaikkien raskain, mutta samalla joustavain tapa toteuttaa simulointimalli on rakentaa simulointiympäristö alusta alkaen jollakin ohjelmointikielellä. Hivenen helpompi tapa on hyödyntää valmiita simulointikirjastoja. Ne helpottavat simulointimallin perustoimintojen rakentamista, mutta antavat samalla rajoittamattomat mahdollisuudet diskreettien tapahtumamallien rakentamiseksi. Ongelmana kirjastojen käytössä on kuitenkin se, että mallien rakentaminen ja testaaminen on varsin työlästä. Simulointikielet Simulointikielet ovat tavallisten ohjelmointikielten kaltaisia ohjelmointiympäristöjä. Simulointikielten käskykanta ja peruskirjastot on kuitenkin rakennettu vastaamaan juuri simuloinnin erityistarpeita. Simulointikieliä käytetäänkin usein simulointimallien luomisessa, koska ne tarjoavat simulointikirjastoja helpomman tavan mallien rakentamiseen ja simuloinnin suorittamiseen. Simulointikielistä löytyy vaihtoehtoja sekä tapahtuma- että prosessipohjaiseen mallintamiseen. Huolimatta simulointispesifisestä lähestymistavasta, saattaa suurten mallien luominen ja jatkuva muokkaaminen olla työlästä. Graafiset simulointiympäristöt Graafisissa simulointiympäristöissä malli rakentannetaan ja sitä käytetään graafisen käyttöliittymän kautta. Pyrkimyksenä tässä lähestymistavassa on minimoida aikaa vievän 12
ohjelmointityön määrää simulointimallin rakennusvaiheessa. Useissa graafisissa simulointiympäristöissä simulointimallit rakennetaan pääsääntöisesti prosessipohjaisen mallin mukaisesti. Mallinnuksessa käytettyjen prosessiverkkojen käsittely on graafisen käyttöliittymän käyttö havainnollista ja helppoa. Myöskään suurten mallien rakentaminen, testaus ja modifiointi ei tästä syystä tuota ongelmia. Suurin osa graafisista ohjelmistoista tarjoaa valmiiksi monia perusprosesseja, joita voidaan hyödyntää omien mallien rakentamisessa. Tämä nopeuttaa mallintamista huomattavasti, mutta voi toisaalta johtaa ongelmiin mikäli simulointiympäristössä ei ole mahdollisuutta omien prosessien tarkkaan määrittämiseen. Osa graafisista ohjelmistoista on rakennettu käyttöliittymäksi jonkin simulointikielen päälle. Tällöin mallin osien toteuttaminen pohjalla olevalla simulointikielellä on mahdollista, jolloin rajoitteita ei helposti pääse syntymään monimutkaisten järjestelmien mallinnuksessakaan. 4.2 Simulointiohjelmistojen tarjonta Tarkastellaan lyhyesti markkinoilla olevia simulointiohjelmistoja ja esitellään esimerkinomaisesti muutamia tarkemmin. Esimerkkien tarkoituksena on valaista ohjelmistoissa esiintyviä poikkeavuuksia, eikä niinkään antaa kattavaa kuvaa ohjelmasta. 4.2.1 Yleistä saatavilla olevista ohjelmistoista Markkinoilla olevien diskreettiin tapahtumasimulointiin suunnattujen ohjelmistojen kirjo on laaja. Nykyisin ohjelmistot vaihtelevat muutamien satojen markkojen hintaisista simulointikielistä aina satojen tuhansien markkojen arvoisiin simulointijärjestelmiin. Myös muutamia vapaasti levitettäviä simulointiohjelmistoja on saatavilla. Ohjelmistojen tarjoamien ominaisuuksien vaihtelu on luonnollisesti myös melko suurta. Erityisesti graafisten simulointiohjelmistojen tapauksessa on havaittavissa eri ohjelmien erikoistumista eri käyttäjäkuntien tarpeita vastaavaksi. Tämä ilmenee esimerkiksi hyvinkin spesifisten prosessitoimintojen ja mallirakenteiden sisällyttämisessä simulointiohjelmaan. Esimerkkinä voidaan ajatella vaikkapa valmiutta erilaisten liukuhihnakuljettimen mallintamiseen tai kolmiulotteisen animaation tuottamiseen mallin toiminnasta. Hyötynä tällaisesta erikoistumisesta on luonnollisesti nopeutuvat simulaatiomallin rakennusajat. Toisaalta saatavilla on myös ohjelmistoja, jotka pyrkivät olemaan mahdollisimman kattavia ja joustavia simulointiympäristöjä. Ohjelmistoista on olemassa vertailuja ja testejä eri systeemija operaatiotutkimusta käsittelevissä julkaisuissa. Varsin kattavan ja hyvän yleiskuvan tarjolla olevista ohjelmistoista saa myös internetin kautta [1]. 4.2.2 GPSS GPSS (General Purpose Simulation System) on tyypillinen ja yksi vanhimmista simulaatiokielistä ja se on nykyisin saatavilla useille eri käyttöjärjestelmille. Simulointikielen hinta vaihtelee versiosta riippuen välillä $1000-$5000. GPSS rakentuu prosessiorientoidulle mallinnustavalle, jossa käyttäjä voi ohjelmointikielen tavoin koostaa mallin likimain 100 erilaiseen alkeislohkoon perustuen. Lisäksi jotkut GPSS versiot tarjoavat apumenetelmiä syöte- ulostulodatan tilastolliseen analysointiin. Vaikka 13
varsinainen mallin rakentaminen tapahtuukin ohjelmoimalla, on uusimmissa GPSS versioissa kuitenkin mahdollista saada graafisia esityksiä simulaatioajosta ja sen tuloksista. [2], [3]. 4.2.3 Arena Arena on tyypillinen graafiseen käyttöliittymään perustuva simulointiohjelmisto, joka on tällä hetkellä saatavilla vain Windows 95 ja NT käyttöjärjestelmään. Ohjelmiston halvimman kaupallisen version hinta on noin $1000. Ohjelmasta on saatavilla myös huomattavasti edullisempi akateeminen versio, joka on käytössä muun muassa TKK:n Systeemianalyysin laboratoriossa. Arenassa malli rakennetaan näytöllä drag-and-drop tyylisesti käyttämällä ohjelmistossa valmiina olevia toimintablokkeja. Toimintablokeissa on useita eri hierarkian tasoja. Korkeimman hierarkian osat edustavat pitkälle kehitettyjä jono-palvelupiste yhdistelmiä, joiden avulla perusmallinnus on helppoa. Jokaiseen lohkoon voidaan edelleen määrätä blokin kuvaaman prosessin parametrit. Käytetty lohkosysteemi on hierarkkinen. Lohkot rakentuvat edelleen useista yksinkertaisimmista peruslohkoista. Pohjimmaisella tasolla sijaitsee SIMAN simulointikieli, jolla voidaan rakentaa myös omia mallin osia. Teoriassa tämä antaa mahdollisuudet hyvinkin erikoistuneiden mallien rakentamiseen. Mallinnusominaisuuksien lisäksi Arenassa on kiinnitetty huomiota simulaatiomallin animointiin ja esityskelpoisen grafiikan tuottamiseen. Muita erityispiirteitä Arenassa on muun muassa sisäänrakennetut ohjelmat syöte- ja ulostulodatan tilastollista käsittelyä varten. Vaikka Arena pyrkii olemaan yleissimulointiympäristö, on sille saatavilla lisäpaketteja, jotka helpottavat ja nopeuttavat tiettyjen erityiskohteiden mallintamista. [12]. 4.2.4 Extend Extend on Arenan kaltainen simulointiympäristö niin toiminnaltaan kuin hinnaltaan. Extendillä voidaan mallintaa myös sekamalleja, joissa on yhdistettynä jatkuvia ja diskreettejä prosesseja. Extend hyödyntää myöskin hierarkkista lohkorakennetta. Alimmalla tasolla voidaan kirjoittaa suoraan omia blokkeja Extendin omalla ModL-simulointikielellä. Extendissä ei ole yhtä hyviä tilastollisia analysointiominaisuuksia kuin Arenassa. Sen sijaan ohjelmistossa on mahdollisuus simulaatiomallin automaattiseen herkkyysanalyysiin. Kuten Arena, myös Extend tarjoaa lisäpaketteja erityskohteiden mallintamiseen. [6]. 4.2.5 Simul8 Simul8 on tarkoitettu käytettäväksi pelkästään graafisen käyttöliittymän kautta. Ohjelman käytön opetteleminen on melko nopeaa, joten uuden käyttäjän on helppo rakentaa malleja Simul8-ohjelmalla. Erikoisempien rakenteiden mallintaminen voi sen sijaan tuottaa ongelmia, sillä ohjelmasta ei löydy rajapintaa millekään simulointikielelle. Ohjelman $500 hinta on varsin halpa, joten sitä voi pitää hyvänä peruspakettina diskreettiin tapahtumasimulaatioon tutustuttaessa ja yksinkertaisten tapahtumamallien analysoimisessa. [11]. 14
4.3 Simulointiohjelmiston valintaan liittyviä tekijöitä Simulointiohjelmistojen suuren tarjonnan ja niiden erilaisten piirteiden takia tulee ohjelmiston valintaan kiinnittää erityistä huomiota. Seuraavassa otetaan esiin muutamia seikkoja, joihin kannattaa kiinnittää huomiota simulaatioympäristön valinnassa. [4]. Ohjelmiston mallinnuskyky ja tehokkuus Ohjelmiston syöte- ja ulostulotietojen käsittely Ohjelmiston turhat ominaisuudet Ohjelmiston käyttöympäristö Ohjelmiston hinta Ohjelmiston mallinnuskyky ja tehokkuus Jotta järjestelmää voidaan tarkasti analysoida, täytyy simulointiympäristön sisältää menetelmät täsmällisen simulointimallin rakentamiseksi. Erityisesti järjestelmän pienet yksityiskohdat saattavat johtaa mallinnusongelmiin ja tilanteisiin joissa ohjelmisto osoittautuu käyttökelvottomaksi. Mikäli mallinnettavan järjestelmän ominaisuudet on tarkasti tunnettu, on syytä etukäteen selvittää onko erikoisimpien rakenteiden mallintaminen ohjelmistolla mahdollista. Mikäli järjestelmän rakennetta ei jostain syystä tunneta tarkasti on syytä etsiä mahdollisimman joustava ohjelmisto, jonka voi mukauttaa monimutkaisimpiinkin toimintalogiikoihin. Erityisesti suurien mallien simuloinnissa on tilanteita, joissa simulaatioajon suorittaminen voi vaatia tuhansien samanaikaisten toimintojen seuraamista. Mikäli ohjelmisto on huonosti toteutettu, saattavat simulointiajot kestää kauan, jolloin mallin analysoiminen voi muodostua tuskastuttavan hitaaksi. Tämän takia ohjelmiston tehokkuus voi olla oleellinen tekijä ohjelmiston valinnassa. Ohjelmiston syöte- ja ulostulotietojen käsittely Mallista saatavan tulostedatan käsittelyyn liittyvät ohjelmiston osat ovat tärkeitä. Jos mallista ei saada ulos haluttuja tietoja, on ohjelmisto hyödytön. Huomioitavia asioita ovat esimerkiksi ohjelmiston tarjoamat tehokkuusmittarit ja lisäksi mallista saatavan raakadatan tallettamiseen ja käsittelyyn liittyvät ominaisuudet. Myös tässä tapauksessa ohjelmiston tarjoama mahdollisuus räätälöidä tulostetietojen tallennusta on selkeä etu. Syötetietojen käsittelyn osalta ongelma ei ole välttämättä niin oleellinen kuin tulostetietojen käsittelyn kohdalla. Syötedatan käsittelyyn liittyvät seikat nousevat oleelliseksi tekijäksi, mikäli mallin parametreina on paljon raakadataa. Ohjelmiston turhat ominaisuudet Monissa ohjelmissa saattaa olla sellaisia ominaisuuksia, joita järjestelmän mallinnuksessa ja analysoinnissa ei tarvita. Esimerkiksi mahdollisuus järjestelmän kolmiulotteisten ominaisuuksien mallinukseen voi monissa tapauksissa olla ominaisuus, joka nostaa ohjelmiston hintaa huomattavasti, mutta jolla ei monissa tapauksissa ole merkitystä mallinnuksen onnistumisessa. Toisena esimerkkinä voidaan pitää vaikkapa joidenkin ohjelmistojen tarjoamia business-tyylisiä raportointiominaisuuksia, jotka tarjoavat todellista hyötyä vain osalle ohjelmiston käyttäjistä. 15
Ohjelmiston käyttöympäristö Käyttöympäristönä ajatellaan kaikkia niitä ohjelmiston osasia, joihin käyttäjä törmää ohjelmistoa hyödyntäessään. Tällaisia ovat esimerkiksi ohjelman käyttöliittymä ja dokumentaatiot. Ohjelman helppokäyttöisyys ei ole sinänsä ole tärkeä kriteeri ohjelmiston valinnassa vaan oleellisempaa on ohjelmiston kyky mallintaa haluttu järjestelmä. Sen sijaan dokumentaatioiden kattavuus, selkeys ja helppo saatavuus (online) sen sijaan painottuu ohjelmistoa käytettäessä. Muita huomioitavia seikkoja käyttöympäristössä ovat mallien demonstroimiseen liittyvät ohjelmiston ominaisuudet. Erillinen esitysohjelma mallin demonstrointiin on useimmissa tapauksissa hyvä olla saatavilla, mikäli varsinaisen simulointiohjelmiston siirto esityksessä käytettävään koneeseen on vaivalloista. Ohjelmiston hinta Hintaa oleellisempi tekijä on ohjelman mallinnusominaisuuksien tehokkuus ja erityisesti mallinnusominaisuuksien soveltuvuus mallinnettavaan järjestelmään. Mikäli järjestelmän mallinnuksen onnistuminen huokean hintaisella simulointiohjelmalla on epävarmaa ja tarjolla on mallinnukseen kykenevä kalliimpi ohjelmisto, ei investointi halvempaan vaihtoehtoon ole useimmiten järkevää. Mikäli ohjelmisto ei sovellu järjestelmän simulointiin, on se käyttökelvoton ja ajaudutaan joka tapauksessa kalliimman vaihtoehdon hankintaan. Toisaalta myöskään turhista ominaisuuksista ole järkevää maksaa, eli kallis hinta ei tee ohjelmasta yleisesti parempaa vaihtoehtoa. 5 Esimerkki laivueen toiminnan simuloinnista 5.1 Laivueen toiminnan perusteet Simulointimallin pohjana käytetään seuraavassa kuvattuja oletuksia laivueen toiminnasta. Oletetaan, että toiminta tapahtuu vain yhdeltä kentältä ja käytössä on kymmenen kappaletta toimintavalmiita lentokoneita ja tarvittava huoltokalusto koneiden toimintavalmiuden ylläpitämiseksi. Lentotoiminnan voidaan ajatella toimivan seuraavassa kuvatulla tavalla. Malli on monilta osin yksinkertaistettu todellisesta lentotoiminnasta. Odotusvaihe Lentokoneet odottavat kentällä hälytystä täydessä toimintavalmiudessa, eli lentokoneet on huollettu, tankkattu ja aseistettu. Kaikkien koneiden oletetaan olevan samalla tavoin aseistettuja hälytyksestä riippumatta. Hälytykset ja niihin vastaaminen Hälytysten oletetaan syntyvän satunnaisesti, jolloin hälytysten väliaika on eksponenttijakautunut. Oletuksena on, että hälytyksiä tulee keskimäärin 30 min välein. Hälytykseen pyritään vastataamaan kahdella koneella. Mikäli kentällä on vain yksi valmiudessa oleva lentokone, lähetetään se yksinään lentoon. Jos valmiudessa olevia koneita ei ole lainkaan, hälytys sivuutetaan. Lentokoneen siirtymiseen lentokentältä odotuksesta lentoon oletetaan kuluvan kaksi minuuttia. Toiminta lennolla Koneet ovat lentotehtävässä normaalijakautuneen ajan (keskiarvo 45 min, keskihajonta 15 min). Hälytykseen lähetetyn lentokoneparin koneet palaavat takaisin kentälle toisistaan 16
riippumatta. Lennon aikana koneet voivat tuhoutua vastapuolen toimien takia. Tuhoutumistodennäköisyys oletetaan vakioksi kaikilla lennoilla, joten tuhoutuneiden koneiden lukumäärä riippuu vain tehtyjen lentojen lukumäärästä. Kone voi myös vaurioitua lennolla. Vaurioitumiseksi käsitetään kaikki tavallisuudesta poikkeavat viat. Oletuksena on, että vaurioitumistodennäköisuus on vakio kaikilla lennoilla, joten vauriotapausten lukumäärä on myöskin riippuvainen vain tehtyjen lentojen määrästä. Lennolta palaaminen ja huoltotoimenpiteet Jos kone selviää lennolla tuhoutumatta, se palaa takaisin kentälle. Laskeutumistoimenpiteiden oletetaan kestävän kaksi minuuttia. Laskun jälkeen koneelle tehdään heti paluuhuolto. Kentällä on erillisiä paluuhuoltopaikkoja puolelle koneista. Jos kaikki huoltopaikat ovat varattuja, kone jää odottamaan paikan vapautumista. Paluuhuollossa kone tarkistetaan, tankataan ja aseistetaan. Paluuhuoltoajan oletetaan olevan normaalijakutunut (keskiarvo 15 min, keskihajonta 2 min). Paluuhuollon jälkeen kone siirtyy pois korjauspaikalta odottamaan seuraavaa hälytystä. Mikäli kone on vaurioitunut lennolla se ohjataan korjauspaikalle. Korjauspaikkoja on yksi kappale ja jos se on varattu, kone jää jonottamaan korjauspaikan vapautumista. Korjausajan oletetaan olevan kolmiojakautunut välille 400-800 min, keskiarvon ollessa 600 min. Korjauksen jälkeen kone siirtyy paluuhuoltoon. Huollossa olevaa tai huoltoa jonottavaa konetta ei voi lähettää lennolle. Lentotoiminnan vaiheet kootusti: Lentokoneet odottavat kentällä toimintaohjeita. Hälytyksen tullessa siihen vastataan lähettämällä kaksi konetta, mikäli resurssit antavat myöten. Varsinaista säännöllistä lentotoimintaa ei oleteta olevan. Koneet viipyvät lennolla keskimäärin 45 min ajan ja ne palaavat lennolta toisistaan riippumatta. Jos konetta ei tuhota lennolla, se palaa takaisin kentälle huoltoon. Huoltopaikkoja on kahdenlaisia, korjaushuoltopaikka sekä paluuhuoltopaikkoja. Jos kone on vaurioitunut lennolla, se siirtyy korjaushuoltopaikalle. Jos korjaushuoltopaikka on varattu, kone jää odottamaan omaa vuoroaan huoltopaikan vapautumiseen asti. Korjausaika on kolmiojakauman mukainen välillä 400-800 min, keskimäärin 600 min. Kun korjaus on suoritettu, kone siirtyy paluuhuoltopaikalle. Paluuhuoltopaikkoja on puolelle koneista. Huolletut, toimintaohjeita odottavat koneet eivät varaa huoltopaikkaa. Jos vapaita huoltopaikkoja ei ole, kone jonottaa huoltoa. Huolto kestää keskimäärin 15 min. Huoltojen aikana tai niitä jonotettaessa konetta ei voi lähettää uudelle lennolle. Huollon jälkeen kone jää kentälle odottamaan uusia toimintaohjeita. Koneet voivat tuhoutua vain lennon aikana ja kentän oletetaan olevan kaiken aikaa toimintakykyinen. Lentotoiminta on jatkuvaa Muita lentotoimintaan liittyviä rajoituksia, ohjeita tai huoltotoimenpiteitä ei huomioida. Toimenpiteisiin kuluvat ajat ja aikavälien jakaumat, sekä eri tapahtumiin liittyvät todennäköisyydet on asetettu vastaamaan suuruusluokaltaan sellaisia arvoja, joita todellisuudessa mahdollisesti esiintyisi. Lisäksi on oletettu, että hälytysten intensiteetti ei heikkene ajan kuluessa. 17
5.2 Laivueen simulointimallin toteutus Laivueen toiminnan simulointimalli on toteutettu Arena ohjelmiston akateemisella versiolla. Ohjelmaan päädyttiin koska se oli saatavilla TKK:n Systeemianalyysin laboratoriosta ja ohjelman Simulointimalli toteuttaa kappaleessa 5.1 esitetyn kuvauksen laivueen toiminnasta. 5.2.1 Simulointimallin yleinen rakenne Malli koostuu kahdesta erillisestä simulointiyksiköiden virtausrakenteesta. Toisessa rakenteessa simulointiyksiköt kuvaavat lentokoneita, jolloin malli kuvaa lentokoneiden kulkua eri tilojen välillä. Toisessa rakenteessa simulointiyksiköt vastaavat lentotehtäviä, jolloin malli kuvaa lentotehtävien muodostumista. Mallit on sidottu yhteen siten, että lentotehtävien muodostumisen generoiva malli ilmoittaa lentokoneiden kulkua simuloivalle mallille, milloin koneiden tulee siirtyä valmiustilasta lentotehtävään. Kuvassa 8 tätä rakennetta on havainnollistettu tarkemmin. Lentokoneiden kulkua simuloiva malli koostuu huollon simulointi, odotuksen simulointi, lennon simulointi sekä tuhoutuminenlohkoista. Lentotehtävien muodostumista simuloidaan hälytysten generointi -osassa. Kuva 8. Laivueen simulointimallin rakenne. 5.2.2 Simulointimallin rakenteen yksityiskohtainen tarkastelu Tarkastellaan lähemmin hälytysten generointi -osaa. Arrive -lohko tuottaa simulointiyksiköitä siten, että peräkkäisten yksiköiden väliaika noudattaa haluttua satunnaisjakaumaa. Tämä vastaa lentotehtävien muodostumista. Oletetaan lentotehtävien muodostuminen luonteeltaan satunnaiseksi ja riippumattomaksi aikaisemmista lentotehtävistä. Tällöin tehtävien väliajan voidaan olettaa noudattavan 18
eksponentiaalijakaumaa jollakin annetulla keskiarvolla. Seuraavassa vaiheessa tutkitaan voidaanko syntyneeseen lentotehtävään vastata. Tämä tarkistaminen toteutetaan Chooselohkolla. Jos lentokentällä ei ole valmiudessa olevia koneita, eli odotuksen simulointi -osassa oleva odotusjono on tyhjä, päivitetään Count -lohkon avulla EIVASTETTA laskuria ja lentotehtävä sivuutetaan. Jos kentällä sen sijaan on valmiudessa olevia koneita, päivitetään VASTE laskuria ja välitetään Signal -lohkon kautta tieto lentotehtävästä lentokoneiden kulkua kontrolloivalle simulointirakenteelle. Edellä kuvattuja laskureita voidaan hyödyntää myöhemmin arvioitaessa lentotoiminnan tehokkuutta. Tämän jälkeen lentotehtäväyksikkö poistuu hälytysten generointi- osasta Depart -lohkossa. Lentokoneiden kulkua simuloiva rakenne on hivenen monimutkaisempi. Jokaisen simulointiajon alussa järjestelmä alustetaan halutulla määrällä simulointiyksiköitä, jotka vastaavat nyt lentokoneita. Simuloinnin alustus -osassa sijaitsevasta Arrive -lohkosta virtaa tietty määrä lentokoneita odotuksen simulointi -osassa sijaitsevaan odotusjono -lohkoon. Kun jono on täytetty, koneita päästetään virtaamaan seuraaviin osiin vasta kun Wait -lohko saa viestin lentotehtävästä hälytysten generointi -osasta. Tämän jälkeen Wait -lohko vapautta jonosta maksimissaan kaksi konetta ja siirtää ne lennon simulointi -osaan. Siirto aiheuttaa kahden minuutin viiveen, jonka ajatellaan johtuvan koneen lentoonlähdön aiheuttamista toimenpiteistä. Tämän jälkeen päivitetään LAHTEVAT laskuria. Lentokoneen päästyä Process -lohkoon sen eteneminen jatkuu vasta tietyn viiveen jälkeen. Tämä viive käsitetään lentoajaksi ja sen arvo otetaan tietyn keskiarvon ja varianssin omaavasta normaalijakaumasta. Jokaiselle koneelle arvotaan tässä lohkossa oma viive, eli esimerkiksi kaksi pareittain lähtevää konetta ei välttämättä palaa samanaikaisesti lohkosta pois. Process -lohkon jälkeen lisätään PALAAVAT laskuria. Ennen poistumista lennon simulointi- osasta määritetään Inspect -lohkossa tuhoutuiko kone lennon aikana. Jokaisella lennolla oletetaan olevan vakiotodennäköisyys lentokoneen tuhoutumiselle. Todennäköisyys ei tässä mallissa riipu esimerkiksi lennon kestosta, lennolla olleiden koneiden lukumäärästä tai vastaavista tekijöistä. Jos lentokone tuhoutuu, lentokone ajautuu Depart -lohkoon ja se poistuu simulointimallista. Jos lentokone selviää lennolta, se siirtyy huollon simulointi -osaan. Siirtymästä aiheutuu kahden minuutin viive, jonka oletetaan syntyvän koneen laskeutumistoimenpiteistä. Huollon simulointi -osassa määritetään aluksi koneen huoltotarve koneen kunto -lohkossa. Tällä voidaan simuloida tilanne, jossa kone on vaurioitunut lennon aikana ja se vaatii pidempiaikaista korjausta. Korjausta vaativat koneet ohjataan korjaus -lohkoon, jossa korjaustoimenpiteen oletetaan kestävän tietyn aikavälin. Jos korjauspiste on varattu, kone jää odottaman paikan vapautumista. Korjaustoimenpiteen jälkeen kone ohjataan edelleen paluuhuoltoon. Ehjänä lennolta selvinneet koneet ohjataan suoraan paluuhuoltoon, joka simulaatiomallissa on esitetty paluuhuolto -lohkona. Paluuhuollon ajatellaan koostuvan viidestä erillisestä huoltopisteestä. Jos jokainen huoltopiste on varattu, lentokone odottaa omaa vuoroaan. Huoltotoimenpiteen ajatellaan kestävän normaalijakautuneen ajan tietyllä keskiarvolla ja varianssilla. Huollon jälkeen lentokone siirtyy viiveettömästi takaisin odotuksen simulointi -osioon odottamaan seuraavaa lentotehtävää. 5.2.3 Simuloinnin lopetusehto ja mallin ulostuloparametrit Simulointiajo jatkuu kunnes 90% lentokoneista on joko tuhottu tai rikkoutuneena (odottamassa korjausta). Korjauksessa oleva kone on lopetusehdon kannalta puolikas kone. Tällä lopetusehdolla vastekyky lentotehtäviin pysyy kohtuullisella tasolla. Jos lopetusehtona käytetään kaikkien koneiden tuhoutumista, suurimpaan osaan hälytyksiä ei simuloinnin 19
loppuvaiheessa enää pystytä vastaamaan. Tällöin toiminta-ajan ennusteesta muodostuisi liian optimistinen. Ylipäänsä lopetusehdon määrittämiseen tulee kiinnittää huomiota, jotta mallin ennusteista voidaan hyödyntää laivueen tehokkaan toiminta-ajan arvioimiseen. Jotta lentotoiminnan tehokkuutta voidaan paremmin arvioida, annetaan ulostuloparametreina tässä mallissa toiminta-ajan lisäksi tehokkuusarvo. Tehokkuusarvo määritetään ei vastattujen hälytysten suhteena kaikkiin hälytyksiin. 5.2.4 Muita simulointimallin ominaisuuksia Mallin testaamiseksi ja havainnollisuuden lisäämiseksi simulaatiosta toteutettiin graafinen esitys, joka kuvaa lentokoneiden kulkua kentän ympäristössä. Samaan esitykseen on lisäksi liitetty muutamia graafeja ja laskureita, jotka kuvaavat lentokoneiden toimintavalmiutta ja sijaintia, toiminnan kokonaiskestoa, sekä annettuja lentotehtäviä ja niistä suoriutumista. Kuvassa 9 on kuva simulointiesityksestä simulointimallin ajovaiheessa. Kuva 9. Kuva simulointimallin graafisesta esityksestä simulointiajovaiheessa. Kaikkia mallin tilastollisia parametreja voidaan helposti muuttaa. Näitä ovat esimerkiksi lento- ja huoltoaikojen keston jakauma, jakaumien keskiarvot ja varianssit, tuhoutumistodennäköisyys, lentotehtävien väliajan jakauma ja niin edelleen. 20
5.3 Simulointimallin herkkyysanalyysi Mallin antamien ennusteiden luotettavuuden arviointiin kuuluu oleellisesti mallin syöteparametrien vaihtelun vaikutusten kartoittaminen. Herkkyysanalyysi toteutetaan tässä tapauksessa niille syöteparametreille, joidenka todellisia arvoja ei voida saada, tai joita on ylipäänsä vaikea arvioida. Näitä parametreja ovat tässä mallissa lentokoneiden tuhoutumis- ja rikkoutumistodennäköisyys sekä peräkkäisten lentotehtävien väliajan keskiarvo. Lisäksi arvioidaan lentoajan vaikutusta ennustetuloksiin. Herkkyysanalyysi toteutetaan varioimalla yhtä mallin parametria muiden parametrien pysyessä muuttumattomina ja tarkastelemalla varioinnin vaikutusta ennusteisiin. Koska mielenkiinnon kohteena on tässä yhteydessä parametrien vaikutus toiminta-aikaan, ts. simulaation kestoaikaan, joudutaan herkkyysanalyysi toteuttamaan keskeytyvän simulaation analysoimisessa käytetyllä riippumattomien toistojen menetelmällä. Käytännössä tämä tarkoittaa sitä, että simulaatiota ajetaan läpi samoilla parametrien arvoilla useita kymmeniä kertoja. Saaduista tuloksista saadaan tällöin kattava otos ja satunnaistekijöiden vaikutus saadaan paremmin huomioitua tuloksia tarkastellessa. Arena-ohjelmisto voidaan asettaa ajamaan sama simulaatio läpi useita kertoja ja tallettamaan halutun parametrin arvot eri ajokierroksilla. Tässä tapauksessa talletetaan simulaation kestoaika ja hälytyksiin vastaamisen tehokkuutta kuvaava arvo. Tehokkusarvo on vastaamatta jääneiden hälytysten suhde kaikkiin hälytyksiin. Mitä suurempi arvo on, sitä heikommin hälytyksiin vastaaminen on onnistunut. Arena laskee automaattisesti kaikkien ajokierrosten tulosten keskiarvon ja 95% luottamusvälin. Lisäksi Arenan palauttamasta tuloksesta saadaan ajokierrosten minimi- ja maksimiarvot Seuraavat herkkyysanalyysit perustuvat Arenan antamiin tuloksiin, kun ajokertojen lukumääränä on käytetty 50. Muiden parametrien arvoina on käytetty taulukossa 1 esitettyjä jakaumia ja todennäköisyyksiä, jollei toisin mainita. Taulukko 1. Simulointimallin syöteparametrit. Koneiden lukumäärä alussa 10 Tuhoutumistodennäköisyys 0.10 (vakio) Rikkoutumistodennäköisyys* 0.05 (vakio) Lentoajan jakauma (min) NORM(45,15) Paluuhuoltoajan jakauma (min) NORM(15,2) Korjausajan jaukauma (min) TRIANGLE(400,600,800) Hälytysten väliajan jakauma (min) EXP(30) Siirtymäajat kenttä-ilma (min) 2 * Rikkoutumistodennäköisyys on todennäköisyys, jolla lennolta tuhoutumatta selvinnyt kone on rikki. 21
5.3.1 Hälytysten väliajan herkkyysanalyysi Hälytysten väliaika on oletettu eksponenttijakautuneeksi satunnaismuuttujaksi. Testataan väliajan keskiarvon varioinnin vaikutusta toiminta-aikaan ja lentotoiminnan tehokkuuteen. Kuvassa 10 ja 11 on esitetty saadut tulokset graafisesti, kun väliajan keskiarvo varioi 15 min ja 60 min välillä. Keskimmäinen käyrä kuvaa keskiarvokäyrää (pienet palkit ovat 95% virherajat). Käyrän ylä- ja alapuoliset viivat ovat 50 simulaatioajossa esiintyneet minimi- ja maksimiarvot. Toiminta-ajan riippuvuus keskimäärisestä hälytysten väliajasta Toiminta-aika (min) 9000 8000 7000 6000 5000 4000 3000 2000 1000 0 20 30 40 50 60 70 Keskimääräinen hälytysten väliaika (min) Keskiarvo Min Max Kuva 10. Toiminta-ajan riippuvuus keskimääräisestä hälytysten väliajasta. Ohitettujen hälytysten osuuden riippuvuus keskimääräisestä hälytysten väliajasta 1 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 0 20 30 40 50 60 70 Keskimääräinen hälytysten väliaika (min) Vastaamattomien hälytysten osuus Kuva 11. Ohitettujen hälytysten osuuden riippuvuus keskimääräisestä hälytysten väliajasta. Kuvasta 10 voidaan havaita, että toiminta-aika riippuu likimain lineaarisesti operaatioiden väliajasta. 10 minuutin muutos keskimääräisessä väliajassa johtaa toiminta-ajan ennusteessa keskimäärin 880 min muutokseen. Kuvasta 11 nähdään, että hälytyksiin vastaamisen tehokkuus heikkenee hälytysten väliajan pienentyessä. Lisäksi voidaan havaita, että tehokkuuden heikkeneminen on voimakkaampaa, kun hälytysten aikaväli pienenee alle 35 minuutin. 22