我使用Veins框架和OMNET ++来模拟公路场景。OMNET ++中的结果分析
我使用cOutVector
从我的实验中收集结果。
我有超过1000个节点(车辆),并且cOutVector
单独为每个模块(节点)收集结果。但是,我需要收集整体结果。
例如,所有节点收到多少个信标?有没有收集这样的结果?
我使用Veins框架和OMNET ++来模拟公路场景。OMNET ++中的结果分析
我使用cOutVector
从我的实验中收集结果。
我有超过1000个节点(车辆),并且cOutVector
单独为每个模块(节点)收集结果。但是,我需要收集整体结果。
例如,所有节点收到多少个信标?有没有收集这样的结果?
在的OMNeT ++的输出结果可以保存在两种不同类型的,并且因此,文件格式:
*.sca
) - 包含摘要数据(平均值,求和,计数,最大值,最小值)为整个模拟运行*.vec
) - 包含用于模拟运行的每个第二输出文件格式是紧耦合的与statistic
mechani细粒度的数据(时间序列的形式)短信OMNeT ++。统计数据允许您存储不同的结果记录模式,如:count,sum,mean,vector。
在你的情况下,你需要查看每个节点的sum
。
@statistic[foo](record=count,mean,vector);
这些的OMNeT ++机制看似复杂的开始,但他们是相当容易的,一旦你绕到你的头。而且,它们非常强大,可以为您的模拟的许多方面提供见解。
不幸的是,这是不可能为你的情况下,“准备使用”解不知道你的代码。
问:你的意思是你想收集所有节点的汇总统计?
如果是的话我建议你使用R,它提供了更多的功能和定制。虽然,你需要时间来学习基本操作。 在omnetpp-resultfile Github页面有教程。
例如,所有节点收到多少个信标?反正有 收集这样的结果?
您可以创建一个静态变量,并且每次节点接收到一个信标时,都会增加此变量的值。
例如: (上app_name.h)
static int beaconCount; // in protected
int app_name::beaconCount = 0; // in the and of app_name.h, before #endif.
(上app_name.cc)
void app_name::onBeacon(WaveShortMessage* wsm) {
app_name::beaconCount++; // received one beacon
}
在这之后,你可以打印的beaconCount
功能完成()或保存在保存文件中。
void app_name:: finish(){
if(strcmp(findHost()->getFullName(), "car[0]") == 0){ // For only the car[0] print the final value
cout << "Count of beacons received by all node:" << beaconCount << endl;
}
}