单源生成多类型Agent:如何追踪各类型Agent系统进出平均耗时
单一Source生成多类型Agent的追踪与耗时统计方案
核心思路
给每个生成的Agent打上进入系统的时间戳,待Agent离开时计算耗时,再按类型分类统计数据。
方法一:修改Agent类添加时间属性
- 给Type1、Type2、Type3、Type4四个Agent类,都新增一个
double enterTime成员变量。 - 打开Source块的On exit事件,添加代码:
agent.enterTime = time(); - 在Agent最终离开系统的Sink块的On enter事件中,计算耗时并分类统计:
先创建4个Dataset组件(命名如dsType1至dsType4),然后写入以下代码:double spendTime = time() - agent.enterTime; if (agent instanceof Type1) { dsType1.add(spendTime); } else if (agent instanceof Type2) { dsType2.add(spendTime); } else if (agent instanceof Type3) { dsType3.add(spendTime); } else { dsType4.add(spendTime); } - 查看平均耗时直接调用Dataset的
getAverage()方法即可,比如用Text组件实时显示:"Type1平均耗时:" + dsType1.getAverage(),或在实验结果中输出。
方法二:用自定义参数(无需修改Agent类)
如果不想改动Agent类代码,可通过自定义参数存储类型和进入时间:
- 在Source的On exit事件中添加:
agent.setParameter("enterTime", time()); agent.setParameter("agentType", agent.getClass().getSimpleName()); - 同样在Sink的On enter事件中处理统计:
double spendTime = time() - (double)agent.getParameter("enterTime"); String type = (String)agent.getParameter("agentType"); switch(type) { case "Type1": dsType1.add(spendTime); break; case "Type2": dsType2.add(spendTime); break; case "Type3": dsType3.add(spendTime); break; case "Type4": dsType4.add(spendTime); break; }
额外提示
- 若用Histogram组件替代Dataset,还能直观查看各类型耗时的分布情况。
- 统计结果可在模型运行结束后,于Experiment的Results标签页查看,或通过代码导出至文件。
内容的提问来源于stack exchange,提问作者SkyKing
相关产品推荐
相关产品推荐

