2014-09-02 63 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”参数。然后,通过比较这些参数,您应该能够确定每个节拍有多少秒钟。

或者,您可以通过比较绘图,查看它们如何排列,然后确定步骤大小来作弊。然后,您可以向后计算出模型中的哪些参数正在确定步长。