Netlogo排序过程中的平局断路器



我想根据它们的"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中做到这一点。有什么建议吗?

您可以创建自己的自定义报告程序来考虑平局决胜局。下面,我创建了一个海龟比较报告器,用于检查变量是否相等,如果相等,则根据谁(作为平局决胜局的保证唯一标识符)进行比较。否则,将根据您指定的变量对海龟进行比较。

我想指出的是,你可以直接把海龟传进来,而不是列出它们的名字。

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

最新更新