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

AnyLogic生产模型如何排除排班空闲时间统计工单流程耗时与时间分布

AnyLogic排班场景下工单有效流转时长统计方案

方案1:使用内置时间测量组件(无代码,最简便)

  • 在原材料入场节点后放置Time Measure Start模块,在成品完工节点前放置Time Measure End模块
  • 打开Time Measure Start属性面板,找到仅在满足条件时计数(Count time only when)配置项,填入排班状态判断表达式:你的排班Schedule对象名.get() == 工作状态值,例如你用布尔值排班,工作时段返回true,就填workSchedule.get() == true
  • 组件会自动跳过非工作时段的时间,Time Measure End模块输出的统计值就是剔除了空闲时间的有效流转时长,直接读取其mean()属性即可得到平均车间流转时长

方案2:调用Schedule内置计算方法(灵活可控)

  • 在工单Agent中新增变量enterTime,类型为double,原材料入场时赋值为当前模型时间:enterTime = time();
  • 工单完工时,调用Schedule的calculateDuration方法直接计算有效时长:
    // 方法参数说明:起始时间、结束时间、需要统计的Schedule状态值(即你定义的工作时段对应的值,比如1/true)
    double validFlowTime = workSchedule.calculateDuration(enterTime, time(), true);
    
  • 你提到的34小时总时长场景,该方法会自动扣除中间16小时非工作时段,直接返回约18的有效时长,无需手动计算跨班次扣除逻辑
  • 将所有工单的validFlowTime存入Statistics统计对象,读取其mean属性即可得到平均流转时长

方案3:自定义时间累加器(适配复杂特殊规则)

如果你的业务有额外的暂停统计规则(比如设备检修时段也需要剔除),可以用自定义变量实现:

  • 在工单Agent中新增两个变量:double validFlowTime = 0.0、double lastUpdateTime = 0.0
  • 工单入场时初始化lastUpdateTime = time()
  • 给排班Schedule添加状态变化触发动作:
    • 从工作状态切换为非工作状态时,遍历所有在制工单,累加有效时长:agent.validFlowTime += time() - agent.lastUpdateTime;
    • 从非工作状态切换为工作状态时,更新所有在制工单的lastUpdateTime = time()
  • 工单完工时,如果当前处于工作时段,先补加当前段的有效时长:validFlowTime += time() - lastUpdateTime;,再存入统计对象计算平均值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:21:03