Netlogo 排序过程中的决胜局
Tie breaker in Netlogo sorting process
我想根据“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
此代码有效,我在多次执行中获得了以下结果
observer: [0 2 1 3 4]
observer: [1 0 2 3 4]
observer: [0 2 1 3 4]
问题是我希望排序过程 returns 总是相同的结果。从我的角度来看,可以添加一个决胜局,但我不知道如何在 Netlogo 中进行。有什么建议吗?
您可以创建自己的自定义报告程序来考虑决胜局。下面,我创建了一个 turtle-compare 报告器,它检查 vars 是否相等,如果相等,它们将根据 who(保证唯一标识符作为决胜局)进行比较。否则,海龟将根据您指定的变量进行比较。
我想指出,你可以直接传入海龟,而不是他们的 whos 列表。
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
我想根据“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
此代码有效,我在多次执行中获得了以下结果
observer: [0 2 1 3 4]
observer: [1 0 2 3 4]
observer: [0 2 1 3 4]
问题是我希望排序过程 returns 总是相同的结果。从我的角度来看,可以添加一个决胜局,但我不知道如何在 Netlogo 中进行。有什么建议吗?
您可以创建自己的自定义报告程序来考虑决胜局。下面,我创建了一个 turtle-compare 报告器,它检查 vars 是否相等,如果相等,它们将根据 who(保证唯一标识符作为决胜局)进行比较。否则,海龟将根据您指定的变量进行比较。
我想指出,你可以直接传入海龟,而不是他们的 whos 列表。
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