将乌龟的变量值添加到另一个乌龟的变量值

时间:2016-11-21 17:14:02

标签: netlogo

我正在努力尝试编写这个命令。 基本上,我想要做的是: 我有一个收藏家[自己的承载能力],垃圾箱[自己在垃圾箱里的垃圾]和仓库[自己的waste_in_warehouse]作为海龟。 收集器具有最大承载能力值。 我想让收藏家检查他们是否有携带能力,当他们找到一个垃圾箱时,如果垃圾箱在垃圾箱中<收集器最大容量,收集者将收集,如果不是,他们将忽略垃圾箱。

我想出了类似的东西:

for..of

第二个命令:

我想让收藏家把他们收集的垃圾带到仓库。但是这个变量的值可能会从一个收集器变为另一个收集器,并且可能会随着它们检查的容器数量而变化。 我希望仓库使用新的每日值对前几天已经拥有它的值求和。 我想出了一些这样的命令:

ask collectors 
[
  if any? bins with [distance myself <= 1] 
   [set carryingcapacity (carryingcapacity + (bins_holding_capacity of myself))]
]

提前谢谢。

祝福。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么命令#1的代码正在执行以下操作:

  1. 问收藏家代理
  2. 查看收藏家附近是否有任何垃圾箱(但没有要求此组)
  3. carryingcapacity增加收藏家的(bins_holding_capacity) of myself(你不能像这样使用myself,因为你不是嵌套的问题
  4. 步骤3的逻辑似乎也是错误的,因为每次都会改变收集器的容量,而不是检查它是否已满。

    应该注意的是,通过使用any?,你也不是在指挥这一组代理any?仅返回truefalse,对应于是否有符合条件的代理。您需要使用第二个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] 
      ]
    ]
    

    这些相同的步骤也应该有助于你的第二个问题。