NetLogo高效迭代:优化海龟统计与属性求和的foreach方案
高效计算NetLogo中分组海龟的数量与属性总和
需要计算并存储与海龟属性相关的两组数值:
- 满足条件的海龟数量
- 这些海龟特定属性A的总和
其中属性A为离散整数,取值无连续性。
最简示例代码
globals [ N-x1 N-x2 N-x5 sum-A-x1 sum-A-x2 sum-A-x5 x-list ] turtles-own [ condition1? A x ] set x-list ( list 1 2 5 )
实际场景与现有尝试
实际模型中x-list包含88个离散值,且海龟数量约75k,效率至关重要。尝试用foreach循环实现,但模型运行速度大幅下降。
曾手动定义agentset来小幅提升性能,代码如下:
; Define needed agentsets let turtles-x1 with [ condition1? = true and x = 1 ] let turtles-x2 with [ condition1? = true and x = 2 ] let turtles-x5 with [ condition1? = true and x = 5 ] ; Count turtles meeting condition1 set N-x1 count turtles-x1 set N-x2 count turtles-x2 set N-x5 count turtles-x5 ; Sum A over turtles meeting condition1 if N-x1 > 0 [ set sum-A-x1 sum [ A ] of turtles-x1 ] if N-x2 > 0 [ set sum-A-x2 sum [ A ] of turtles-x2 ] if N-x5 > 0 [ set sum-A-x5 sum [ A ] of turtles-x5 ]
现寻求更高效的实现方式,比如使用map或table扩展。注:已通过table扩展和map找到解决方案,留此供参考。
内容的提问来源于stack exchange,提问作者G. Papad.
相关产品推荐
相关产品推荐

