不能 运行 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
但是,即使我们忽略了向 运行 forward
或 move-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
您会发现海龟倾向于去较暗的区域,也就是坡度较低的区域。
我试图让我的海龟在 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
但是,即使我们忽略了向 运行 forward
或 move-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
您会发现海龟倾向于去较暗的区域,也就是坡度较低的区域。