如何将补丁 - 这里添加到netlogo中的列表?

时间:2015-03-29 11:36:34

标签: netlogo

或者我如何为补丁集添加坐标? 我想创建一个列表并添加每个访问的补丁作为列表的另一个元素(使用lput),但是每次都替换补丁 - 这里我尝试使用补丁集,但我不知道如何添加最后的新补丁并在那里添加坐标。

到目前为止,这是我的代码:

globals [ frontier frontier2 ]

breed [squares square]
breed [circles circle]

to setup
  ca
  set-default-shape squares "square"
  set-default-shape circles "circle"
  create-breeds
  reset-ticks
end

to create-breeds
    create-squares 1 [
      setxy 0 0  ]
    create-circles 1 [
      setxy 5 5 ]
end

to go
  ask squares [
    fd 1
    set frontier []
    set frontier lput patch-here frontier
    show frontier
  ]
  ask circles [
    fd 1
    set frontier2 patch-set patch-here
    show frontier2
  ]
  tick
end

这就是指挥中心所展示的内容:

“(方0):[(补丁7 -3)]

(圈1):( agentset,1 patch)“

我期待类似(方块0)的东西:[(补丁0 0)(补丁1 0)(补丁2 0)]

1 个答案:

答案 0 :(得分:3)

它每次都会替换补丁,因为您每次都在go程序中明确重新初始化列表:

set frontier []

只需将该行移至setup程序中即可!

至于将补丁添加到补丁集而不是列表中,正确的语法应该是:

set frontier2 (patch-set frontier2 patch-here)

但我不建议您使用它,因为它需要每次都重建补丁集,因此比使用列表和lput要慢。此外,总是以随机顺序访问补丁集,我怀疑这不是你想要的。