是否可以在同一个let程序中使用“min-one-of”和“in-cone”/“in-radius”?

问题描述 投票:0回答:1

在我的模型中,我试图通过首先在半径内搜索来使一只乌龟(蝙蝠)移动到另一种乌龟(虫子)。我希望蝙蝠能够扫描其半径(视觉),然后检测该区域内最近的虫子,然后朝它移动。

我已经尝试了下面的代码(视觉半径和视角是滑块):

let prey min-one-of bugs in-cone vision-radius vision-angle
  ask bats [move-to prey]

但是,min-one-of 返回一个错误,指出它需要一个主体集和一个数字块才能工作。于是尝试了以下代码:

let prey min-one-of bugs [in-cone vision-radius vision-angle]
  ask bats [move-to prey]

此代码返回错误,因为“in-cone”需要在左侧有输入,这是错误。

我不知道是否可以同时使用 min-one-of 和 in-radius/in-cone ,或者是否有其他方法来创建此过程?

我感谢您提供的任何帮助:)

netlogo agent-based-modeling
1个回答
0
投票

min-one-of
返回错误,因为缺少报告者。
in-cone vision-radius vision-angle
创建应报告的最小值的代理集。
min-one-of
还需要一名记者,因为它不特定于距离。它可以以最少的报告者的速度报告代理,例如
xcor
。要拥有最近的代理,您需要创建距离报告器 ->
[distance myself]

您还必须检查

prey
不会为空。

这是应该解决您正在寻找的问题的代码

to hunt
  ask bats [
    let prey min-one-of bugs in-cone vision-radius vision-angle [distance myself]
    if prey != nobody [move-to prey]
  ]
end
© www.soinside.com 2019 - 2024. All rights reserved.