netlogo海龟搜索功能陷入循环netlogo

netlogo海龟搜索功能陷入循环netlogo,netlogo,agent,Netlogo,Agent,我有一个搜索功能,海龟们可以在自己前面的一条直线上搜索出一个固定距离的“首选补丁”。我创建了他们使用循环搜索的补丁数组。代码经常卡在循环中(我想!)。我不知道为什么会这样。。。我想编写代码,告诉海龟们在补丁中搜索一个首选补丁,如果不是在搜索区域的随机补丁上着陆,有70%的几率在其中一个上面着陆。如果不存在首选补丁,请在搜索区域的任何补丁上着陆 海龟们并不总是移动,所以我的代码显然出了问题 let move-distance random 20 loop [set search-area (pat

我有一个搜索功能,海龟们可以在自己前面的一条直线上搜索出一个固定距离的“首选补丁”。我创建了他们使用循环搜索的补丁数组。代码经常卡在循环中(我想!)。我不知道为什么会这样。。。我想编写代码,告诉海龟们在补丁中搜索一个首选补丁,如果不是在搜索区域的随机补丁上着陆,有70%的几率在其中一个上面着陆。如果不存在首选补丁,请在搜索区域的任何补丁上着陆

海龟们并不总是移动,所以我的代码显然出了问题

let move-distance random 20
loop [set search-area (patch-set patch-ahead move-distance)
set move-distance move-distance - 1
if move-distance = 1 [stop]]
let preferred-patches search-area with [flight-tendency = 0.05]
ifelse any? preferred-patches [
ifelse random-float 1 < 0.7 [
  set target one-of top-patches move-to target] 
[set target one-of other-patch move-to target]]
[set target one-of other-patch move-to target]
随机移动距离20
循环[设置搜索区域(面片设置面片前进移动距离)
设置移动距离移动距离-1
如果移动距离=1[停止]]
使用[飞行趋势=0.05]让首选补丁搜索区域
还有别的吗?首选补丁[
ifelse随机浮动1<0.7[
设置目标顶部补丁之一移动到目标]
[将另一个修补程序的目标设置为移动到目标]]
[将其他修补程序中的一个设置为目标移动到目标]

random 20
可能返回0或1,然后您在循环中对移动距离所做的第一件事是从中减去1,因此移动距离=1检查将失败,因为它已经低于1

尝试将
move distance=1
替换为
move distance