Omnet++ OMNeT++;:使用相同种子重复模拟的不同结果

Omnet++ OMNeT++;:使用相同种子重复模拟的不同结果,omnet++,inet,Omnet++,Inet,使用过的版本:OMNeT++5.0和iNET 3.4.0 使用OMNeT++我运行了大量重复的模拟。 在某些情况下,我不了解我的系统的行为,所以我想用Qt来观察这个过程。因此,我需要重复之前模拟重复的一些特殊情况 尽管我将完全相同的配置文件与相应的种子集结合使用,但我没有得到所需的重复,因此得到了完全不同的结果。原因是什么 分析生成的日志文件的标题,只有以下几行不同: run General-107342-20170331-15:42:22-5528 attr datetime 2017033

使用过的版本:OMNeT++5.0和iNET 3.4.0


使用OMNeT++我运行了大量重复的模拟。 在某些情况下,我不了解我的系统的行为,所以我想用Qt来观察这个过程。因此,我需要重复之前模拟重复的一些特殊情况

尽管我将完全相同的配置文件与相应的种子集结合使用,但我没有得到所需的重复,因此得到了完全不同的结果。原因是什么

分析生成的日志文件的标题,只有以下几行不同:

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

所有其他参数都完全匹配。我不明白为什么结果不同。processid与这样的行为相关吗

解决问题的一些技巧:

  • 检查差异是否确实是由图形/非图形差异引起的。使用以下两种方式运行模拟:
$mysim-r 154-u Cmdenv

$mysim-r 154-u Qtenv

$mysim-r 154-u Tkenv

检查结果。几个问题可能会导致不同的结果:

    依赖C++中的未定义行为,就像你有一个(集合)集合,然后迭代它。集合的顺序未定义,它可以将模拟抛向不同的轨迹
  • 访问未初始化内存
  • 使用仅在图形运行时可用的数据,如使用@displayString属性定义的节点位置。节点位置可能会根据布局算法更改,并且布局在Cmdenv中不可用
  • 在测试模型是否在图形runtine下运行时更改模型状态,即在
    if(isGUI()){}
    blocs内
首先,我想弄清楚这是否与GUI与非GUI有关,或者更确切地说是与未定义行为的使用有关。如果Tkenv和Qtenv给出相同的结果,而Cmdenv给出不同的结果,则这是一个GUI问题。如果它们都不同,我会怀疑内存问题或未定义的行为


如果其他所有操作都失败,请在Cmdenv和Qtenv中运行模拟,并打开事件日志记录。比较日志,查看两个TrajTories开始发散的位置,并在该点附近运行调试,以查看发散的原因。

解决问题的一些技巧:

  • 检查差异是否确实是由图形/非图形差异引起的。使用以下两种方式运行模拟:
$mysim-r 154-u Cmdenv

$mysim-r 154-u Qtenv

$mysim-r 154-u Tkenv

检查结果。几个问题可能会导致不同的结果:

    依赖C++中的未定义行为,就像你有一个(集合)集合,然后迭代它。集合的顺序未定义,它可以将模拟抛向不同的轨迹
  • 访问未初始化内存
  • 使用仅在图形运行时可用的数据,如使用@displayString属性定义的节点位置。节点位置可能会根据布局算法更改,并且布局在Cmdenv中不可用
  • 在测试模型是否在图形runtine下运行时更改模型状态,即在
    if(isGUI()){}
    blocs内
首先,我想弄清楚这是否与GUI与非GUI有关,或者更确切地说是与未定义行为的使用有关。如果Tkenv和Qtenv给出相同的结果,而Cmdenv给出不同的结果,则这是一个GUI问题。如果它们都不同,我会怀疑内存问题或未定义的行为


如果其他所有操作都失败,请在Cmdenv和Qtenv中运行模拟,并打开事件日志记录。比较日志,查看两个trajctories开始发散的位置,并在该点附近运行调试,以查看发散的原因。

您是否有任何依赖于GUI或CMD环境的源代码?仅在其中一种环境下执行的操作?我猜你已经通过了?!?您是否有任何依赖于GUI或CMD环境的源代码?仅在其中一种环境下执行的操作?我猜你已经通过了?!?