netlogo 海龟搜索功能陷入循环 Netlogo
netlogo turtle search function getting stuck in loop Netlogo
我有一个乌龟的搜索功能,可以在它们前方的一条直线上搜索'preferred patches'一段设定的距离。我创建了他们使用循环搜索的补丁数组。代码经常陷入循环(我认为!)。我不确定为什么会发生这种情况......我想编写代码告诉海龟在补丁中搜索首选补丁,有 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]
random 20
可能 return 0 或 1,然后在循环内对 move-distance
做的第一件事就是从中减去 1,因此 move-distance = 1
检查将失败,因为它已经低于 1。
尝试将 move-distance = 1
替换为 move-distance <= 1
,and/or 将 random 20
替换为 2 + random 18
。
我有一个乌龟的搜索功能,可以在它们前方的一条直线上搜索'preferred patches'一段设定的距离。我创建了他们使用循环搜索的补丁数组。代码经常陷入循环(我认为!)。我不确定为什么会发生这种情况......我想编写代码告诉海龟在补丁中搜索首选补丁,有 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]
random 20
可能 return 0 或 1,然后在循环内对 move-distance
做的第一件事就是从中减去 1,因此 move-distance = 1
检查将失败,因为它已经低于 1。
尝试将 move-distance = 1
替换为 move-distance <= 1
,and/or 将 random 20
替换为 2 + random 18
。