1
我注意到函數t.runNextEvent()對仿真時間有很大影響。爲了確保所有事件都是模擬的,我會多次調用它。在某些情況下(特別是當我用洪泛來傳播信息時)是不夠的。如何在TinyOS和TOSSIM中確定正確的事件數量?
因此,如果這個數字太大,我必須等待更多來獲得結果。如果調用的數量太小,模擬將變得毫無用處。
有什麼方法可以知道正確的通話次數?在這裏,我們必須考慮高度隨機性和可能使用洪水的事實。
我注意到函數t.runNextEvent()對仿真時間有很大影響。爲了確保所有事件都是模擬的,我會多次調用它。在某些情況下(特別是當我用洪泛來傳播信息時)是不夠的。如何在TinyOS和TOSSIM中確定正確的事件數量?
因此,如果這個數字太大,我必須等待更多來獲得結果。如果調用的數量太小,模擬將變得毫無用處。
有什麼方法可以知道正確的通話次數?在這裏,我們必須考慮高度隨機性和可能使用洪水的事實。
默認情況下TOSSIM模擬可能產生大量事件的低級別TinyOS組件。知道確切您需要呼叫t.runNextEvent()
的次數的唯一方法是要知道這些層中到底發生了什麼。但這是a)可能不可能和b)不必要的。
我一直在使用以下方法:
t.ticksPerSecond()
找出每個模擬秒有多少個刻度。請注意,我說模擬第二(Usefull paper on TOSSIM, see top of page 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