Lua Nezwork Simulation 2 (Stefan Bosse) [11.2023]

Mobile Netzwerke Simulation mit Lua

Mobile Netzwerke Simulation mit Lua
Discrete-Event 2D World Simulation
Create Simulator
Adding Nodes
Modifying Nodes
Moving Nodes
Node Activities
Searching Nodes
Properties
Events
Simulation
Data
Beispiel
Aufgaben

Discrete-Event 2D World Simulation

Create Simulator

simulator = Simulator({
  width?  = number,
  height? = number
})

Adding Nodes

type shapedesc = {
  shape : 'Rect' | 'Circle' | 'Ellipse' | 'Line' | 'Text'| 'Group',
  class? : string,
  x? : number, y?: number,  -- center position, or
  left?: number, top?:number,
  width?:number, height?:number,
  radius?:number,
  line?:{color:string,width:number},
  fill?:{color:string,opacity:number [0,1] },
  label?: string | {text:string, fontSize:number, fontFamily:string },
  members? : shapedesc { }, -- group only
}

Modifying Nodes

Moving Nodes

node:move(dx,dy,angle)
node:moveTo(x,y)
node:turn(deltaAngle)
node:turnTo(angle)

Node Activities

node:on('before',function (self,step) end)
node:on('activity',function (self,step) end)
node:on('after',function (self,step) end)

Searching Nodes

node:search(shapeclass,overlap?:boolean)
node:search(left,top,width,height,overlap?)

Properties

Events

node:on('msg',function (self,data) end)

Simulation

Data

node.data = { .. }
simulator.data = { .. }

Beispiel

Erzeugen des Simulators

 ▸ 
 ✗ 
 ≡ 

Simulation ausführen (Wichtig: Erst Simulator mit nachfolgenden Schritten aufsetzen)

 ▸ 
 ✗ 
 ≡ 

Test des Simulators

 ▸ 
 ✗ 
 ≡ 

Statistik Monitor aktivieren

 ▸ 
 ✗ 
 ≡ 

Statistik ausgeben

 ▸ 
 ✗ 
 ≡ 

Erzeugung von Knoten

 ▸ 
 ✗ 
 ≡ 

Behandlung von Aktivitäten

 ▸ 
 ✗ 
 ≡ 

Dynamische Änderung der Simulationsparameter

 ▸ 
 ✗ 
 ≡ 

Aufgaben

Aufgabe. Experiment
  1. Erstelle eine Funktion die eine Simulationswelt mit N Knoten programmatisch (iterativ). Die Konten sollen parametrisierbar sein bzüglich initialer Position, Kommunikationsradius, und Ausfallwahrscheinlichkeit γ.
  2. Erstelle eine Simulationswelt mit N=100 zufällig platzierten Knoten
  3. Implementiere Random Walk der mobilen Knoten innerhalb der Simulationswelt
  4. Modifiziere den Radio R Radius (Monte Carlo Simulation mit Verteilung im Bereich 20..70)
  5. Führe ein Monitoring der Radio Inteferenz durch (Interferenz wenn ein Knoten pro Simulationsschritt mehr als eine Nachricht empfängt)
  6. Variere die Simulationsparameter: N=20,50,100, R=20,30,50,70 (einmal statisch, dann durch MC verteilt Rmin=20,Rmax=70), und der Geschwindigkeit der Knoten v=Δ/step
  7. Trage die mittelren Kollisionsraten in eine Tabelle ein (abhhängig von den Parametern)
  8. Führe ein γ = 0.7 ein (mit math.random() entscheiden ob eine Nachricht empfangen wird). Wiederhole exexmplarisch einige der Experiement und beobachte Veränderungen.



Hilfe



Einreichung (Assignment #03-86664)



Prüfen



Bewerten (Lehrer)




Created by the NoteBook Compiler Ver. 1.25.0 (c) Dr. Stefan Bosse (Mon Dec 11 2023 22:59:49 GMT+0100 (Central European Standard Time))