AnyLogic中queue块退出时间设置及Agent系统通行时间测量问题
AnyLogic 技术问题解答
队列定时退出实现方案
- 通过Service块设置延迟时间的方案可正常实现需求,适用场景为车辆必须完成固定时长等候流程才可进入后续环节,逻辑清晰且便于单独统计等候类耗时。
- 你之前开启Queue块
enable exit on timeout未生效是遗漏了两项必要配置,补全后可实现更轻量化的定时退出逻辑,更适合「车辆到固定时长直接离开队列无需等待资源」的场景:- 开启
enable exit on timeout后,在Timeout参数栏填写对应固定时长(支持写动态表达式实现自定义规则计算) - 在Queue块的
On timeout动作栏添加代码exit();,让超时的Agent直接从Queue出口退出,默认无动作所以仅开开关不会触发退出
- 开启
全路径通行时长统计值获取方法
配对使用timeMeasureStart和timeMeasureEnd模块时,可通过两类方式获取统计值:
- 单Agent实时耗时:Agent到达
timeMeasureEnd模块时,在模块On enter动作中调用[你的timeMeasureEnd模块名].getDuration(agent)即可获取当前Agent的全路径通行时长,可存入Agent自定义变量用于后续业务逻辑判断 - 整体统计指标:直接调用
timeMeasureEnd模块自带的统计函数即可,常用函数如下:[你的timeMeasureEnd模块名].mean():已统计Agent的平均通行时长[你的timeMeasureEnd模块名].min()/max():已统计Agent的最短/最长通行时长[你的timeMeasureEnd模块名].count():已完成通行统计的Agent总数量[你的timeMeasureEnd模块名].getDistribution():获取耗时分布数据集,可直接用于生成直方图等可视化组件
提问用户附模型截图:
内容的提问来源于stack exchange,提问作者Marco Russo
相关产品推荐
相关产品推荐


