Road Traffic Simulation & OMNeT++

Podobné dokumenty
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

KTE / ZPE Informační technologie

Programování v C++ 3, 3. cvičení

PREPROCESOR POKRAČOVÁNÍ

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Knihovna DMX512lib Komunikace protokolem DMX512. TXV prvé vydání srpen 2010 změny vyhrazeny

Load Balancer. RNDr. Václav Petříček. Lukáš Hlůže Václav Nidrle Přemysl Volf Stanislav Živný

Čipové karty Lekařská informatika

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Implementace dávkových operací

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Konstruktory a destruktory

Profilová část maturitní zkoušky 2017/2018

Programování v C++, 2. cvičení

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Struktura programu v době běhu

Kombinatorika, výpočty

Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů

DETEKCE DOPRAVY KLASIFIKACE VOZIDEL MONITORING DOPRAVNÍHO PROUDU

Operační systémy. Cvičení 4: Programování v C pod Unixem

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

Základní datové struktury

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

POČÍTAČOVÁ SIMULACE PODNIKOVÝCH PROCESŮ. Ing. V. Glombíková, PhD.

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Dědění, polymorfismus

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Ukazka knihy z internetoveho knihkupectvi

CAL (CAN Application Layer) a CANopen

Principy ATM sítí. Ing. Vladimír Horák Ústav výpočetní techniky Univerzity Karlovy Operační centrum sítě PASNET

Programování v C++ 1, 1. cvičení

Abstraktní datové typy

Programování v C++ 2, 7. cvičení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

MyIO - webový komunikátor

Protokol TELNET. Schéma funkčních modulů komunikace protokolem TELNET. Telnet klient. login shell. Telnet server TCP/IP TCP/IP.

Mělká a hluboká kopie

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Programování v C++ 2, 4. cvičení

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Počítačové sítě. Počítačová síť. VYT Počítačové sítě

Zajištění kvality služby (QoS) v operačním systému Windows

Úvod do systémů hromadné obsluhy. charakteristika SHO: systém, který poskytuje obsluhu určitého typu

Dynamické datové struktury I.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

TEDrv OVLADAČE KLÁVESNICE, MYŠI A DISPLEJE EMULÁTORU TERMINÁLU PRO MS WINDOWS. Příručka uživatele a programátora

Komunikace eorders. aegis. aegis.cz. Konference Common 2009 Malá Fatra. Evžen Kučera

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ

Abstraktní datové typy: zásobník

K čemu slouží počítačové sítě

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat.

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

WP22: Human Centered Cabin Design (modely lidských faktorů a optimalizace hardwaru kabiny) Vedoucí konsorcia podílející se na pracovním balíčku

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Virtuální metody - polymorfizmus

Programování v C++ 2, 8. cvičení

IUJCE 07/08 Přednáška č. 6

Programovani v Maplu Procedura

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

usimt10 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM10 NA PC Příručka uživatele a programátora

B A B A B A B A A B A B B

Více o konstruktorech a destruktorech

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

přetížení operátorů (o)

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Programování v C++ 1, 16. cvičení

Car Agent. Struktura chování:

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Šablony, kontejnery a iterátory

Algoritmizace a programování

Pokročilé architektury počítačů

Herní engine. Co je Engine Hotové enginy Jemný úvod do game designu

Softwarové komponenty a Internet

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Šablony, kontejnery a iterátory

5. Směrování v počítačových sítích a směrovací protokoly

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Abstraktní třídy, polymorfní struktury

Úvod do programování - Java. Cvičení č.4

Spojová implementace lineárních datových struktur

Úvod do mobilní robotiky AIL028

Generické programování

PB161 Programování v jazyce C++ Přednáška 9

JAK ČÍST TUTO PREZENTACI

Přednáška 3. Opakovače,směrovače, mosty a síťové brány

Modelování a simulace - spojité modelování

Směrování- OSPF. Směrování podle stavu linek (LSA) Spolehlivé záplavové doručování

Transkript:

Road Traffic Simulation & OMNeT++ - 1 -

Road Traffic Simulation - požadavky Simulátor silniční dopravy Definice sítě Objekt křižovatka Objekt automobil Zdroj a cíl dopravních toků Simulace sítě jako SHO Výpočet statistických údajů Implementace v OMNeT++ - 2 -

Zdroj a cíl dopravních toků Zdroj a cíl dopravních toků automobilů Výchozí statistické údaje Počet průjezdů v daném směru Toky mezi danými místy Počet aut za hodinu Hierarchické uspořádání sítí - 3 -

Automobil Aktivní automobil Zná cíl cesty Vlastní rozhodnutí, kudy pokračovat Nese si informace o cestě Pasivní automobil Zná cíl cesty Síť samotná ho navádí nejlepší cestou Neví, kudy pojede Cesty v daném toku se průběžně mění - 4 -

Křižovatka Má průběžné informace o celé síti Navádí automobily příslušnou cestou k cíli Přizpůsobuje se momentální situaci Změna trasy porucha, zácpa,... Intervaly semaforů Na rozdíl od automobilu je to aktivní prvek - 5 -

Silnice Spojuje navzájem Křižovatky Zdroje dopravních toků Cíle dopravních toků 'Přenos automobilů' mezi křižovatkami Její parametry výrazně ovlivňují chování sítě Délka silnice Počet pruhů Maximální rychlost Pravděpodobnost poruchy - zablokování - 6 -

Silniční síť Složená z definovaných objektů (křižovatka, silnice, zdroje a cíle toků) Momentální stav je určen stavy těchto objektů a zatížením sítě automobily - 7 -

Příklady využití Simulace silniční sítě při její přestavbě Omezení dopravy v daném úseku Nové silnice či rozšíření stávajících Automatické navádění automobilů k cíli Respektuje aktuální dopravní stav Proměnné dopravní značení Přizpůsobení délek intervalů u semaforů aktuální dopravní situaci - 8 -

Souvislosti s počítačovou sítí Zřejmé souvislosti s počítačovou sítí Automobily, křižovatky, silnice, zdroje toků dat,... Packety, routery, kanály, servery,... - 9 -

Diskrétní simulace Simulace systémů s diskrétními událostmi Dění v systému lze popsat pomocí událostí Mezi každými dvěma událostmi se nic neděje Událost trvá nulový čas Událostí je například Počátek přenosu paketu Konec přenosu paketu Vypršení timeoutu - 10 -

OMNeT++ Objektově orientovaný modulární simulátor určený pro diskrétní simulace Modelování telekomunikačních sítích Modelování protokolů Modelování distribuovaných systémů Validace hardwarových architektur Vyhodnocení výkonnosti SW systémů A jiné systémy s diskrétními událostmi - 11 -

OMNeT++ MODUL v OMNeT++ POPIS TOPOLOGIE v NED POPIS CHOVÁNÍ v C++ - 12 -

Zprávy Prostředek komunikace mezi moduly V simulátoru silniční dopravy automobily zpráva o nutnosti přepočítat směrovací tabulky self-messages jsou zděděny od základní třídy cmessage - 13 -

Self-messages Zpráva, kterou modul posílá sám sobě Typické využití jako časovač první self-message se pošle při inicializaci při přijmutí ji znovu naplánuji za další interval a provedu příslušnou akci scheduleat(time, msg) cancelevent(msg) - 14 -

FES Future Event Set fronta událostí zpráv 1. Zpráva, která má být doručena dříve, se zpracuje první. Jestliže jsou časy dvou zpráv stejné 2. Zpráva s větší prioritou (v OMNeTu jsou vyšší priority ty s menším číslem) se zpracuje první, jestliže jsou stejné 3. Zpráva dříve poslaná (naplánovaná) se zpracuje první - 15 -

Simulační smyčka initialize while (FES not empty and simulation not yet complete) { retrieve first event from FES t := timestamp of this event process event } finish simulation - 16 -

NED language Topologie sítě je popsána v jazyce NED NED umožňuje modulární popis sítě Popisy se ukládají do souborů s příponou.ned Simulátor načítá NED Dynamicky při startu nebo možný překlad do C++ a přímé přilinkování ke spouštěcímu souboru - 17 -

NED language Popis v NEDu se skládá z následujících komponent: Příkazy import Definice kanálů Definice simple a compound modulů Definice sítě - 18 -

NED language Network Compound module Simple module Compound module Simple module Channel Simple module Compound module Simple Simple - 19 -

NED language - import Příkazem se vkládá externí soubor import "ethernet" - 20 -

NED language simple module simple SimpleModuleName parameters: //... gates: //... endsimple - 21 -

CarGenerator.ned simple CarGenerator gates: out: out; in: in; endsimple - 22 -

crossroad.ned simple CrossRoad parameters: throughdelay: numeric; type: numeric const; gates: out: outa, outb, outc, outd; in: ina, inb, inc, ind; endsimple - 23 -

NED language channel channel MyChannel delay 0.0018 error 1e-8 datarate 128000 endchannel - 24 -

NED language compound module module CompoundModule parameters: //... gates: //... submodules: //... connections: //... endmodule - 25 -

Příklad NED souboru s dopravní sítí - 26 -

network2.ned import "cargenerator", "crossroad", "global"; module NejkratsiCesty //... endmodule network network2 : NejkratsiCesty endnetwork - 27 -

module NejkratsiCesty module NejkratsiCesty submodules: //... connections nocheck: //... display: "b=428,372"; endmodule - 28 -

module NejkratsiCesty - submodules submodules: Global: Global; display: "p=50,58;i=misc/cloud"; CrossRoad0: CrossRoad; display: "p=136,152;i=old/bwgen"; A: CarGenerator; display: "p=48,152;i=misc/town"; //... - 29 -

module NejkratsiCesty - connections connections nocheck: A.out --> delay 3 --> CrossRoad0.inD; CrossRoad0.outD --> delay 10 --> A.in; //... - 30 -

Ukázka Tvorba NED souboru v GNED - 31 -

Typy křižovatek Jsou definovány v externím souboru Pomocí jednoduché gramatiky je možno popsat chování křižovatky - 32 -

Křižovatka DIRECTION A 0001 (1) DIRECTION D 1000 (8) CROSSROAD DIRECTION B 0010 (2) DIRECTION C 0100 (4) - 33 -

Bitové operace Směry jsou reprezentovány čísly Používají se bitové operace, například Rotace doleva získáme pruh nalevo od aktuálního Auto jede do autocíl a pruh vede do pruhcíl jedná se o vhodný pruh, pokud (autocíl AND pruhcíl)!= 0 apod. - 34 -

Popis křižovatky TYPE Number TypeName LANES (OneChar Chars) + [ MAJOR TwoChars ] [ INTERVALS Number( TwoChars)* ] - 35 -

Příklad křižovatky DIRECTION A 0001 (1) DIRECTION D 1000 (8) DIRECTION B 0010 (2) DIRECTION C 0100 (4) - 36 -

Popis předchozí křižovatky TYPE 10 ExampleCrossRoad LANES A BCD B ACD C ABD D ABC MAJOR AC - 37 -

Světelná křižovatka TYPE 11 ExampleClockwise LANES A BCD B ACD C ABD D ABC MAJOR AC INTERVALS 30 AB AC AD 30 BA BC BD 30 CA CB CD 30 DA DB DC - 38 -

Příklad křižovatky 2 DIRECTION A 0001 (1) DIRECTION D 1000 (8) DIRECTION B 0010 (2) DIRECTION C 0100 (4) - 39 -

Popis předchozí křižovatky TYPE 12 ExampleCrossRoad2 LANES B A C C AB - 40 -

Předdefinované typy Je možno použít některé předem definované typy křižovatek Základní 4 směry přednost zprava Kruhový objezd Možnost odkázat se na již definovaný typ a jenom změnit některé jeho vlastnosti (typicky intervaly semaforů) - 41 -

Simple module v OMNet++ Třída zděděná od csimplemodule, je nutno přetížit následující virtuální metody: void initialize() void handlemessage(cmessage *msg) void activity() void finish() - 42 -

Constructor vs. initialize() Konstruktor ukazatele na NULL initialize() inicializace parametrů, proměnných, alokace dynamických dat, selfmessages, apod. finish() záznam statistik (žádné mazání) Destruktor uvolnění paměti, zrušení selfmessages, apod. - 43 -

Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv v kódu je možno čekat na příchozí zprávu V kódu je možno na nějaký čas zastavit činnost modulu OMNeT++ tuto variantu příliš nedoporučuje - 44 -

Varianta s activity() activity() { while (true) { // wait, receive,... } } - 45 -

Varianta s activity() receive() wait() send() scheduleat() cancelevent() end() - 46 -

Varianta s handlemessage() send() scheduleat() cancelevent() receive() wait() - 47 -

CrossRoad::handleMessage() - 48 - void CrossRoad::handleMessage(cMessage *msg) { if (msg->isselfmessage()) { CRInfo *crinfo = check_and_cast<crinfo*>(msg); switch (crinfo->type()) { case CRI_ONE_LANE_CHECK: carchecks(crinfo->lane()); break; case CRI_ALL_LANES_CHECK: engagedpassagemsg[crinfo->from()] [crinfo->to()] = NULL; alllanescheck(); break; case CRI_SEMAPHORE: changesemaphore(); break; } delete msg; }

CrossRoad::handleMessage() pokr. else { // if it is not selfmessage Car* car = check_and_cast<car*>(msg); cararrived(car, cararrivedtopos(car), cartopos(car)); } - 49 -

CarGenerator::handleMessage() void CarGenerator::handleMessage(cMessage *msg) { if (!msg->isselfmessage()) { // not selfmessage -> it is a car -> delete it ev << simtime() << " CarGenerator: deleting car"; delete msg; return; } scheduleat(simtime() + uniform(...), msg); car = new Car(messageCount-1); } // send it to output send(car, "out"); - 50 -

Průjezd křižovatkou Je první ve frontě? Má zelenou? Má přednost? Má před sebou místo? Naplánuje možnost vyjetí následníka Naplánuje možnost vyjetí těch aut, která mu dávala přednost Přeplánování zprávy - 51 -

omnetpp.ini Konfigurační soubor [General] network = network1 sim-time-limit = 100h cpu-time-limit= 300s ini-warnings = yes - 52 -

omnetpp.ini [Run 1] description="hradec Kralove nadrazi" **.throughdelay = 3.50; **.Global.autoIntervalLength = true **.Global.flows="flow1.txt" network1.cez.type = 15 network1.koruna.type = 11 **.type = 0 **.typesfile = "types.txt" output-vector-file = output.vec - 53 -

Ukázka Road Traffic Simulation - 54 -

OMNeT++ www.omnetpp.org - 55 -

Road Traffic Simulation & OMNeT++ KONEC - 56 -