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

到目前为止,我还没有在这个网站上看到这个问题,所以如果已经回答了,请原谅我

我希望我的Netlogo模拟在某个事件之后停止(在本例中,是在所有黑色补丁被海龟转换为黄色补丁之后)。我如何才能做到这一点?以下是迄今为止我的(基本)代码:

  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]"