调度优化¶
调度优化¶
问题概览¶
调度问题要决定任务的开始时间、加工资源和工序顺序,同时满足机器容量、 工序先后、可选加工方式和交期等约束。常见问题族包括 Job Shop、Flexible Job Shop 和资源约束项目调度。
需求定义¶
- 输入:任务、工序顺序、加工时长、候选机器、资源需求和时间窗口。
- 决策:每个工序选择的资源、开始时间、结束时间和是否存在。
- 约束:前后关系、机器不重叠、累计资源容量、释放时间和交期。
- 目标:最小化最大完工时间、总延期、切换成本或资源负载。
规模与数据来源¶
复杂度可以按任务数、工序数、机器数、候选加工方式数、资源维度和时间 窗口长度衡量。公开问题可以参考 JSPLIB、 FJSPLIB 和 PSPLIB,它们分别覆盖 Job Shop、 Flexible Job Shop 和资源约束项目调度。
三层建模路径¶
- 基础调度:使用
ModelBuilder的interval_var、no_overlap和precedence表达固定机器与工序链。 - 柔性调度:使用
SchedulingModel的任务、资源、alternative 和exactly_one_alternative表达候选机器。 - 资源约束调度:在专用调度模型上增加 cumulative 资源、时间日历、
运输滞后和复合目标;特殊约束再回到底层
ModelBuilder。
求解方案¶
- 调度示例统一使用
solve(...),由 OptAgent 的策略路径处理模型。 - 只有在明确需要验证某个精确后端兼容性时,才在 API 参考中选择对应的 direct exact 接口。
- 不把黑盒策略作为固定调度问题的默认建模方式;只有目标依赖外部仿真器 或无法展开的业务函数时,才进入黑盒求解路径。
示例页¶
- 基础 Job Shop:固定机器、工序链和机器不重叠。
- Flow Shop:统一工艺顺序下的多阶段调度。
- 柔性 Job Shop:候选机器、替代方案和共享累计资源。