Simulointi. Tapahtumapohjainen



Samankaltaiset tiedostot
Simulointi. Johdanto

Prosessin reaalisaatioiden tuottaminen

Teoria. Prosessin realisaatioiden tuottaminen

Simulointi. Simulointi. Esimerkkejä. Mallit. Kurssirunko. Esimerkkejä

Suunnitteluvaihe prosessissa

Harjoitus 2: Oppijan aktivointi ( )

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Simulointi. Oliopohjainen

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Rajapinta (interface)

Ohjelmoinnin perusteet Y Python

5/20: Algoritmirakenteita III

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

UML -mallinnus TILAKAAVIO

Batch means -menetelmä

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmistojen suunnittelu

GUIDELINES FOR IMPLEMENTATION KANSALLISET TILAAJATOIMINTEET. UUDELLEENKUTSU VARATTUUN LIITTY- MÄÄN

Estynyt puheluyritys menetetään ei johda uusintayritykseen alkaa uusi miettimisaika: aika seuraavaan yritykseen Exp(γ) pitoaika X Exp(µ)

Verilogvs. VHDL. Janne Koljonen University of Vaasa

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

12. Javan toistorakenteet 12.1

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

12. Javan toistorakenteet 12.1

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

Osoitin ja viittaus C++:ssa

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Luento 4 Aliohjelmien toteutus

Projektinhallinnan lähestymistavat

Demonstraatiot Luento 7 D7/1 D7/2 D7/3

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

5. HelloWorld-ohjelma 5.1

START Pääohjelma - arvojen asettaminen - keskipisteet - kierrenousujen ohjaus. Tokan reiän hionta

Jakso 4 Aliohjelmien toteutus

Java-kielen perusteet

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

1. Tarkastellaan seuraavaa kaaviota

811120P Diskreetit rakenteet

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Simulointi. Varianssinhallintaa Esimerkki

Simuloinnin taktisia kysymyksiä

12 Mallit (Templates)

OSI ja Protokollapino

Sisällys. 15. Lohkot. Lohkot. Lohkot

Ohjelmistojen mallintaminen, sekvenssikaaviot

Ohjelmoinnin peruskurssi Y1

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Harjoitus 8: Monte-Carlo simulointi (Matlab)

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

812341A Olio-ohjelmointi, I Johdanto

Simuloinnin taktisia kysymyksiä

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Harjoitus 8: Monte-Carlo simulointi (Matlab)

Integrointi. Ohjelmistotekniikka kevät 2003

Harjoitus 8: Monte Carlo -simulointi (Matlab)

811120P Diskreetit rakenteet

ITKP102 Ohjelmointi 1 (6 op)

Makrojen mystinen maailma lyhyt oppimäärä

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

ITKP102 Ohjelmointi 1 (6 op)

Tietotekniikan valintakoe

Tikon ostolaskujen käsittely

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Muistutus aikatauluista

815338A Ohjelmointikielten periaatteet

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Ohjelmoinnin peruskurssi Y1

11/20: Konepelti auki

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

TAMPEREEN TEKNILLINEN YLIOPISTO

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Johdanto. Luku Mallit ja simulointi

1. Mitä tehdään ensiksi?

SIMULINK S-funktiot. SIMULINK S-funktiot

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli

Kaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

RAIN Työpaketti 1 Projektisysteemi

Mikä yhteyssuhde on?

Muutamia peruskäsitteitä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjeet autosuunnistuksen AT-asemalle

Taulumenetelmä modaalilogiikalle K

Algoritmit 2. Luento 13 Ti Timo Männikkö

ActionTrack-sovellus

Myynnin ja suunnittelun automatisoinnilla lisää tuottavuutta yrityksellesi

Transkriptio:

Simulointi Tapahtumapohjainen

Diskreettiaikainen simulointi 1 Tarkastellaan systeemejä, joissa on äärellisen monta komponenttia. Jokaisella komponentilla äärellisen monta tilaa. Komponentit vaikuttavat toistensa tiloihin tapahtumien välityksellä. Tapahtuma on aina sidottu tiettyyn ajan hetkeen (ts. sillä ei ole kestoa).

Diskreettiaikainen simulointi 2 Tapahtuma voi muuttaa tiloja, generoida muita tapahtumia (samalle ajanhetkelle tai tulevaisuuteen). Tyypillisiä rakennekomponentteja laiteresurssit (vapaa/varattu) työntekijät (vapaa/varattu) raaka-aineet (saatavuus/määrä) tuotteet (aihion saatavuus/valmistumisvaihe) Tapahtumia toimenpiteiden alut/loput

Pesu-esimerkki Autopesulassa rakenneosia Pesuasema (vapaa/varattu) Jonotustila (M käytettävissä olevaa tilayksikköä) Asiakkaat (pesemätön/pesty auto) Tapahtumia Asiakkaan saapuminen/lähteminen Pesun alku/loppu Jonoon liittyminen/poistuminen Osa tapahtumista esiintyy aina yhdessä

Simuloinnin osatoiminnot 1 Simulointiohjelmiston hallittava 5 toimintoa Mallin rakenteen määrittely Systeemin osat -> tilamuuttujat Osien looginen riippuvuus -> vuokaavio Tapahtumien logiikka -> koodi Satunnaisprosessit Halutun jakauman mukaiset satunnaisluvut Tilastollinen tietojenkeruu ja raportointi Luottamusvälit, visualisointi, analyysi

Simuloinnin osatoiminnot 2 Ajan hallinta kellon edistäminen Simuloinnin kokonaishallinta Simuloinnin aloitus/lopetus Tapahtumien lisäys/poisto Oikean tapahtuman aktivointi Kokeiden hallittu toisto

Simuloinnin osatoiminnot 3 Osa simuloinnin toiminnoista on yhteisiä kaikille malleille ja tapauksille Ajan hallinta Satunnaisprosessit Tietojen keruu ja raportointi Osa sisältää malli- ja koeriippuvia osia Mallin rakenne ja logiikka Simulointikokeen kulku ja toisto

Simuloinnin paradigmat Kolme tarkastelukulmaa simulointiin Tapahtumapohjainen Lähtökohtana samaan aikaan sidotut tilan muutokset Prosessipohjainen Samaan osasysteemiin liittyvien tapahtumien elinkaari. Aktiviteettipohjainen Osasysteemin resursseja sitovat aikaa vievät toiminnot Johtavat erilaisiin malli- ja ohjelmarakenteisiin Sopivat erilaisiin mallitustilanteisiin

Tapahtumalähtöinen simulointi Keskeisinä tapahtumarutiinit Yksi rutiini per tapahtumatyyppi Sisältävät mallin logiikan Tapahtumarutiini voi muuttaa tilasuureita ja luoda uusia tapahtumailmoituksia. Tapahtumien järjestelijä kirjaa tapahtumailmoituksia (aika, tapahtuma) Yksi rutiini kerrallaan aktivoidaan.

Prosessi/oliopohjainen s. Osaprosessit olioina, joilla omat tilamuuttujat ja tapahtumarutiinit. Kaikki resurssiin liittyvä toiminta yhdessä paikassa. Erilliset metodit toisten olioiden ja järjestelijän kanssa kommunikointiin. Ei erillisiä ilmoituksia. Useampi prosessi käynnissä yhtä aikaa (korutiinit, säikeistys).

Aktiviteettipohjainen s. Logiikka aktiviteettirutiineissa Rutiini liittyy aina johonkin resurssiin Kaksi rajapintaa Aktivointi (jos ehdot toteutuvat, varaa resurssin ja kiinnittää lopetusajan) Passivointi: vapauttaa resurssin annettuna aikana Kaikki aktiviteetit käydään systemaattisesti läpi Jos ehdot toteutuvat, aktivoidaan. Jos yksikään rutiini ei aktivoidu, kasvatetaan aikaa seuraavaan lopetushetkeen.

Tapahtumapohjainen s. Vanhin lähestymistapa Logiikka yksi kerrallaan suoritettavissa rutiineissa Helppo toteuttaa millä tahansa proseduraalisella kielellä Logiikka fragmentoituu helposti Peräkkäiset tai toisiinsa liittyvät tapahtumat eri rutiineissa

Taphtumap. pesuesim. Minimissään kaksi eri tapahtumaa (tulo ja lähtö (vrt. johdanto) Molemmat voivat varata pesuaseman ja generoida lähtötapahtuman Potentiaalinen ylläpidettävyysongelma Jako 4 atomaariseen tapahtumaan Tulo (generoi asiakkaan) Alku (varaa resurssin ja käynnistää palvelun) Loppu (vapauttaa resurssin, lopettaa palvelun) Lähtö (poistaa asiakkaan)

Pesu 2 Tulo Alku Jos jonossa on tilaa Luo uusi asiakas ja aseta jonoon Luo uusi Alku-tapahtuma Luo uusi tulotapahtuma (ja uusi tuloaika) Jos palvelu vapaa ja jonossa asiakas Ota jonosta asiakas Varaa palvelu Luo Loppu-tapahtuma (uusi palvelun kesto)

Pesu 3 Loppu Lähtö Vapauta palvelu Luo Lähtö-tapahtuma Luo Alku-tapahtuma Kerää asiakkaan tiedot (jos on) Poista asiakas

Pesu Tulo Alku Loppu Lähtö

Pesu - toteutus 4 tapahtumarutiinia (aliohjelmaa) Tapahtumia varten TapahtumaTyyppi (Tulo, Alku, Loppu, Lähtö) Kirjanpitoon TapahtumaIlmoitus(Aika, Tapahtuma) Tapahtumalista hallinnoi TapahtumaIlmoituksia Metodit SeuraavaTapahtuma LisääTapahtuma (Aika, Tapahtuma) (PoistaTapahtuma) Jono Koostuu Asiakas instansseista Metodit Lisää, Ota, Pituus Palvelee Alku-tapahtumaa Lähtö tarvitsee teknisen jonon

Pesu - pääohjelma Alustukset T=0; LisääTapahtuma(TuloAikaJakauma(),Tulo); While (T< TMax) \\ tms lopetusehto Ilmoitus=SeuraavaTapahtuma(); T=Ilmoitus.Aika; Tyyppi=Ilmoitus.Tapahtuma; CASE Tyyppi of \\ kutsutaan a.o. tapahtumarutiinia END CASE End While

Tulo Tulo_Tapahtuma() Asiakas_Tyyppi_Osoitin :: Auto { LisääTapahtuma(Tulo_Aika_Jakauma(),Tulo); If Jono.Pituus() < M then Auto= Luo_Asiakas(); Jono.Lisää(Auto) LisääTapahtuma(0.,Alku) EndIf }

Alku Alku_Tapahtuma() Asiakas_Tyyppi_Osoitin :: Auto { If(Asema.Vapaa() and Jono.Pituus()>0) then Endif } Auto=Jono.Ota(); Asema.Varaa(Auto); LisääTapahtuma(Palvelu_Aika_Jakauma(),Loppu)

Loppu Loppu_Tapahtuma() Asiakas_Tyyppi_Osoitin :: Auto { Auto= Asema.Vapauta() Lähtö.Varaa(Auto) \\ Muuten asiakas hukkuu LisääTapahtuma(0.,Lähtö) LisääTapahtuma(0.,Alku) }

Lähtö Lähtö_Tapahtuma() Asiakas_Tyyppi_Osoitin :: Auto { Auto=Lähtö.Vapauta() // Kerää statiikkaa Poista_Asiakas(Auto) } // Varaa ja Vapauta tarvitaan välittämään asiakastieto, koska jonoa ei ole.

Huomioita Erilaiset jonotusstrategiat voi piilottaa Jonon sisään. Useamman palvelun, reitityksen, asiakasvirran jne huomiointi edellyttää tapahtumien monistamista tai parametrisointia. Käytännössä palvelusta ja sen jonosta on hyvä tehdä kokonaisuus, johon asiakas reititetään.

Konttisatamat - toteutus Keskeiset tapahtumat Laiva i saapuu satamaan j Laiva i sataman j jonoon hetkellä t Laivan purku/lastaus alkaa laiturilla Laiva i pois jonosta, laituri k varatuksi, päättymistapahtuma hetkelle t2

Konttisatamat - toteutus Keskeiset tapahtumat Laivan purku/lastaus päättyy Laituri k vapautuu hetkellä t3 Laiva lähtee matkalle seuraavaan satamaan Laivan i saapuminen satamaan j hetkellä t4

Konttisatamat kysymyksiä? Keskeiset tapahtumat Laiva i saapuu satamaan j Laiva i sataman j jonoon hetkellä t Mitä tietoa välitetään tapahtumailmoituksessa, mitä muuten (ja miten) Laivan purku/lastaus alkaa laiturilla Laiva i pois jonosta, laituri k varatuksi, päättymistapahtuma hetkelle t1 Tarvitaanko viittausta yksittäiseen laituriin k, mihin tieto laivasta i

Konttisatamat kysymyksiä? Keskeiset tapahtumat Laivan purku/lastaus päättyy Laituri k vapautuu hetkellä t3 Missä tieto laiturista, laivasta Laiva lähtee matkalle seuraavaan satamaan Laivan i saapuminen satamaan j hetkellä t4 Kuka tietää j :n arvon laivalle i