一旦前面的海龟离开,如何在限定区域内不断孵化海龟?

时间:2018-07-31 15:20:16

标签: netlogo

我是netlogo的新手。最近,我正在尝试开发一个模型来模拟终端区下方的空中交通流量。现在,我能够引导一架飞机降落,并且我想不断地引导更多飞机进入终端区。我的想法是在入口点周围定义一个区域(名为spawnpool),如图所示。当前一架飞机离开该地区时,我孵化了一架新飞机进入。如果“派出所”中有飞机,则不应再孵化任何飞机。

Displayed PNG in OP

但是我不确定如何正确实现这个想法。如图所示,第一架飞机离开“生成池”区域后。出现了数以吨计的飞机,我不确定这个错误是由于熟练程度不足或不适合此目的的想法造成的。真诚地寻求有关此问题的见解。

to setup-spawnpool
  ask patches
  [set spawnpool? (pxcor > -8.4  and pxcor < -5.4 and pycor < 5.8 and pycor > 
3.8 )  ]
end


to new-aircraft-approaching0
 ask aircrafts [
    while [spawnpool? = false ]
 [hatch-aircrafts 1
      [ set color black 
        set size 0.7
        setxy -7.4 4.8
        route-check-02]]]
end

1 个答案:

答案 0 :(得分:2)

好的,您的问题是每个spawnpool都有很多补丁?设置为true。然后,您的while语句要求每架飞机检查patch,它是否正好位于该修补程序的派生池是否设置为true的情况。因此,他们不断孵化新飞机。您真正想做的是在没有一个生成池的情况下创建一架新飞机吗?补丁上有一架飞机。这涉及许多更改:

  1. sproutcreate而不是hatch飞机,这样它就不会继承其父公司的属性
  2. 您不应该使用while,因为while在不提高时钟的情况下连续运行
  3. 您需要问所有补丁,是否有一架飞机

我无法对此进行测试,因为我需要创建品种等才能运行模型。但是您想要类似的东西:

to setup
  clear-all
  setup-spawnpool
  ...
  reset-ticks
end

to go
  ...
  new-aircraft-approaching0
  ...
  tick
end

to setup-spawnpool
  ask patches
  [set spawnpool? (pxcor > -8.4  and pxcor < -5.4 and pycor < 5.8 and pycor > 3.8 )
  ]
end

to new-aircraft-approaching0
  let aircraft-source patches with [ spawnpool? ]
  if not any? aircrafts-on aircraft-source
  [ ask one-of aircraft-source
    [ sprout-aircrafts 1
      [ set color black 
        set size 0.7
        setxy -7.4 4.8
        route-check-02]
       ]
     ]
   ]
end