如何在TinyOS和TOSSIM中确定正确的事件数量?

时间:2013-07-23 17:40:02

标签: tinyos

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

因此,如果这个数字太大,我必须等待更多才能获得结果。如果调用次数太小,则模拟变得无用。

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

1 个答案:

答案 0 :(得分:0)

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

我一直在使用以下方法:

  1. 估计我希望模拟运行的时间长度(以秒/分钟/小时为单位)。这可能取决于项目要求或您正在模拟的代码的性质。
  2. 使用t.ticksPerSecond()找出每个模拟秒数有多少刻度。请注意,我说模拟第二个 (Usefull paper on TOSSIM, see top of page 3)
  3. 在迭代t.runNextEvent()次的循环内调用t.ticksPerSecond() * simulation_length。虽然代码在真实节点上运行的时间与使用TOSSIM模拟它所需的时间之间没有直接联系,但我发现使用实时间隔非常适合调整一个所需的迭代次数。特别模拟。
  4. 示例:

    simLength = 60*5 #run code for simulated 5 minutes
    
    while True:
        t.runNextEvent()  
        if t.time() > simLength * t.ticksPerSecond():
            break