我想根据他们的" var"来对海龟进行分类。值。我的代码是:
globals [liste]
turtles-own [var]
to setup
clear-all
create-turtles 5 [setxy (random 5) (random 5)]
ask turtle 0 [set var 1]
ask turtle 1 [set var 1]
ask turtle 2 [set var 1]
ask turtle 3 [set var 2]
ask turtle 4 [set var 3]
set liste [who] of turtles
set liste sort-by [([var] of turtle ?1) < ([var] of turtle ?2)] liste
show liste
end
此代码正常运行,我在多次讨论中获得了以下结果
观察员:[0 2 1 3 4]
观察员:[1 0 2 3 4]
观察员:[0 2 1 3 4]
我希望排序过程返回的问题始终是相同的结果。从我的角度来看,可以添加一个平局,但我不知道如何在Netlogo中做到这一点。有什么建议吗?
答案 0 :(得分:1)
您可以创建自己的自定义记者,该记者会考虑打破平局。下面,我创建了一个海龟比较报告器,它检查变量是否相等,如果是,他们会根据谁(保证唯一标识符作为平局破坏者)进行比较。否则,通过您指定的变量比较海龟。
我想注意,你可以直接传递海龟,而不是他们的一个人的名单。
to setup
...
show sort-by turtle-compare turtles
...
end
to-report turtle-compare [t1 t2]
report ifelse-value ([var] of t1 = [var] of t2)
[[who] of t1 < [who] of t2]
[[var] of t1 < [var] of t2]
end