1

我注意到函数 t.runNextEvent() 对模拟时间有很大的影响。为了确保所有事件都是模拟的,我多次调用它。在某些情况下(尤其是当我使用泛洪传播信息时)这还不够。

因此,如果这个数字太大,我必须等待更多时间才能获得结果。相反,如果调用次数太少,则模拟将变得毫无用处。

有什么方法可以知道正确的呼叫次数?在这里,我们必须考虑高度随机性和可以使用泛洪的事实。

4

1 回答 1

0

默认情况下,TOSSIM 模拟可能会生成大量事件的低级 TinyOS 组件。了解您需要调用的确切次数的唯一方法是t.runNextEvent()了解这些层中到底发生了什么。但这是a)可能是不可能的,b)是不必要的。

我一直在使用以下方法:

  1. 估计我希望我的模拟运行多长时间(以秒/分钟/小时为单位)。这可能取决于您正在模拟的项目要求或代码的性质。
  2. 使用 找出每模拟秒有多少滴答声t.ticksPerSecond()。请注意,我说的是第二个模拟 (关于 TOSSIM 的有用论文,请参见第 3 页顶部)
  3. 在迭代次数t.runNextEvent()的循环内调用。t.ticksPerSecond() * simulation_length尽管代码在真实节点上运行的时间与使用 TOSSIM 模拟它所需的时间之间没有直接联系,但我发现使用实时间隔对于调整所需的迭代次数非常有用具体模拟。

例子:

simLength = 60*5 #run code for simulated 5 minutes

while True:
    t.runNextEvent()  
    if t.time() > simLength * t.ticksPerSecond():
        break
于 2013-07-24T22:37:55.970 回答