Как я могу увеличить ускорение моделирования моей модели пути с наименьшей стоимостью

Используя расширение сети, следующий код создает путь с наименьшей стоимостью между двумя полигонами (состоящими из нескольких патчей):

to calculate-LCP [ID-polygon-1 ID-polygon-2] 
let path []
let path-cost -1

;;;;;;;;;;;;;;;;;;;;;;;;
;; Define polygon edges
ask patches with [plabel != ID-polygon-1] [
 ask neighbors with [plabel = ID-polygon-1] [
  ask nodes-here [
    set color red ] ] ]

ask patches with [plabel != ID-polygon-2] [
 ask neighbors with [plabel = ID-polygon-2] [
  ask nodes-here [
    set color red ] ] ]

;;;;;;;;;;;;;;;;;;;;;;;;
;; Build least-cost path
ask nodes with [color = red] [
 foreach sort nodes-on patches with [ID-polygon = ID-polygon-1] [ 
  let node-on-polygon-1 ?  
  foreach sort nodes-on patches with [ID-polygon = ID-polygon-2] [ 
   let node-on-polygon-2 ? 

   ask node-on-polygon-1 [ 
    let cost nw:weighted-distance-to node-on-polygon-2 "link-cost" 
    if path-cost = -1 or cost < path-cost [ 
     set path-cost cost 
     set path nw:weighted-path-to node-on-polygon-2 "link-cost" ] ] ] ] ] 

;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Draw least-cost path
foreach path [ ;; trace le least-cost path 
  ask ? [ set color red
    set thickness 0.2 ] ]
end 

Я применил этот код с двумя полигонами, которые представлены черными прямоугольниками на рисунке. Используя расширение профилировщика, этот код работал в течение 14 минут.

Для каждого волка я хотел бы построить путь с наименьшей стоимостью между полигоном, где есть волк, и всеми полигонами, которые расположены в радиусе 3 км вокруг волка. Вот мой код:

ask wolves [ 
 set my-list-of-polygons-in-buffer ( [plabel] of patches in-radius 3 ) 
 set my-list-of-polygons-in-buffer remove-duplicates my-list-of-polygons-in-buffer 
 set my-list-of-polygons-in-buffer remove [plabel] of patch-here my-list-of-polygons-in-buffer 
 set my-list-of-polygons-in-buffer remove "" my-list-of-polygons-in-buffer 

 foreach my-list-of-polygons-in-buffer [ 
 let ID-polygon-in-buffer ?

  ask patches with [plabel = ID-polygon-in-buffer] [ 

   let LCP calculate-LCP [my-ID-polygon] of myself ID-polygon-in-buffer ] ] ]

Проблема в том, что моя процедура «Calculate-LCP» выполняется слишком медленно, чтобы определить пути с наименьшей стоимостью в буферах вокруг волков (в моей модели 100 волков). Как я могу увеличить скорость моделирования моей модели?

Большое спасибо за Вашу помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос