如何在此处制作 list/array 海龟补丁?

How to make a list/array of turtles-on patch-here?

我没有netlogo的经验,所以我想问一下是否有人知道如何在patch-here上设置乌龟的最大能量。如果我在补丁上有一个代理 y 和 3、2 或 4 个 x's,我想让代理 y 保持这 3 个中最大的能量,我知道我必须做一个循环但我不知道有多少循环x 型特工在这个补丁中?

breed [ y ys]
breed [ x ys]
x-own[ energy]
y-own [ energy ]

    to move-y
    ask y[
      if count x-on patch-here > 2
      [
       set breed x
       ;anyone can help ?
       let energy one-of x-on patch-here ; this is wrong because i dont want a random 
      ]
    ]
    end

希望你能帮助我=)

首先,您可能不应该考虑循环。 NetLogo 有许多在代理集(如 askof)和列表(如 foreachmap)上运行的原语,但你几乎不必编写显式循环使用您递增的索引。

关于您的代码的另一评论:您在声明品种时颠倒了复数和单数名称。复数必须在前,所以应该是 breed [ xs x ] 而不是 breed [ x xs ].

现在,关于您的具体问题:您不需要 patch-here,因为 NetLogo 还提供了一个 <breeds>-here 原语,可以更直接地满足您的需求。

至于获取路径上所有xs的最大能量,你可以简单地使用max原语:

breed [ xs x ]
breed [ ys y ]
xs-own [ energy]
ys-own [ energy ]

to move-y
  ask ys [
    if count xs-here > 2 [
      set energy max [ energy ] of xs-here
      set breed xs
    ]
  ]
end

请注意,结果可能会有所不同,具体取决于您是在设置 energy 之前还是之后将当前 y 的品种更改为 xs。我会让你试着找出原因。