Chcę obliczyć ogólny współczynnik dostarczania w funkcji czasu za pomocą wektorów opartych na sygnałach Omnet ++? Jak mogę to osiągnąć, gdy istnieje wiele źródeł i tylko jeden zlew.
Na przykład, powiedzmy, że mam 10 węzłów mobilnych, które wysyłają dane do stałego punktu dostępowego, współczynnik dostarczenia jest równy (pakiety odebrane / wysłane), ale punkt dostępowy zna tylko ilość odebranych pakietów.
Zadeklarowałem następujące sygnały i statystyki:
Dla AP:
@signal[receivedBndl](type = "int");
@statistic[receivedBundle](title="ReceivedBundle";source=receivedBndl;record=count,mean,last,vector);
Dla węzłów:
@signal[sentBndl](type = "int");
@statistic[sentBundle](title="SentBundle";source=sentBndl;record=count,mean,last,vector);
Czy jest możliwe utworzenie innej @statystyki, która oblicza Współczynnik Dostawy w funkcji czasu za pomocą 2 sygnałów?
Dzięki,
Odpowiedzi:
2 dla odpowiedzi № 1Jest to bardziej jak statystyka sieciowa niżcoś związanego z pojedynczym węzłem, więc musisz zainstalować odbiorniki statystyczne na samym module sieciowym najwyższego poziomu zamiast rzeczywistych węzłów. Sygnały OMNeT ++ propagują się w łańcuchu ograniczającym, więc każdy sygnał wysłany do określonego węzła będzie dostarczany również do zawierającego moduł sieci. Umożliwia to zainstalowanie statystyk w sieci i uzyskanie tam danego sygnału (również).
Aby to osiągnąć, przepisałbym kod dofaktycznie wysyłają wysłane / odebrane obiekty cPacket (a nie ich liczbę jako liczbę całkowitą). Nadal możesz policzyć liczbę pakietów za pomocą funkcji count () w statystykach.
Dla AP:
@signal[receivedBndl](type = cPacket);
Dla węzłów:
@signal[sentBndl](type = cPacket);
Ponieważ każdy rzeczywisty wysłany / odebrany pakiet jest terazemitowane do modułu wysyłającego / odbierającego (i cokolwiek ponad nimi), możesz zainstalować statystyki w module najwyższego poziomu i połączyć je w jedną statystykę:
@statistic[deliveryratio](source=count(receivedBndl)/count(sentBndl); record=last);
Ta ostatnia linia zainstaluje dwa odbiorniki sygnałuw module najwyższego poziomu i statystyki obliczą wartość za każdym razem, gdy dowolny moduł wygeneruje lub odbierze pakiet w dowolnym miejscu w sieci.