W trakcie realizacji projektu powstał symulator sieci radiowej, umożliwiający efektywne
testowanie algorytmów z uwzględnieniem różnych charakterystyk badanych sieci. Symulator
wyposażono w kilka modeli kanału radiowego z parametryzowanymi mechanizmami propagacji
sygnałów. Symulator jest typu kwazi-statycznego: ruch obiektów jest modelowany poprzez
zmienność środowiska radiowego (zaniki szybkie).
Modułowa budowa symulatora umożliwia tworzenie własnego kodu implementującego algorytmy
sieciowe, kontrolę geograficznego środowiska (rozmieszczenia węzłów), oraz pisanie
własnych procedur raportowania i obróbki wyników symulacji.
Symulator został napisany w języku Python, wykorzystuje środowisko bazodanowe.
Możliwe jest korzystanie z baz typu SQLite, PostgreSQL oraz MySQL, przy czym ta ostatnia
jest zalecana.
Poniżej przedstawiamy tylko najważniejsze elementy symulatora. Dokładniejszy opis
jest dostępny w dokumencie
do pobrania.
Symulator składa się z kilku odrębnych elementów, jak na rysunku powyżej:
Symulator działa w oparciu o dynamiczny dziennik zdarzeń. W pamięci przechowywane
są dyskretne ciągi zdarzeń, z których każde zostanie wykonane w określonym momencie czasu.
W celu modelowania kanału radiowego, zaimplementowano możliwe do wyboru następujące mechanizmy:
Przeprowadzenie symulacji danego algorytmu z różnymi wartościami parametrów (np. tłumienie, rozmieszczenie węzłów, itp.) możliwe jest do wykonania równolegle -- poszczególne instancje badanego problemu są uruchamiane w osobnych wątkach.
W symulatorze stworzono także API (Application Programming Interface) umożliwiające zaprogramowanie nowego algorytmu z zestawu narzędzi istniejących w symulatorze. Użytkownik nie znający całości kodu symulatora może w prosty sposób określić środowisko symulacyjne, manipulować parametrami radiowymi węzłów a także dodawać własne algorytmy modyfikujące lub rozszerzające zachowanie węzłów radiowych.