Netlogo-在特定事件后停止模拟
到目前为止,我还没有在这个网站上看到这个问题,所以如果已经回答了,请原谅我 我希望我的Netlogo模拟在某个事件之后停止(在本例中,是在所有黑色补丁被海龟转换为黄色补丁之后)。我如何才能做到这一点?以下是迄今为止我的(基本)代码:Netlogo-在特定事件后停止模拟,netlogo,Netlogo,到目前为止,我还没有在这个网站上看到这个问题,所以如果已经回答了,请原谅我 我希望我的Netlogo模拟在某个事件之后停止(在本例中,是在所有黑色补丁被海龟转换为黄色补丁之后)。我如何才能做到这一点?以下是迄今为止我的(基本)代码: to setup clear-all create-turtles amount [ setxy random-xcor random-ycor ] reset-ticks end to monitor show count patches
to setup
clear-all
create-turtles amount [ setxy random-xcor random-ycor ]
reset-ticks
end
to monitor
show count patches
show ticks
end
to go
ask turtles [
rt random 360
fd 1
pen-down
set color red
if pcolor = black [
set pcolor yellow
]
]
tick
end
谢谢。请在您的
go
程序的最开始处添加以下内容:
if (all? patches [pcolor = yellow]) [stop]
您应该使用
停止
,但要小心
stop
命令仅执行以下操作:
ask
命令中忽略其余的patches
或turtles
例如:
代码:
输出:
(turtle 0): "Flag 1: before [stop]"
(turtle 0): "Flag 2: after [stop]"
(turtle 1): "Flag 1: before [stop]"
(turtle 1): "Flag 2: after [stop]"
(turtle 3): "Flag 1: before [stop]"
(turtle 2): "Flag 1: before [stop]"
如您所见,输出包含4次标志1
和2次标志2
!stop
命令忽略了flag2
中的两个,但所有4只海龟都打印了flag1
因此,如果你想阻止其他海龟执行这个块,那么你必须在最开始的时候使用stop
命令!例如,应将上述某些过程更改为以下内容:
to some-procedure
let a 0
ask turtles
[
set a a + 1
if a > 2 [stop]
show "Flag 1: before [stop]"
show "Flag 2: after [stop]"
]
end
然后输出将只包含2次标志1
和2次标志2
:
(turtle 2): "Flag 1: before [stop]"
(turtle 2): "Flag 2: after [stop]"
(turtle 0): "Flag 1: before [stop]"
(turtle 0): "Flag 2: after [stop]"
(turtle 2): "Flag 1: before [stop]"
(turtle 2): "Flag 2: after [stop]"
(turtle 0): "Flag 1: before [stop]"
(turtle 0): "Flag 2: after [stop]"