我使用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;
}
}