![Page 1: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/1.jpg)
- 1 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Road Traffic Simulation&
OMNeT++
Martin Doležal
![Page 2: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/2.jpg)
- 2 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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++
![Page 3: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/3.jpg)
- 3 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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í
![Page 4: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/4.jpg)
- 4 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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í
![Page 5: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/5.jpg)
- 5 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 6: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/6.jpg)
- 6 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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í
![Page 7: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/7.jpg)
- 7 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 8: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/8.jpg)
- 8 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 9: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/9.jpg)
- 9 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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,...
![Page 10: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/10.jpg)
- 10 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 11: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/11.jpg)
- 11 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 12: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/12.jpg)
MODUL v OMNeT++
- 12 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
OMNeT++
POPIS TOPOLOGIEv NED
POPIS CHOVÁNÍv C++
![Page 13: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/13.jpg)
- 13 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 14: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/14.jpg)
- 14 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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)
![Page 15: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/15.jpg)
- 15 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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í
![Page 16: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/16.jpg)
- 16 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Simulační smyčka
initializewhile (FES not empty and
simulation not yet complete){retrieve first event from FES
t := timestamp of this event process event}finish simulation
![Page 17: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/17.jpg)
- 17 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 18: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/18.jpg)
- 18 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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ě
![Page 19: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/19.jpg)
- 19 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
NED language
Compound module
Simple module
Simple module
Channel
Compound module
Simple module
Compound moduleSimple Simple
Network
![Page 20: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/20.jpg)
- 20 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
NED language - import
import "ethernet"
Příkazem se vkládá externí soubor
![Page 21: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/21.jpg)
- 21 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
NED language – simple module
simple SimpleModuleNameparameters:
//... gates: //...endsimple
![Page 22: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/22.jpg)
- 22 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
CarGenerator.ned
simple CarGenerator gates: out: out; in: in;endsimple
![Page 23: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/23.jpg)
- 23 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
crossroad.nedsimple CrossRoad parameters: throughDelay: numeric; type: numeric const;
gates: out: outA, outB, outC, outD; in: inA, inB, inC, inD;endsimple
![Page 24: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/24.jpg)
- 24 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
NED language – channel
channel MyChanneldelay 0.0018
error 1e-8 datarate 128000endchannel
![Page 25: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/25.jpg)
- 25 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
NED language – compound module
module CompoundModuleparameters:
//...gates:
//...submodules:
//...connections:
//...endmodule
![Page 26: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/26.jpg)
- 26 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Příklad NED souboru s dopravní sítí
![Page 27: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/27.jpg)
- 27 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
network2.ned
import "cargenerator", "crossroad", "global";module NejkratsiCesty
//...endmodulenetwork network2 : NejkratsiCestyendnetwork
![Page 28: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/28.jpg)
- 28 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
module NejkratsiCesty
module NejkratsiCesty submodules: //... connections nocheck: //... display: "b=428,372";endmodule
![Page 29: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/29.jpg)
- 29 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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"; //...
![Page 30: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/30.jpg)
- 30 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
module NejkratsiCesty - connections
connections nocheck: A.out --> delay 3 --> CrossRoad0.inD; CrossRoad0.outD --> delay 10 --> A.in; //...
![Page 31: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/31.jpg)
- 31 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Ukázka
Tvorba NED souboru v GNED
![Page 32: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/32.jpg)
- 32 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Typy křižovatek
● Jsou definovány v externím souboru● Pomocí jednoduché gramatiky je možno
popsat chování křižovatky
![Page 33: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/33.jpg)
- 33 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Křižovatka
CROSSROAD
DIRECTION A0001 (1)
DIRECTION C0100 (4)
DIRECTION B0010 (2)
DIRECTION D1000 (8)
![Page 34: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/34.jpg)
- 34 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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íljedná se o vhodný pruh, pokud(autoCíl AND pruhCíl) != 0
● apod.
![Page 35: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/35.jpg)
- 35 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Popis křižovatky
TYPE Number TypeNameLANES(OneChar Chars)+
[MAJOR TwoChars][INTERVALSNumber( TwoChars)*]
![Page 36: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/36.jpg)
- 36 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Příklad křižovatkyDIRECTION A
0001 (1)
DIRECTION C0100 (4)
DIRECTION B0010 (2)
DIRECTION D1000 (8)
![Page 37: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/37.jpg)
- 37 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Popis předchozí křižovatky
TYPE 10 ExampleCrossRoadLANESA BCDB ACDC ABDD ABCMAJOR AC
![Page 38: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/38.jpg)
- 38 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Světelná křižovatka
TYPE 11 ExampleClockwiseLANESA BCDB ACDC ABDD ABCMAJOR ACINTERVALS30 AB AC AD30 BA BC BD30 CA CB CD30 DA DB DC
![Page 39: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/39.jpg)
- 39 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Příklad křižovatky 2DIRECTION A
0001 (1)
DIRECTION C0100 (4)
DIRECTION B0010 (2)
DIRECTION D1000 (8)
![Page 40: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/40.jpg)
- 40 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Popis předchozí křižovatky
TYPE 12 ExampleCrossRoad2LANESB A CC AB
![Page 41: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/41.jpg)
- 41 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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ů)
![Page 42: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/42.jpg)
- 42 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Simple module v OMNet++
Třída zděděná od cSimpleModule, je nutnopřetížit následující virtuální metody:
void initialize()void handleMessage(cMessage *msg)void activity()void finish()
![Page 43: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/43.jpg)
- 43 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Constructor vs. initialize()● Konstruktor – ukazatele na NULL● initialize() – inicializace parametrů,
proměnných, alokace dynamických dat, self-messages, apod.
● finish() – záznam statistik (žádné mazání)● Destruktor – uvolnění paměti, zrušení self-
messages, apod.
![Page 44: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/44.jpg)
- 44 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 45: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/45.jpg)
- 45 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Varianta s activity()
activity(){ while (true) { // wait, receive,... }}
![Page 46: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/46.jpg)
- 46 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Varianta s activity()
receive()wait()send()scheduleAt()cancelEvent()end()
![Page 47: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/47.jpg)
- 47 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Varianta s handleMessage()
send()scheduleAt()cancelEvent()receive()wait()
![Page 48: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/48.jpg)
- 48 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
CrossRoad::handleMessage()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;
}
![Page 49: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/49.jpg)
- 49 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
CrossRoad::handleMessage() pokr.
else { // if it is not selfMessageCar* car = check_and_cast<Car*>(msg);carArrived(car, carArrivedToPos(car), carToPos(car));
}
![Page 50: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/50.jpg)
- 50 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
CarGenerator::handleMessage()
void CarGenerator::handleMessage(cMessage *msg){
if (!msg->isSelfMessage()) {// not selfMessage -> it is a car -> delete itev << simTime() << " CarGenerator: deleting car";delete msg;return;
}
scheduleAt(simTime() + uniform(...), msg);
car = new Car(messageCount-1);
// send it to outputsend(car, "out");
}
![Page 51: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/51.jpg)
- 51 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
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
![Page 52: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/52.jpg)
- 52 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
omnetpp.ini
Konfigurační soubor
[General]network = network1sim-time-limit = 100hcpu-time-limit= 300sini-warnings = yes
![Page 53: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/53.jpg)
- 53 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
omnetpp.ini
[Run 1]description="Hradec Kralove nadrazi"**.throughDelay = 3.50;**.Global.autoIntervalLength = true**.Global.flows="flow1.txt"network1.CEZ.type = 15network1.Koruna.type = 11**.type = 0**.typesFile = "types.txt"output-vector-file = output.vec
![Page 54: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/54.jpg)
- 54 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Ukázka
Road Traffic Simulation
![Page 55: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/55.jpg)
- 55 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
OMNeT++
www.omnetpp.org
![Page 56: Road Traffic Simulation OMNeT++ - cvut.cz · Road Traffic Simulation & OMNeT++ Martin Doležal 25.11.2006 Varianta s activity() Podobné jako programování vlákna či procesu Kdekoliv](https://reader036.vdocuments.mx/reader036/viewer/2022063023/600045766225530169145f3e/html5/thumbnails/56.jpg)
- 56 -
Martin DoležalRoad Traffic Simulation & OMNeT++
25.11.2006
Road Traffic Simulation & OMNeT++
KONEC