我正在努力尝试编写这个命令。 基本上,我想要做的是: 我有一个收藏家[自己的承载能力],垃圾箱[自己在垃圾箱里的垃圾]和仓库[自己的waste_in_warehouse]作为海龟。 收集器具有最大承载能力值。 我想让收藏家检查他们是否有携带能力,当他们找到一个垃圾箱时,如果垃圾箱在垃圾箱中<收集器最大容量,收集者将收集,如果不是,他们将忽略垃圾箱。
我想出了类似的东西:
for..of
第二个命令:
我想让收藏家把他们收集的垃圾带到仓库。但是这个变量的值可能会从一个收集器变为另一个收集器,并且可能会随着它们检查的容器数量而变化。 我希望仓库使用新的每日值对前几天已经拥有它的值求和。 我想出了一些这样的命令:
ask collectors
[
if any? bins with [distance myself <= 1]
[set carryingcapacity (carryingcapacity + (bins_holding_capacity of myself))]
]
提前谢谢。
祝福。
答案 0 :(得分:0)
如果我理解正确,那么命令#1的代码正在执行以下操作:
carryingcapacity
增加收藏家的(bins_holding_capacity) of myself
(你不能像这样使用myself
,因为你不是嵌套的问题)步骤3的逻辑似乎也是错误的,因为每次都会改变收集器的容量,而不是检查它是否已满。
应该注意的是,通过使用any?
,,你也不是在指挥这一组代理。 any?
仅返回true
或false
,对应于是否有符合条件的代理。您需要使用第二个ask
来命令这些代理。
根据你所说的,你需要做这样的事情:
ask collectors
[
ask bins with [distance myself <= 1] ;;myself refers to the collector asking
[
ifelse (waste_in_bin + [waste_in_collector] of myself) > [carryingcapacity] of myself
[;;add the waste to the collector]
[;;stop asking bins, collector is full]
]
]
这些相同的步骤也应该有助于你的第二个问题。