这个问题是基于我之前的2.我一直在努力为我的海龟获得排名顺序列表,按自有因素排名。然后他们需要按排名顺序移动。该部分完美无缺,代码可以在Assigning turtles a ranked number in netlogo
找到问题:使用该代码,它们按正确的顺序移动,但不是移动一次,程序似乎不断为列表中的每只乌龟重新运行它,因此10世界中的第一只乌龟结束向上移动10次,第二次移动9次等等。
我对此完全感到困惑,但我需要它停下来。他们应该移动一次并完成那个滴答。想法?
列表创建代码是:
let rank-list sort-on [sociability] turtles
let ranks n-values length rank-list [ ? ]
(foreach rank-list ranks [ask ?1 [set social_rank ?2] ] )
;;you can replicate the problem with this movement proc, or the full code in the link above
ask turtles [foreach rank-list [ask ? [set heading 270 forward 1]]]
答案 0 :(得分:2)
在行中:
ask turtles [foreach rank-list [ask ? [set heading 270 forward 1]]]
您要求每只乌龟为rank-list
中的每只乌龟执行命令。
只需删除ask turtles
部分。
更一般的说明:foreach
是列出代理集ask
的内容。它们都做同样的基本操作,即为“集合”的每个项目执行命令。代理集是唯一代理的无序集合。列表是可能重复的任何类型的项目的有序集合。