agentset中代理的顺序不匹配

时间:2017-03-01 21:05:36

标签: netlogo agentset

如果答案非常明显,我有疑问并道歉。我创建了以下代码。非常简单&简单的:

patches-own [ tl ls ls2 ls3 ls4 tsl]
turtles-own [mysize]

to setup
  clear-all
  reset-ticks
  crt 5
  ask turtles [ set heading random 360 jump random 20 set mysize random-float 1]
  asd
  inspect patch 0 0
end

to asd
  let old sum [mysize] of turtles
  ask patches [ set tl other turtles
    set tsl [self] of tl
    set ls [distance myself] of tl 
    set ls2 [distance myself ^ 2] of tl
    set ls3 [(mysize) / old] of tl
    ]
  ;print tl

end

to initial
  set heading random 360 jump random 20 set mysize 1
end

to go
  inspect patch 0 0
  ask turtles [ fd 1 set mysize mysize + random-float 1]
  let qwe random-float 1
  print qwe
  if qwe < 0.2 and count turtles > 2 [ask one-of turtles [die]]
  if qwe > 0.8 [ ask one-of patches [sprout 1 [initial]]]
  asd
  tick
end

如您所见,我在代码中有一个检查功能,下面是快照:

enter image description here 我的问题是为什么lsls2代理商出了问题。 Agentset TSL显示了海龟的顺序,因此基于它的其他代理集不应该遵循相同的顺序。

1 个答案:

答案 0 :(得分:1)

除非您以某种方式对它们进行排序,否则Netlogo将以随机顺序查询代理程序集中的代理程序。在功能上,ask tl遵循与ask turtles相同的逻辑,从代理集中检索变量也是如此。例如,如果您使用命令中心多次尝试下面的代码(在运行setupasd之后),您会注意到每次查询的代理的顺序都不一样。< / p>

ask patch 0 0 [ print [distance myself] of tl ]

所有这一切都表明补丁的“tsl”列表的创建与其他列表的创建无关。它不是有序列表,它是来自代理集“tl”的随机调用的海龟列表。获得代理集一致排序的一种方法是使用sort原语之一。