netlogo - 一旦前面的海龟离开,如何在指定区域不断孵化海龟?
问题描述
我是新手netlogo 用户。最近,我正在尝试开发一个模型来模拟航站楼区域下的空中交通流量。现在我可以引导一架飞机着陆,我想不断引导更多的飞机进入终端区域。我的想法是在入口点周围定义一个区域(名为 spawnpool),如图所示。当前面的飞机离开该区域时,我孵化了一架新飞机进入。如果“生成池”中有任何飞机,则不应再孵化任何飞机。
但我不确定如何正确实现这个想法。如图所示,第一架飞机离开“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
解决方案
好的,你的问题是你有很多补丁,每个补丁都有 spawnpool?设置为真。然后,您的while
声明要求每架飞机检查patch
它是否恰好位于该补丁是否已将 spawnpool 设置为 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
推荐阅读
- mongodb - Mongoose:在多个地方创建相同的子文档
- java - 我无法让我的双向链表正确删除列表中的节点,它看起来应该可以工作,但没有。我究竟做错了什么?
- flask - Flask SQLAlchemy 连接查询返回 [
] - python - 使用 django 查询的内置方法
- excel - 如果我在复制的工作表中添加一个按钮,VBA 代码不会第二次复制工作表
- reactjs - 测试内部函数是否被调用
- visual-studio - Visual Studio 错误无法在单个 dex 文件中容纳请求的类
- android - Unity 保存密码的切换在 Unity 中完美运行,但无法按预期工作
- spring-boot - Spring Cloudstream 3 + RabbitMQ 配置到现有队列
- rxjs - rxjs 检查 outerobservable 不为空,然后才订阅内部 observable