记者海龟/海龟x

时间:2021-07-21 16:31:32

标签: netlogo

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

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

1 个答案:

答案 0 :(得分:1)

你可以让每只海龟都有一个列表变量,在每个海龟的开头都会记录它的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
  ]
相关问题