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