netlogo:在这里询问补丁上的海龟品种是否相同
当两个品种相同的海龟在同一块地上时,它们应该繁殖 因此,一只海龟应该能够评估它是否独自在一块地上,如果不是,另一只海龟是否是同一品种。 这就是我尝试过的:netlogo:在这里询问补丁上的海龟品种是否相同,netlogo,Netlogo,当两个品种相同的海龟在同一块地上时,它们应该繁殖 因此,一只海龟应该能够评估它是否独自在一块地上,如果不是,另一只海龟是否是同一品种。 这就是我尝试过的: ask turtles [ if any? turtles-on patch-here with [ breed != [ breed ] of myself ] [ ; do something ] ] 但是我只是没有弄清楚,所以这里的海龟补丁对于和来说是正确的。 我该如何正确
ask turtles [
if any? turtles-on patch-here with [ breed != [ breed ] of myself ] [
; do something
]
]
但是我只是没有弄清楚,所以这里的海龟补丁
对于和来说是正确的。
我该如何正确地做到这一点
提前感谢您的帮助
编辑:我知道如何处理多个ifs或ELSEIF,但我正在处理的模型相对较大,因此我正在尝试尽可能高效地编程您遇到了什么错误或它实际上在做什么?尝试在括号中添加括号,以帮助NetLogo确定优先级。每当我在使用
的之前进行组合代理设置时,我通常会将一些括号括起来,这样您的行就会是(如果有的话)?(这里是补丁上的海龟)和我的[品种!=[品种]
谢谢!使用括号(海龟在补丁上)
会显示一条错误消息:只有观察者可以询问所有海龟的集合。
NetLogo不允许海龟询问所有海龟的某件事-只有观察者可以这样做。如果没有看到您的代码,很难知道,但是,从错误消息来看,您很可能让海龟执行ask-turtles
。一旦你让观察者提出这个问题,小心不要“双重复制”。如果A用B启动复制,那么B不应该被允许用A(或任何其他人?)启动复制。一个简单的方法可能是将一个标志作为海龟自己的变量,比如说reproducted?
,您首先为所有海龟设置false
。然后,当两只海龟繁殖时,将它们的繁殖?
设置为true
。然后你只会问那些繁殖了的海龟false
在同一块地上寻找同样品种的海龟,它们也有繁殖=false
。