多类型agent场景下如何计算生产线总生产时间
多Agent生产流程总生产时间统计方案

针对多源不同类型Agent最终在装配环节汇聚的场景,可选择以下三种可落地的方案实现总生产时间统计:
方案1:自定义Agent属性+时间戳联动
- 给两个Source生成的不同类型Agent各新增1个
double类型的属性,命名为createTime,在Source的「退出时执行」动作栏写入代码:agent.createTime = time();,记录每个部件的生成时间。 - 在Assembler模块的「装配完成时执行」动作栏,先获取参与本次装配的所有上游部件的
createTime属性值,再给装配生成的成品Agent新增1个totalProductionTime属性,赋值为time() - 上游部件createTime的最值,直接得到总生产耗时。
注:如果需要统计从第一个部件生成就开始计算的全流程耗时,就取两个
createTime的最小值做减数;如果需要统计从所有部件都准备完成后才开始计算的生产耗时,就取两个createTime的最大值做减数。
方案2:批次映射存储匹配统计
- 提前在模型中定义1个
LinkedHashMap类型的变量,Key设置为批次ID,Value设置为该批次下所有部件的生成时间列表。 - 两个Source生成的Agent都绑定同一个批次ID属性,在Source出口处将当前Agent的生成时间和批次ID存入Map:如果Map中不存在对应批次ID,就新增条目存入第一个部件的时间,已存在就追加第二个部件的时间。
- 在Assembler出口处,根据当前成品的批次ID从Map中取出对应的两个部件时间,按业务需求计算总生产时间,计算完成后删除Map中该批次的条目避免内存占用过高。
方案3:分阶段TimeMeasure嵌套统计
- 给两个Source的下游各单独放置1个
TimeMeasureStart模块,分别统计两类部件从生成到进入Assembler等待队列的时间,记为T1、T2。 - 在Assembler的入口处放置1个公共的
TimeMeasureStart模块,统计装配环节的总耗时记为T3。 - 总生产时间可直接计算为
max(T1, T2) + T3,该方案不需要修改Agent的属性结构,适合不想改动原有Agent定义的场景。
内容的提问来源于stack exchange,提问作者Andrés León
相关产品推荐
相关产品推荐

