AnyLogic新手求助:如何在限制总流程时间下优化成本目标函数?
在AnyLogic中添加总流程时长约束的实操方案

1. 先搞定总流程时长的计算逻辑
- 给模型加两个全局变量(在Main里新建,类型选double):
processStartTime:用来记录第一个实体启动流程的时间totalProcessDuration:存储最终的总流程耗时
- 找到流程的第一个节点(比如Source),在它的
On exit事件里写代码:if (processStartTime == 0) { processStartTime = time(); } - 找到流程的最后一个节点(比如Sink),在它的
On enter事件里写代码:totalProcessDuration = time() - processStartTime;
2. 在优化实验里加时长约束
假设你用的是Optimization Experiment:
- 打开优化实验的设置,切换到Constraints标签页
- 点击Add新增约束:
- 在表达式栏写你的时长限制,比如要求总时长不超过120分钟,就转成秒写:
totalProcessDuration <= 120 * 60 - 约束类型选**<=**,对应你的时长上限要求
- 在表达式栏写你的时长限制,比如要求总时长不超过120分钟,就转成秒写:
3. 验证约束是否有效
- 先运行普通仿真实验,确认
totalProcessDuration能正确算出总流程时间 - 再启动优化实验,系统会自动在满足时长限制的前提下,寻找总成本最低的方案
新手提醒
- 如果是多实体批量处理,要根据实际需求调整时长计算逻辑(比如取最后一个实体完成时间减第一个实体开始时间)
- 注意时间单位统一:AnyLogic默认用秒,设置约束时别搞混单位
内容的提问来源于stack exchange,提问作者Milky Rainbow
相关产品推荐
相关产品推荐

