如何在AnyLogic中设置22:00后将顾客源生成速率设为0?
解决顾客Source在22:00后停止生成的方案
以下是几种主流仿真建模工具中实现该需求的具体操作:
方法一:条件表达式动态控制生成速率
- 在Source的生成速率配置中,用条件判断表达式替换固定数值:
- 若使用AnyLogic:将生成速率设为
time() >= 22*60 ? 0 : 原速率值(time()返回分钟数,22*60将小时转换为分钟单位) - 若使用Arena:在Source的「Inter-Arrival Time」模块里添加分支逻辑,判断当前时间是否超过22:00,是则设置间隔为无穷大(等同于停止生成)
- 若使用AnyLogic:将生成速率设为
- 核心逻辑:通过时间阈值判断,22:00后强制将生成速率切换为0
方法二:定时事件触发停止操作
- 给模型添加一个定时触发事件,设置触发时间为22:00:
- 在事件执行逻辑中,直接调用Source的停止生成方法:
- AnyLogic:执行
source.stop() - Simul8:执行
Set Object Property("Source", "Generate", False)
- AnyLogic:执行
- 在事件执行逻辑中,直接调用Source的停止生成方法:
- 这种方式逻辑直观,适合不需要后续恢复生成的场景
注意事项
- 确认模型的时间单位(小时/分钟)与22:00的设置匹配,避免时间判断出错
- 若需要次日自动恢复生成,可添加对应定时事件重置速率或重启Source
内容的提问来源于stack exchange,提问作者Ehsan Ul Haque
相关产品推荐
相关产品推荐

