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