2017-04-12 25 views
0

二手版本:的OMNeT ++ 5.0與3.4.0的iNET的OMNeT ++:仿真重複不同的結果使用相同的種子


使用的OMNeT ++我運行了一些仿真的重複數量較大。 在某些情況下,我不明白我的系統的行爲,所以我想看看使用Qt的程序。因此,我需要重複以前模擬重複的一些特殊情況。

即使我使用完全相同的配置文件與相應的seedset組合,我沒有得到所需的重複,所以我得到完全不同的結果。這可能是什麼原因?

判斷所生成的記錄文件的報頭中,也有僅在以下各行的差異:

run General-107342-20170331-15:42:22-5528 
attr datetime 20170331-15:42:22 
attr processid 5528 

所有其他參數精確匹配。我不明白爲什麼結果不一樣。 processid與這樣的行爲有關嗎?

+0

您是否有任何GUI或CMD環境相關的源代碼?只能在這些環境之一下執行的事情? 我猜你已經通過[在手動的OMNeT實驗複製節]去(https://omnetpp.org/doc/omnetpp/manual/#sec:config-sim:experiment-measurement-replication)? ? –

回答

2

一些提示,以明確的問題:

  • 檢查的差異確實是由圖形化/非圖形化的差異造成的。既運行你的模擬:

$ mysim -r 154 -u Cmdenv

$ mysim -r 154 -u Qtenv

$ mysim -r 154 -u Tkenv

檢查結果。不同的結果可能由以下幾個問題引起:

  • 依靠C++中未定義的行爲,就像你有一個(集合)集合並迭代它。集合的順序是不確定的,它可以拋出模擬到不同的軌跡
  • 訪問初始化內存
  • 使用可用的數據只在圖形的運行時,如使用由@displayString屬性中定義的節點的位置。節點位置可能會根據佈局算法而改變,並且佈局在Cmdenv中不可用。更改模型狀態,同時測試模型是否在圖形runtine下運行,即if (isGUI()) {}區塊內部。

首先,我會試圖弄清楚這是與GUI還是非GUI有關,還是使用未定義的行爲。如果Tkenv和Qtenv在Cmdenv不同時給出相同的結果,那麼它是一個GUI-nonGUI問題。如果他們都不同我會懷疑內存問題或未定義的行爲。

如果一切都失敗,請在Cmdenv和Qtenv中運行模擬並打開事件日誌記錄。比較日誌並查看兩個trajctories開始發散的位置,然後調試運行到該點以查看發散的原因。

相關問題