我注意到函数 t.runNextEvent() 对模拟时间有很大的影响。为了确保所有事件都是模拟的,我多次调用它。在某些情况下(尤其是当我使用泛洪传播信息时)这还不够。
因此,如果这个数字太大,我必须等待更多时间才能获得结果。相反,如果调用次数太少,则模拟将变得毫无用处。
有什么方法可以知道正确的呼叫次数?在这里,我们必须考虑高度随机性和可以使用泛洪的事实。
我注意到函数 t.runNextEvent() 对模拟时间有很大的影响。为了确保所有事件都是模拟的,我多次调用它。在某些情况下(尤其是当我使用泛洪传播信息时)这还不够。
因此,如果这个数字太大,我必须等待更多时间才能获得结果。相反,如果调用次数太少,则模拟将变得毫无用处。
有什么方法可以知道正确的呼叫次数?在这里,我们必须考虑高度随机性和可以使用泛洪的事实。
默认情况下,TOSSIM 模拟可能会生成大量事件的低级 TinyOS 组件。了解您需要调用的确切次数的唯一方法是t.runNextEvent()
了解这些层中到底发生了什么。但这是a)可能是不可能的,b)是不必要的。
我一直在使用以下方法:
t.ticksPerSecond()
。请注意,我说的是第二个模拟 (关于 TOSSIM 的有用论文,请参见第 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