不能 运行 Netlogo 代码 - 要求海龟环顾四周和 select 最低的补丁变量

Can't run Netlogo code - asking turtles to look around themselves and select the lowest patch variable

我试图让我的海龟在 netlogo 和 select 半径 2 中具有最低斜率变量的补丁中环顾四周 - 如果没有一个只能 select 任何补丁。

我检查了我的代码,它说一切都很好,但是当我 运行 它时,我一直收到这个错误:这个代码不能 运行 补丁 - 补丁时出错X X 运行ning ifelse - 由过程调用 move - 由过程调用 go - 由按钮“go”调用

这是我的移动代码:

    to move
    ask turtles [ask patches in-radius 2 
    [ifelse slope < 5 
       [fd 1] 
       [move-to one-of patches in-radius 2]
    ]
   ]

    end

我已经尝试过下坡和下坡4,但我的智能体似乎卡在斜坡底部,无法移动。

感谢您的帮助和建议!

谢谢 - 我的代码现在可以使用了!

因为你是让海龟去问补丁,所以问补丁里面的代码是运行补丁!一个patch不能使用turtle变量,也不知道你指的是引用请求patch的turtle的变量。

这就是“我自己”的意思。它让代理(自我)与告诉它做什么的代理交谈。您会看到诸如“设置我自己的标题 [标题]”之类的内容,但这不是您需要的内容。

我们可以像你在这里做的那样使用询问补丁,但我们真的不希望它们任何事情,这会使代码看起来更复杂.反正我们就是想找个符合乌龟需求的patch搬过去

所以相反。我们可以使用 WITH 查询附近的补丁,并将找到的补丁集存储在“补丁集”变量中。

如果有的话,我们可以移动到其中之一。

要不,我们就往前走吧。

所以

To move
Ask turtles
[
  ;; here the turtle tells patches to test the patch’s own slope
  Let good-spots patches in-radius 2 with [ slope < 5 ]
  ;; are there some patches that pass the test?
  If-else  any? Good-spots
  [ ;; Yes, pick one and go there
    move-to one-of good-spots
  ]
  [ ;; No, just move forward
    Fd 1
  ]
]
End

编辑添加:Matteo 的回答根据以下问题正确识别了实际要求:直接移动到最平坦的补丁,而不是上面的代码所做的,移动到更平坦的补丁之一,如果有的话。

Move-to min-one-of patches in-radius 2 [ slope ] 

如您所述,这与

相似但不完全相同
Downhill slope

而且这些都不能防止海龟被困在坑里。您可能需要更多代码来检测坑并跳出它们。

问题不在于变量,而在于命令:您要求 运行 forward 或 运行 move-to 的补丁,而这些是海龟的命令。

现在,为了问题的目的,还有一个问题:你说你想要

turtles to look around themselves in netlogo and select a patch with the lowest slope variable in radius 2 - and if there isn't one to just select any patch

但是,即使我们忽略了向 运行 forwardmove-to 请求补丁的问题,您的代码结构也暗示了一些非常不同的东西。您的代码似乎打算:

  • 海龟们,检查附近是否有坡度低于特定阈值的补丁;
  • 如果有,朝你已经面对的任何方向前进;
  • 如果没有,移动到附近的随机补丁。

下面的解决方案 是基于这样的假设,即您想要的就是您所说的,而不是您的代码似乎暗示的

解决方法很简单,只需要min-one-of(check it here):

to move
 ask turtles [
  move-to min-one-of patches in-radius 2 [slope]
 ]
end

作为演示,考虑这个完整的例子:

patches-own [
 slope 
]

to setup
  clear-all
  
  ask patches [
   set slope random 10 + 5
   set pcolor scale-color green slope 5 14
  ]
  
  create-turtles 10 [
   setxy random-xcor random-ycor
   set color yellow
  ]
end

to go
  ask turtles [
   move-to min-one-of patches in-radius 2 [slope]
  ]
end

您会发现海龟倾向于去较暗的区域,也就是坡度较低的区域。