netlogo乌龟搜索功能陷入循环Netlogo

时间:2015-04-17 14:11:19

标签: netlogo agent

我有一个搜索功能,可以让海龟搜索出首选补丁'在他们自己面前的一条直线上设定距离。我使用循环创建他们搜索的补丁数组。代码经常卡在循环中(我想!)。我不确定为什么会发生这种情况...我想编码告诉海龟在补丁中搜索首选补丁,有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]

1 个答案:

答案 0 :(得分:1)

random 20可能会返回0或1,然后您在循环中对move-distance做的第一件事就是从中减去1,因此move-distance = 1检查会失败,因为它&#39 ; s已低于1。

尝试将move-distance = 1替换为move-distance <= 1,和/或将random 20替换为2 + random 18