Netlogo 如何加速多边形面积的计算?

Netlogo 如何加速多边形面积的计算?,netlogo,Netlogo,下面的代码允许计算大型景观(900 x 900个斑块)中白色多边形的面积(ha)。但是这个代码太慢了。有没有办法加快计算速度 let list-ID-blocks ( [ID-polygon] of patches with [pcolor = white] ) foreach list-ID-blocks [ ask patches with [ID-polygon = ?] [ set polygon-area ( count patches with [ID-polygon =

下面的代码允许计算大型景观(900 x 900个斑块)中白色多边形的面积(ha)。但是这个代码太慢了。有没有办法加快计算速度

 let list-ID-blocks ( [ID-polygon] of patches with [pcolor = white] )
 foreach list-ID-blocks [ 
 ask patches with [ID-polygon = ?] [ 
 set polygon-area ( count patches with [ID-polygon = ?] ) * 0.01 ] ]

提前感谢您的帮助。

问题在于每个面片都是独立计算面积的(
使用[ID polygon=?]计算面片数]
每次调用面片时都会在每个面片上循环)。相反,您可以计算每个多边形的面积一次,如下所示:

let list-ID-blocks remove-duplicates [ID-polygon] of patches with [pcolor = white]
foreach list-ID-blocks [
  let area 0.01 * count patches with [ ID-polygon = ? ]
  ask ask patches with [ ID-polygon = ? ] [ set polygon-area area ]
]
那应该快得多。如果速度够快的话,我会同意的。然而,对于每个多边形,它仍然会查看每个面片一次。如果多边形ID只是介于0和某个数字之间的整数,则可以查看每个面片一次,计算面积:

let max-id max [ ID-polygon ] of patches with [ pcolor = white ]
let areas n-values max-id [ 0 ]
ask patches with [ pcolor = white ] [
  let old-area item ID-polygon areas
  set areas replace-item ID-polygon areas (old-area + 1)
]
ask patches with [ pcolor = white ] [
  set polygon-area 0.01 * item polygon-ID areas
]