记者的不同结果turtles/turtle x

Different results of reporters turtles/turtle x

我创建了一个意见动态模型,效果很好。但现在我想看看我所有海龟的意见如何变化。所以我创建了记者“海龟的报告[意见]”。当我把它放在行为空间中时,我得到了与我观察到的不符的疯狂跳跃的结果。如果我用像“0 号海龟的报告 [意见]”这样的个体海龟来测试它,我会得到我期望看到的平滑曲线进展。

有谁知道为什么会这样?如果我必须将每只乌龟单独放入我的行为空间,我会发现它相当笨拙,因为我有滑动的 Agentsnumbers。

你可以让每只海龟都有一个列表变量,在列表变量的开头记录每只海龟的ID。在每一步,每只海龟都会附加其 opinion 值。

然后你可以有一个全局变量,你将使用它作为列表的列表,在模拟结束时每只海龟将附加它自己的列表。

在 BheaviorSpace 中,您只需在每个实验结束时使用一个报告器(列表列表)运行。

请参阅下面的工作示例:

globals [
 results 
]

turtles-own [
 opinion
 my-list
]

to setup
  clear-all
  reset-ticks
  
  set results (list)
  
  create-turtles 3 [
   set opinion random 10
   set my-list list self opinion
  ]
end

to go
  if (ticks = 5) [
    ask turtles [
     set results lput my-list results 
    ]
    stop
  ]
  
  ask turtles [
   set opinion opinion + 1
   set my-list lput opinion my-list
  ]
  tick
end

在每个 运行 结束时,results 记者将看起来像:

[[(turtle 2) 3 4 5 6 7 8] [(turtle 0) 0 1 2 3 4 5] [(turtle 1) 5 6 7 8 9 10]]

请注意,这样,results 中的列表将始终以随机顺序排列。 如果您有兴趣根据某种标准对它们进行排序,您可以这样做。

下面的示例将 if (ticks = 5) 语句更改为根据海龟的 ID 排序 results,但您可以只对您感兴趣的任何特征使用 sort

if (ticks = 5) [
    let sorted-turtles sort turtles
    foreach sorted-turtles [this-turtle -> ask this-turtle [set results lput my-list results]]
    
    stop
  ]