Искам да се изчисли цялостно съотношение доставка в зависимост от времето, използвайки вектори, базирани на 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);
Този последен ред ще инсталира два сигнални слушателяна модула от най-високо ниво и статистическите данни ще изчисляват стойността всеки път, когато даден модул генерира или получава пакет навсякъде в мрежата.