设置特定的修补程序标识

时间:2017-03-11 19:44:57

标签: netlogo patch identifier

我想要具体的' who'补丁的(标签)。我附上了一张照片。我怎么设置它?是设置手册'谁'补丁号码?或者还有其他办法吗?

由于

picture for patch identifiers

2 个答案:

答案 0 :(得分:2)

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

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 ]

答案 1 :(得分:1)

补丁没有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