В модели землепользования я хочу подсчитать размер зеленых и красных кластеров, как показано на этом изображении:
Используемый кодочень похоже на то, что можно найти в «примере Patch Clusters» из библиотеки моделей, с той лишь разницей, что он учитывает только красные и зеленые патчи.Но когда я запускаю его, Netlogo заявляет об ошибке «переполнение стека (слишком глубокая рекурсия), когда наблюдатель запускает ASK, вызванный процедурой FIND-CLUSTERS».Вот процедура find-clusters:
to find-clusters
loop [
;; pick a random patch that isn't in a cluster yet
let seed one-of patches with [cluster = nobody and pcolor = 64 or
pcolor = 14]
;; if we can't find one, then we're done!
if seed = nobody
[ show-clusters
stop ]
;; otherwise, make the patch the "leader" of a new cluster
;; by assigning itself to its own cluster, then call
;; grow-cluster to find the rest of the cluster
ask seed
[ set cluster self
grow-cluster ]
]
display
end
и процедура grow-cluster:
to grow-cluster ;; patch procedure
ask neighbors4 with [(cluster = nobody) and
(pcolor = [pcolor] of myself)]
[ set cluster [cluster] of myself
grow-cluster ]
end
Что означает сообщение и как его исправить?Спасибо.