我是netlogo的新手。最近,我正在尝试开发一个模型来模拟终端区下方的空中交通流量。现在,我能够引导一架飞机降落,并且我想不断地引导更多飞机进入终端区。我的想法是在入口点周围定义一个区域(名为spawnpool),如图所示。当前一架飞机离开该地区时,我孵化了一架新飞机进入。如果“派出所”中有飞机,则不应再孵化任何飞机。
但是我不确定如何正确实现这个想法。如图所示,第一架飞机离开“生成池”区域后。出现了数以吨计的飞机,我不确定这个错误是由于熟练程度不足或不适合此目的的想法造成的。真诚地寻求有关此问题的见解。
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
答案 0 :(得分:2)
好的,您的问题是每个spawnpool都有很多补丁?设置为true。然后,您的while
语句要求每架飞机检查patch
,它是否正好位于该修补程序的派生池是否设置为true的情况。因此,他们不断孵化新飞机。您真正想做的是在没有一个生成池的情况下创建一架新飞机吗?补丁上有一架飞机。这涉及许多更改:
sprout
或create
而不是hatch
飞机,这样它就不会继承其父公司的属性while
,因为while
在不提高时钟的情况下连续运行我无法对此进行测试,因为我需要创建品种等才能运行模型。但是您想要类似的东西:
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