我的Netlogo代码在前几百个刻度中快速运行,然后速度逐渐降低(每个新刻度需要越来越多的时间才能继续)。
我已将问题缩小到这行代码:
ask turtles [
(foreach vectorX indexes
[
set minilist ?1
set minilist map customProcedure minilist <-- this line
set vectorX replace-item ?2 vectorX minilist
])
]
如果评论此行,则速度不会降低。它基本上是将自定义程序应用于&#34; minilist&#34;的每个元素,而这个自定义程序只是一系列&#34; ifelse&#34;条件。
一个有趣的现象是,如果我暂停我的模拟(我点击&#34; Go&#34;)并从同一个地方重新启动它(我点击&#34; Go&#34;再次),我得到原来快速回来了。就好像这行代码消耗了大量内存,但是当我停止模拟时,这个内存会被重置。
你知道造成这个问题的原因吗?