The current node position is stored in the node.position field ({x:number,y:number})
The identifier of a node is stored in the node.id field
The shape or a pericular shape of the node can be modified by the node:modify(shapeclass,attr) method; attr is a record table specifying shape visual attributes
Moving Nodes
A node can be moved in the 2D world using the node:move(dx,dy), node:move(d,nil,angle), or node:moveTp(x,y) methods
A node can search for other nodes, either by specifying its own shape class (or a class of one shape of a group), the radius, or the bounding box of the search
Either within the bounding box (only ndoes fully within the bounding box) or overlapping search can be performed
Event signals are sent by the simulator to nodes or nodes can send event signals to other nodes
The node:send(nodeid,event,data) method is used to send a signal to a specific node
Messages are processed by a nodes using an event handler:
node:on('msg',function (self,data) end)
Simulation
Each world simulation step consists of three phases signalling different events:
before
step or activity is the main simulation activity event
after
These events can be handled by each node and by the simulator (world) itself
Only in the main activity handler function the state of a node should be changed (state that has impact on other nodes)
Data
Data variables can be assigned both to the simulator and to nodes just by adding record table fields
node.data = { .. }
simulator.data = { .. }
Test before assignment if the field already exists
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
Erstelle eine Funktion die eine Simulationswelt mit N Knoten programmatisch (iterativ). Die Konten sollen parametrisierbar sein bzüglich initialer Position, Kommunikationsradius, und Ausfallwahrscheinlichkeit γ.
Erstelle eine Simulationswelt mit N=100 zufällig platzierten Knoten
Implementiere Random Walk der mobilen Knoten innerhalb der Simulationswelt
Modifiziere den Radio R Radius (Monte Carlo Simulation mit Verteilung im Bereich 20..70)
Führe ein Monitoring der Radio Inteferenz durch (Interferenz wenn ein Knoten pro Simulationsschritt mehr als eine Nachricht empfängt)
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
Trage die mittelren Kollisionsraten in eine Tabelle ein (abhhängig von den Parametern)
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))