如何为AnyLogic RackStore中整批次托盘设置统一延迟?
整批次托盘在RackStore中固定时长存储的实现方法
针对单个托盘延迟生效、无法实现整批次固定时长存储的问题,这里提供两种可行的实现方案:
方案一:批次聚合+统一延迟
- 在Source之后添加
Batch块,设置聚合数量为12,将每12个托盘打包成一个批次对象 - 将批次对象送入RackStore存储(需确保RackStore支持存储批次类型对象,或配置托盘作为批次的成员属性)
- 在RackStore出库流程中接入
Delay块,设置目标延迟时长——此时延迟作用于整个批次,而非单个托盘 - 延迟结束后用
Unbatch块拆分批次,释放单个托盘进入后续流程
方案二:全局变量追踪批次状态
- 创建两个全局变量:
batchCount(用于统计当前批次已生成的托盘数)、batchReadyTime(记录当前批次的允许出库时间) - 在Source的托盘生成事件中,每次生成托盘后递增
batchCount;当batchCount达到12时,计算batchReadyTime = time() + 目标延迟时长,并将batchCount重置为0 - 在RackStore的
On exit事件中添加逻辑:如果当前时间早于batchReadyTime,执行waitUntil(batchReadyTime <= time()),强制托盘等待到批次到期时间再出库 - 注意配置RackStore的存储策略,尽量将同批次托盘分配至同一存储区域,避免出库时批次拆分
额外注意事项
- 若使用批次对象,需维护托盘与批次的关联关系,避免后续流程中丢失托盘的归属信息
- 测试时需验证批次触发的时机,确保12个托盘全部入库后才开始计算延迟时长
内容的提问来源于stack exchange,提问作者Mohammad Zaki Mohammud
相关产品推荐
相关产品推荐

