设置特定补丁标识符

Setting specific patch identifier

我想要 patches.I 的特定 'who'(标签)附上图片。我该如何设置它?是补丁号的设置手册'who'吗?或者还有其他方法吗?

谢谢

picture for patch identifiers

补丁没有 who,因为那是一个仅限海龟的变量;补丁有坐标。但是,您可以为补丁提供自己的 ID 号并使用它。如果您只需要一个 5 x 5 的世界(如您的图片所示),您可以在 Netlogo 代码中完成您想要的。例如,请参见下面的代码(请注意,我更改了世界设置 to those seen here)。但是,如果你想要一个有更多补丁的世界,我建议你从文件中读取你想要的补丁值。

globals [
  idlist
  ordered_patches
]

patches-own [
  id
]


to setup
  set idlist [ 9 10 11 12 13 24 1 2 3 14 23 8 0 4 15 22 7 6 5 16 21 20 19 18 17 ]
  set ordered_patches sort patches
end


to assign-ids

  ( foreach ordered_patches idlist [
    [ o_patch _id ] -> 
      ask o_patch [ 
        set id _id
      ]
  ]
  )

  ask patches [
    set plabel id
  ]

end

如果您不关心示例中的特定 "spiral" 序列,您可以使用 Luck 解决方案的变体,它利用了 NetLogo 的默认补丁排序顺序:

patches-own [ id ]

to setup
  clear-all
  (foreach (sort patches) (range count patches) [ [p n] ->
    ask p [ set id n ]
  ])
  ask patches [ set plabel id ]
end

或者您可以使用 sort-by 指定的稍微不同的排序顺序。

话虽如此,我不知道您的要求是什么,但我会质疑为补丁程序指定特定 ID 的想法。 NetLogo 中的大多数事情都可以在不参考代理 ID 的情况下完成。 who 数字本身是非常旧的 NetLogo 版本的遗留物,几乎不应该在现代代码中使用。

如果要引用特定的补丁,请通过坐标引用它,例如:patch -2 4.

如果您想存储补丁供将来参考,请存储对补丁本身的引用,而不是某种 ID。例如:ask turtles [ set my-patch one-of patches ]