2014-09-02 37 views
2

我已經在NetLogo中爲模型編寫了一個簡單的代碼。同時該模型通過文獻中的常微分方程得到了很好的研究。現在我想比較由NetLogo和Matlab獲得的一些模型圖(用於求解微分方程)。我使用「ticks」命令來增加NetLogo中的時間,其中Matlab使用時間以秒爲單位。爲了比較由NetLogo和Matlab獲得的圖表,我應該記住哪些預防措施(更改)。時間尺度混亂(NetLogo)

+0

相關:http://stackoverflow.com/q/3571485/86485 – 2014-09-02 12:03:44

回答

2

一般來說,NetLogo的繪圖的滴答軸應該是MatLab繪圖的時間軸的一些恆定標量。標量通常在模擬中被稱爲dt或「步長」:每個時間點的時間。如果您剛剛使用NetLogo來數值求解微分方程(儘管可能,推薦使用而不是),但您可能會明確地將其設置爲某些內容(就像您在MatLab中進行數值求解時一樣)。然而,在大多數NetLogo模型中,步長是隱含的。

對應於模型到步驟大小的一些常見參數:

代理
  • 速度
  • 率增長或腐爛的擴散

因此,例如,如果我們正在對速度限制爲100 kph(= (100000 m)/(60 min * 60 sec) = 27.8 m/s)的街道上的交通進行建模,並且我們的補丁大小等於1 m,且我們的代理最多每次運行0.5次,因此我們有:

27.8 m/s = (0.5 patches/tick) * (1 m/patches)/(step-size s/tick) = (0.5 m/tick)/(step-size s/tick) 

step-size s/tick = (0.5 m/tick)/(27.8 m/s) = 0.018 s/tick 

因此,在這種情況下,每個tick是大約0.018秒。

基本上,你應該嘗試在你的模型中找到一些對應於微分方程中的「每秒」參數的「每個tick」參數。然後,通過比較這些參數,您應該能夠確定每個節拍有多少秒鐘。

或者,您可以通過比較繪圖,查看它們如何排列,然後確定步驟大小來作弊。然後,您可以向後計算出模型中的哪些參數正在確定步長。