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

如何统计Hold模块的阻塞时长及状态切换次数?

供应链仿真阻塞逻辑与指标计算解决方案

一、阻塞/解除阻塞的事件触发逻辑修正

  • 给Wait模块绑定进入事件和离开事件:
    • 组件进入Wait后,检查当前Wait容量是否等于最大容量:
      • 若满足条件且Hold未处于阻塞状态,调用hold.block(),记录阻塞开始时间,同时增加阻塞切换计数。
    • 组件离开Wait后,检查当前Wait容量是否小于最大容量:
      • 若满足条件且Hold处于阻塞状态,调用hold.unblock(),计算本次阻塞时长并累加。

二、两个指标的具体实现

1. Hold模块阻塞总时长计算

  • 提前定义全局变量:total_block_time = 0,block_start_time = -1
  • 触发阻塞时:仅当Hold未阻塞时,将block_start_time设为当前仿真时间time()
  • 解除阻塞时:若block_start_time有效(不为-1),执行total_block_time += time() - block_start_time,然后重置block_start_time = -1
  • 仿真结束时:若Hold仍处于阻塞状态,需补算从block_start_time到仿真结束的时长,累加到total_block_time

2. 阻塞状态切换次数计算

  • 提前定义全局变量:block_switch_count = 0,is_blocked = False
  • 触发阻塞时:若is_blocked为False,则block_switch_count += 1,并将is_blocked设为True
  • 解除阻塞时:将is_blocked设为False

三、常见错误排查

  • 重复触发阻塞:未判断Hold当前状态就多次调用block(),导致计数重复、时长计算混乱,必须增加状态判断。
  • 遗漏结束时的阻塞时长:仿真终止时若Hold仍阻塞,这部分时长会丢失,需在仿真结束事件中补充计算。
  • 事件绑定错误:确保Wait模块的进入/离开事件正确关联到对应逻辑,避免绑定到其他模块的事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:37:33