当代理群体在Netlogo

时间:2015-10-17 19:27:18

标签: aggregate-functions netlogo agent-based-modeling

当大多数代理人拥有相同的变量值时,我试图阻止我的模拟,但我真的不知道这样做。这是我的模型的创建和程序代码:

 breed [birds bird]   
 birds-own [high]

  to setup
 create-turtles birds
  [
  set color blue
   set shape "circle 2"
  set xcor (-40 + random 25 )
  set ycor  (-40 + random 12)] 
end

   to go 
   ask birds
    [
   let Si4  [high] of one-of birds in-radius 1
   let conc (( 4 * Si4) + ( 2 * Ai4 ) )
   set high conc
   ]  
   end

我尝试使用不同的操作值来调制“高”变量,但是当至少70-80%的鸟群具有相同的“高”值时,我需要停止模拟。我尝试使用命令“modes”和“max”,如下所示:

   if max modes [high] of cells > 55 [stop]  

但这会停止模拟,即使一只鸟有这个值,如果大多数人都有,那么,有没有正确的建议?

1 个答案:

答案 0 :(得分:2)

我会这样做:

let mode  (modes [high] of turtles)

foreach mode [
  if (count turtles with [high = ?] >= (count turtles * 0.7)) [stop]
]

首先我定义列表mode,这是列表中包含最常见元素的列表high,然后对于每个列表,我检查那些具有该high的龟的数量1}}大于或等于海龟总数的70%。

如果列表mode中的任何元素满足此条件,请停止模拟。