/ / Агрегиране на резултатите от вектори на базата на Omnet ++ сигнали - omnet ++

Агрегиране на резултатите от вектори на базата на Omnet ++ сигнали - omnet ++

Искам да се изчисли цялостно съотношение доставка в зависимост от времето, използвайки вектори, базирани на Omnet ++ сигнали? Как мога да го постигна, когато има многочислен източник и само една мивка.

Например, да кажем, че имам 10 мобилни възли, които изпращат данни към фиксиран AP, съотношението на доставка е равно на (получени / изпратени пакети), но AP знае само размера на получените пакети.

Декларирах следните сигнали и статистически данни:

За AP:

@signal[receivedBndl](type = "int");
@statistic[receivedBundle](title="ReceivedBundle";source=receivedBndl;record=count,mean,last,vector);

За възли:

@signal[sentBndl](type = "int");
@statistic[sentBundle](title="SentBundle";source=sentBndl;record=count,mean,last,vector);

Възможно ли е да се създаде друга @statistics, която изчислява съотношението на доставка в зависимост от времето с тези 2 сигнали?

Благодаря,

Отговори:

2 за отговор № 1

Това е по-скоро като мрежа статистика, отколкотонещо, свързано с един възел, така че трябва да инсталирате статистическите си слушатели на самия мрежов модул от първо ниво, вместо на действителните възли. OMNeT ++ сигналите се разпространяват на веригата на контейнера, така че всеки сигнал, който е бил изпратен до конкретен възел, ще бъде доставен и в съдържащия мрежов модул. Това позволява да се инсталират статистическите данни в мрежата и да се получи съответния сигнал там (също).

За да постигнете това, ще пренапишем кодавсъщност излъчват изпратените / получените cPacket обекти (а не броят им като цяло число). Все още можете да преброите броя на пакетите, като използвате функцията count () в статистиката.

За AP:

@signal[receivedBndl](type = cPacket);

За възли:

@signal[sentBndl](type = cPacket);

Всеки действителен изпратен / получен пакет е сега(и всичко над тях), можете да инсталирате статистика в модула от най-високо ниво и да ги комбинирате в една статистика:

@statistic[deliveryratio](source=count(receivedBndl)/count(sentBndl); record=last);

Този последен ред ще инсталира два сигнални слушателяна модула от най-високо ниво и статистическите данни ще изчисляват стойността всеки път, когато даден модул генерира или получава пакет навсякъде в мрежата.