问一个不同的海龟变量

时间:2017-03-14 17:39:47

标签: variables netlogo agents

我是Netlogo的新手,并且深陷其中。每只乌龟都有一个变量 - 菌落,这个数字在1-9之间。我想要一个乌龟脸朝着它最近的邻居,它的殖民地数量与它相同。然后移动(该位工作正常)。 目前我有

let newTurtle min-one-of other turtles [10]
let variableA [ask newTurtle [colony]]
ifelse colony = variableA newTurtle [face newTurtle] [rt random 360]
move-forward

这样可以让所有海龟进入一​​个中心位置:

let newTurtle min-one-of other turtles [10]
face newTurtle
move-forward

我尝试过的是让一只乌龟向其邻居询问它的殖民地,如果有相同的移动,否则随机移动。 “期望的字面值”目前是关于第二行的错误。 我知道这不是我想要的,但我不能让这个工作。任何有关这个或我的主要问题的帮助将不胜感激!!感谢

1 个答案:

答案 0 :(得分:3)

您的主要问题可能源于您在第一个区块中使用min-one-of。查看dictionary entry for that primitive并注意它需要记者作为其参数之一,因此“[10]”不起作用。此外,min-one-of实际上要求报告者的最低值。所以,我认为你需要稍微改变一下。您可以将其分解为以下步骤。首先,让代表龟识别那些与它相同的殖民地的海龟:

ask turtles [
    let my_colony other turtles with [ colony =  [colony] of myself ]

这将使得表演龟创造一个名为“my_colony”的临时变量,该变量由世界上所有与表演乌龟属于同一殖民地的海龟组成。然后,您希望代理乌龟选择该组中最接近的成员。在相同的代码块中:

let target min-one-of my_colony [ distance myself ]

这里,min-on-of的代理人集是“my_colony”,而记者是“[我自己的距离]”,它返回“my_colony”中与表演乌龟的距离最小值的乌龟。接下来,检查以确保目标存在;否则,如果特定殖民地中只有一只乌龟,您将收到错误。在相同的代码块中:

if target != nobody [
      face target
      fd 1
    ]

希望这可以让你开始,如果有任何需要澄清的话,请告诉我。