AnyLogic中如何存储timeMeasureEnd最大值以用于优化问题
AnyLogic存储流程耗时最大值并实现人员配置优化的操作步骤
1. 存储timeMeasureEnd的统计最大值
- 在模型的Main代理中新建一个
double类型变量,命名为maxProcessTime,初始值设为0 - 打开流程中对应的timeMeasureEnd组件,在「On enter」事件编辑栏添加如下代码:
// 替换timeMeasureEnd为你实际的组件命名 double currentDuration = timeMeasureEnd.getTime(); if (currentDuration > maxProcessTime) { maxProcessTime = currentDuration; }
- 若需多轮迭代仿真,在仿真实验的「Before simulation run」事件中添加
maxProcessTime = 0;,清空上一轮的统计数据
如果已经用Dataset组件存储了所有流程耗时,可直接调用datasetName.max()获取最大值,无需额外定义变量存储
2. 配置优化实验
- 新建Optimization优化实验,将你需要调整的人员配置变量(如服务人员数量、工位人员数等)设为优化变量,设置合理的取值上下限
- 优化目标选择「最小化」,目标值填写人员配置变量,多类人员可按业务权重加权求和,例如
seniorStaffNum * 1.5 + juniorStaffNum * 1 - 新增约束条件:
maxProcessTime <= x,x替换为你要求的耗时阈值,注意和仿真时间单位保持一致,若仿真单位为小时,分钟阈值需转换为x/60
3. 运行验证
- 先运行3-5次单场景仿真,核对
maxProcessTime的取值和实际流程耗时一致,无统计异常 - 启动优化实验,工具会自动迭代不同人员配置方案,筛选出满足耗时约束的最小人员配置结果
内容的提问来源于stack exchange,提问作者SevenArmy
相关产品推荐
相关产品推荐

