Omnet++ OMNeT++;批处理执行会弄乱结果

Omnet++ OMNeT++;批处理执行会弄乱结果,omnet++,inet,Omnet++,Inet,我正在使用omnetpp 5.6.2和inet 4.2.0以及一些自行编写的代码来模拟泛洪算法,并将它们与简单的泛洪算法进行比较。为此,我使用从3x3到9x9的主机网格进行了参数研究。然而,当我设置了一个批处理执行,它运行所有三种算法,所有网格和不同数量的相邻节点加上随机数生成器的五种不同种子,结果文件开始变得混乱 我正在使用以下参数自行运行模拟: 路由:多点中继 节点间距:700米 网格大小:8x8 种子集:0 我正在测量发送的帧和最后一个接收帧的节点之间的最大延迟,考虑到每个节点以0到15m

我正在使用omnetpp 5.6.2和inet 4.2.0以及一些自行编写的代码来模拟泛洪算法,并将它们与简单的泛洪算法进行比较。为此,我使用从3x3到9x9的主机网格进行了参数研究。然而,当我设置了一个批处理执行,它运行所有三种算法,所有网格和不同数量的相邻节点加上随机数生成器的五种不同种子,结果文件开始变得混乱

我正在使用以下参数自行运行模拟: 路由:多点中继 节点间距:700米 网格大小:8x8 种子集:0

我正在测量发送的帧和最后一个接收帧的节点之间的最大延迟,考虑到每个节点以0到15ms的随机延迟重新发送,该延迟应该在200ms左右

我将在.sca文件中获得以下输出:


    attr seedset 0
    param **.IIntelliFloodModule.typename "\"MultipointInria\""
    param **.separationX 700m
    param **.separationY 700m
    ...
    scalar EightByEight.globalSeqNumListener #maxDelayMs 208.496

但是,如果我在一批模拟中运行相同的模拟,它会给出以下数字:

    attr seedset 0
    itervar Routing "\"MultipointInria\""
    itervar netw EightByEight
    itervar sepX 700m
    itervar sepY 700m
    param **.IIntelliFloodModule.typename "\"MultipointInria\""
    param **.separationX 700m
    param **.separationY 700m
    ...
    scalar EightByEight.globalSeqNumListener #maxDelayMs 285916.716
这根本没有意义,因为在8x8网格中,帧必须以最大15个节点的速度移动到最后一个节点,即使每个节点在最大保持时间15毫秒后进行传输,也将是15x15毫秒=225毫秒。 该文件中的所有其他统计数据都完全混乱,毫无意义。每批不同的运行都像这样一团糟,而且总是至少有20次左右的运行根本没有意义。但是,如果我单独运行它们,这些数字又有意义了

TL;博士 成批运行模拟会影响输出


我在互联网上找不到任何东西,我上下阅读了手册和用户指南,我真的希望在这里找到答案,因为我的学士学位论文需要这个模拟,单独跑大约210次是不可行的。划分为较小的运行也是不可能的,因为我打算评估数据的方式将花费更长的时间。

批模拟只不过是逐个执行的单个模拟,因此理论上,批中的一个步骤应生成与单独运行该模拟场景完全相同的输出

现在我在理论上说。出于优化目的,可以在同一流程中按顺序运行多个步骤(以避免启动流程的开销。这在运行大量短期模拟时非常有用),但前提是模拟模型没有错误。没有泄漏,没有未初始化的内存等

如果您有一个未初始化的变量,您可能会得到崩溃或完全是垃圾输出


如果您使用
opp\u runall
运行,请尝试在命令行上指定
-b1
,将每次运行强制到一个单独的进程中。

共享一个可复制的示例可能有助于社区帮助您。我感谢您的回答,然而,该项目是由很多很多的文件,我不知道确切的问题所在。每个文件都相互依赖,并且都依赖于inet框架。共享整个项目或者.ini和.Ned文件会有帮助吗?或者我可以共享什么来帮助解决这个问题?