/ / Agregacja wyników wektorów opartych na sygnałach Omnet ++ - omnet ++

Agregacja wyników wektorów na podstawie sygnałów Omnet ++ - omnet ++

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 № 1

Jest 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.