首页 > 解决方案 > 在 Omnet++ 中获取实时统计数据

问题描述

在:

https://docs.omnetpp.org/tutorials/tictoc/part5/

https://doc.omnetpp.org/omnetpp/manual/#sec:simple-modules:declaring-statistics

它显示了如何在模拟后处理网络统计信息。

是否可以动态获取网络参数?

标签: simulationomnet++inet

解决方案


TL;DR:使用信号(不是统计数据)并将您自己的简单模块连接到这些信号上,并在该模块中计算所需的统计数据。

您无法访问@statistics代码中的值,这是有原因的,因为这将是一种反模式基于 NED 的统计数据被引入作为一种在不修改模型行为和代码的情况下向模型添加计算和测量的方法。这意味着统计数据不被视为模型的一部分,而是被视为配置。更改统计数据(即决定您要测量其他内容)永远不会改变模型的行为。这就是为什么给定统计数据的实际值不会(轻易地)暴露给 C++ 代码的原因。你可以把它们挖出来,但非常不鼓励。

现在,这并不意味着您想要实现的目标是不合法的,但实际的统计数据收集必须是您模型的一个组成部分。即你不应该以使用内置统计为目标,而是创建一个明确的统计收集子模块,它应该连接必要的信号(https://doc.omnetpp.org/omnetpp/manual/#sec:simple-modules:订阅信号)并在其 C++ 代码中执行您需要的实际统计计算。之后,其他模块可以自由访问这些信息并据此做出决策。


推荐阅读