让海龟根据列表中的排名顺序移动ONCE

时间:2016-07-12 19:20:46

标签: netlogo

这个问题是基于我之前的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]]]

1 个答案:

答案 0 :(得分:2)

在行中:

ask turtles [foreach rank-list [ask ? [set heading 270 forward 1]]]

您要求每只乌龟为rank-list中的每只乌龟执行命令

只需删除ask turtles部分。

更一般的说明:foreach是列出代理集ask的内容。它们都做同样的基本操作,即为“集合”的每个项目执行命令。代理集是唯一代理的无序集合。列表是可能重复的任何类型的项目的有序集合。