Netlogo 如何从依赖于属性的代理集中进行选择?

Netlogo 如何从依赖于属性的代理集中进行选择?,netlogo,Netlogo,我有一个模型,其中雄性海龟根据阈值进行分类,如下所示: ifelse(condition > threshold) [set status 0 ] [set status 1] 我想数一数达到这个临界值的每一位女性的潜在男性伴侣。我对它进行了编码,这样雌性的探测半径就被限制在10片范围内。如果没有男性达到该阈值,则FR应为0,否则应为一个比例 ask turtles with [sex = "female"] [if any? turtles with [sex

我有一个模型,其中雄性海龟根据阈值进行分类,如下所示:

    ifelse(condition > threshold)  [set status 0 ] [set status 1] 
我想数一数达到这个临界值的每一位女性的潜在男性伴侣。我对它进行了编码,这样雌性的探测半径就被限制在10片范围内。如果没有男性达到该阈值,则FR应为0,否则应为一个比例

      ask turtles with [sex = "female"] [if any? turtles with [sex = "male"] 
      in-radius 10 [ set potentialMates turtles with [sex = "male"] in-radius 10]
        ifelse any?  potentialMates with [anadromousM = 1] 
        [set FR count potentialMates with [anadromousM = 1] / count potentialMates ]
        [set FR 0]]
当我运行此命令时,我会得到第二个
any?

有吗?预期输入为agentset,但改为获取数字0


我哪里做错了?希望你能帮忙

使用不同的缩进更容易看到这一点。以下是您的代码(包装在过程名称中)

如您所见,无论
的结果如何(如果有的话),都会对
ifelse
进行测试(针对每只雌海龟)?半径为10的[sex=“male”]海龟。想象一下,如果
为假,那么潜在伴侣代理集永远不会与公海龟一起创造。因此出现了错误。您还没有向我们展示第一次实例化PontialMates的代码——假设它是一个全局变量,那么它的值将为0

我想在半径内没有雄性的情况下,你希望FR为0。那样的话,试试这个

to find-mate
  ask turtles with [sex = "female"]
  [ ifelse any? turtles with [sex = "male"] in-radius 10
    [ set potentialMates turtles with [sex = "male"] in-radius 10
      set FR count potentialMates with [anadromousM = 1] / count potentialMates
    ]
    [ set FR 0]
  ]
end

如果没有anadromousM=1的潜在配偶,那么分子是0,0/N是0。

嗨,谢谢你的回答
potentialMates
是turtles自己的
variable。在这种情况下,它是在turtle创建时创建的,并被赋予值0(这是NetLogo的默认变量值)。我会更新答案。
to find-mate
  ask turtles with [sex = "female"]
  [ ifelse any? turtles with [sex = "male"] in-radius 10
    [ set potentialMates turtles with [sex = "male"] in-radius 10
      set FR count potentialMates with [anadromousM = 1] / count potentialMates
    ]
    [ set FR 0]
  ]
end