Netlogo 在特定区域为1只海龟更改海龟品种
我试图让第一只到达特定区域(食物来源1)的海龟成为新品种(领头羊)。这就是我到目前为止试过的Netlogo 在特定区域为1只海龟更改海龟品种,netlogo,Netlogo,我试图让第一只到达特定区域(食物来源1)的海龟成为新品种(领头羊)。这就是我到目前为止试过的 ask one-of followers if followers-at -41 -22 set breed [leaders]] 这给了我一个错误:询问预期的2个输入,一个代理或代理集和一个命令块 如果在If-->[If…]之前添加一个括号,则错误将变为 如果需要两个输入,一个true false和一个命令块 现在,我在to设置过程中创建了一个领导者0[设置红色],在代码的开头创建了一个
ask one-of followers
if followers-at -41 -22
set breed [leaders]]
这给了我一个错误:询问预期的2个输入,一个代理或代理集和一个命令块
如果在If-->[If…]之前添加一个括号,则错误将变为
如果需要两个输入,一个true false和一个命令块
现在,我在to设置过程中创建了一个领导者0[设置红色],在代码的开头创建了一个领导者[领导者繁殖],因为我不希望在第一只海龟到达食物区-41-22之前存在任何领导者。我仍然不知道如何确定哪只海龟是第一个到达那个地区的。有什么建议吗
我试着这样做是为了测试我是否可以让一个追随者在一个特定的补丁中改变:
to recruit
ask followers-at -41 -22
[ask one-of followers
[set color red]]
end
首先,我在运行过程中计算了4个红色的追随者,但是代码指定了“其中一个”,它应该只影响1个追随者。然后我将其修改为:
to recruit
ask followers-at -41 -22
[ask one-of followers]
[set breed [ leaders ]
end
这看起来并没有正确的括号数,但这是我没有收到“错误无结束括号”消息的唯一方法。相反,我得到的是“询问预期的2个输入,一个代理或代理集和一个命令块。”这是括号的工作方式(注意,间距对于语法并不重要,但我构造了它,以便您可以看到代码块的开始和结束位置)。我还添加了一个
any?
:
ask one-of followers
[ if any? followers-at -41 -22
[ set breed leaders
]
]
因此,ask
要求一只名为“追随者”的海龟在外部代码块中执行所有操作。然后,随机选择的乌龟检查在坐标-41-22处的补丁上是否有来自自身的“追随者”(相对的,不是绝对的)。如果有,那么随机选择的海龟(不是指定区域上的海龟)将其品种更改为领头龟
你可能想要的是有一个追随者在补丁改变品种。这看起来像:
if any? followers-on patch -41 -22
[ ask one-of followers-on patch -41 -22
[ set breed leaders
]
]
因此,我将海龟的(相对)位置更改为海龟的(绝对)位置,并前往相关补丁上的海龟
为了提高效率(一组海龟只创建了一次而不是两次)、调试(这样您就不会意外地在两个地方有不同的坐标),执行相同代码的更好方法是:
let potential-leaders followers-on patch -41 -22
if any? potential-leaders
[ ask one-of potential-leaders
[ set breed leaders
]
]
至于是否是第一个,您需要做的就是检查您的条件中是否存在任何现有的领导者(例如没有领导者
)