gpt4 book ai didi

netlogo - 如何加快多边形面积的计算?

转载 作者:行者123 更新时间:2023-12-01 12:41:45 24 4
gpt4 key购买 nike

以下代码可以计算大型景观(900 x 900 block )中白色多边形的面积(公顷)。但是这段代码太慢了。有没有办法加快计算速度?

 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
]

关于netlogo - 如何加快多边形面积的计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com