当大多数代理人拥有相同的变量值时,我试图阻止我的模拟,但我真的不知道这样做。这是我的模型的创建和程序代码:
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]
但这会停止模拟,即使一只鸟有这个值,如果大多数人都有,那么,有没有正确的建议?
答案 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
中的任何元素满足此条件,请停止模拟。