Anylogic系统动力学数组子维度聚合函数使用问题咨询
Anylogic系统动力学数组子维度聚合操作解答
结论
在AnyLogic中可以直接针对SD数组的单个子维度做聚合计算,无需对全索引范围求和,你提到的儿童总数统计场景有两种常用实现方案:
实现方法
- 方案1:硬编码区间筛选求和
适合临时统计、子维度规则不固定的场景,使用sumIf函数完成条件筛选后聚合,示例代码:people.sumIf(Index_Age, Index_Age >= 0 && Index_Age <= 17)
其中Index_Age需替换为你定义Age维度时设置的索引变量名。 - 方案2:调用预定义子维度聚合
你已经在维度编辑器中配置好Child子维度的前提下,可直接使用子维度作为聚合范围,代码更简洁且可维护性更强:people.sum(Child)
后续如果Child对应的年龄区间需要调整,只需修改维度定义中的子维度范围即可,不用修改聚合代码。
注意事项
如果你的SD数组包含多个维度,需要指定聚合的维度顺位,避免索引匹配错误,示例写法为people.sum(1, Child),其中数字1代表要聚合的是数组的第1个维度(维度顺序按数组定义时的先后顺序计数,从1开始)
内容的提问来源于stack exchange,提问作者Steffen
相关产品推荐
相关产品推荐

