是否有任何代码可以使模拟在netlogo中运行得更快,而不是在设置附近使用滑块?我的代码需要做的是模拟人群行为,如果海龟的数量在100只左右就可以了,但是当我把海龟的数量增加到300-800只时,模拟需要很长时间才能完成。每只蜱虫从0到1的计数也需要很长时间,直到所有海龟死亡。我怀疑造成模拟缓慢的一件事是当要求海龟撤离时。在没有撤离规定的情况下,一切都很顺利,甚至设定了海龟的最大数量。有没有其他方法可以编写疏散规则,这样它可以运行得更快?谢谢
to go
ask turtles [wander fd 0.01]
if emergency? = true [move]
if all? turtles [ pcolor = red ] ;stops simuation
[stop]
tick
end
to wander
[ do..something]
end
to move
set time-to-evacuate time-to-evacuate + 1
ask turtles [avoid-obstacles fd 0.1]
ask turtles [follow-leader fd 0.1]
ask turtles [flock fd 0.1]
ask turtles with [pcolor != red] [evacuate fd 0.1]
ask turtles with [pcolor = red][die]
end
to evacuate
ask turtles with [color = black ]
[let beings-seen patches in-cone 10 135 with [pcolor = red]
if any? beings-seen
[ let target one-of beings-seen
face target]]
ask turtles with [color = white ]
[let beings-seen patches in-cone 5 135 with [pcolor = red]
if any? beings-seen
[ let target one-of beings-seen
face target]]
end
to avoid-obstacles
[do something]
end
to follow-leader
[do something]
end
to flock
[do something]
end
在move
过程中,您有:
ask turtles with [pcolor != red] [ evacuate ... ]
然后在evacuate
中,您有:
ask turtles with [color = black] [ ... ]
evacuate
已经由所有的非红海龟运行,所以每一只非红海龟都会要求每一只黑海龟在每一次滴答声中做点什么。
我认为你不是有意的。
我不得不猜测一下你的意图,但我认为如果在evacuate
中,你用if
:替换ask
if color = black [ ... ]
这可能更接近你的意思。