You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic如何设置TimeMeasure块仅统计工作班次内的有效流程时间

AnyLogic工作时段专属流程耗时统计实现方案

可以实现该需求,原生TimeMeasure系列模块默认统计自然时间差,只需配合AnyLogic内置的ShiftCalendar组件做少量自定义开发即可,无需改动原有流程模块的核心逻辑。

前置准备

先在模型中添加ShiftCalendar组件,按需求配置班次规则:仅每日早7点至下午3点为工作时段,其余时间标记为非工作时段。

具体实现步骤

  • 给需要统计流程时长的Agent添加2个自定义字段:
    1. double类型的startMeasureTime:用于记录Agent进入统计节点的仿真时间戳
    2. double类型的validProcessDuration:用于存储最终计算出的有效工作时长
  • 在TimeMeasureStart模块的**On entry(进入时)**动作栏添加代码:
    agent.startMeasureTime = time();
    
  • 在TimeMeasureEnd模块的**On entry(进入时)**动作栏添加代码:
    // 计算start到当前时间之间的有效工作时长,返回值单位和仿真时间单位一致
    agent.validProcessDuration = shiftCalendar.calculateWorkingTime(agent.startMeasureTime, time());
    // 若需要存入统计数据集,可追加如下代码,替换为你自己的数据集对象名即可
    // processDurationStats.add(agent.validProcessDuration);
    

效果验证

你举的示例场景中,Agent从14:30进入统计节点,次日8:30完成流程,calculateWorkingTime方法会自动扣除15:00到次日7:00的16小时非工作时段,最终返回的有效时长为2小时,完全匹配需求。

如果需要保留原生TimeMeasure的自然时长统计用于交叉验证,不需要修改原有模块的统计配置,两套统计逻辑可并行运行。


内容的提问来源于stack exchange,提问作者TRUESIM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:24:00