AnyLogic中如何组合不同Agent并统计Source中各类型Agent数量
AnyLogic多类型Agent分类计数实现方案
方法1:通过Source出口动作实时计数
- 先在模型中新增3个int类型变量,分别命名为
countA、countB、countC,初始值均设为0。 - 打开你使用的Source组件的On exit动作编辑栏,输入如下判断逻辑:
if (agent instanceof A) { countA++; } else if (agent instanceof B) { countB++; } else if (agent instanceof C) { countC++; }
- 模型运行后,三个变量的数值即为对应类型Agent的总生成量。如果需要统计当前存活数量,可在A、B、C三类Agent的On destroy动作中分别添加对应变量减1的逻辑。
方法2:归集所有Agent后按需统计
- 新增一个Collection组件,元素类型设置为三类Agent的公共父类(若无公共父类可直接选
Agent),命名为allGeneratedAgents。 - 在Source的On exit动作中添加代码:
allGeneratedAgents.add(agent); - 需要统计时,可通过遍历或内置过滤方法获取各类型数量:
// 统计A类Agent总数 long countA = filter(allGeneratedAgents, item -> item instanceof A).count(); // 统计B类Agent总数 long countB = filter(allGeneratedAgents, item -> item instanceof B).count(); // 统计C类Agent总数 long countC = filter(allGeneratedAgents, item -> item instanceof C).count();
- 该方法适用于需要保留所有生成Agent实例、后续需扩展更多统计维度的场景。
内容的提问来源于stack exchange,提问作者Winnie
相关产品推荐
相关产品推荐

