作业车间调度问题求解框架¶
发布于:2021-08-08 | 分类:optimization , mathematics
组合优化问题广泛出现于各行各业,例如生产制造排程,机场航班调度、项目管理计划等,求解这类问题有助于解决实际应用中的调度难题、提高生产效率;考虑到实际的业务逻辑因行业而异且可能相当复杂,本系列文章针对调度类问题的基本模型——作业车间调度(Job Shop Schedule),基于Python开发了一个通用的求解框架:
-
参考文献实现了一些基本解法例如基于规则指派、局部搜索、群体方法等
-
便于快速实施和测试新算法(参考 Python建模)
项目仓库¶
https://github.com/dothinking/jsp_framework
建模¶
作业车间调度问题通常有两类描述方式:
-
以工序开始时间为规划变量的线性规划数学模型
-
以工序顺序(作业工序顺序和机器工序顺序)为基础的析取图描述
本节从这两种描述入手认识作业车间调度问题,并基于此设计了整个求解框架,把问题分解、抽象为可重用的部分,从而专注求解算法的开发、实施和验证。
求解¶
作业车间调度问题通常有两类解法:
-
精确解法例如线性规划、动态规划、分枝定界等
-
近似解法例如局部搜索(禁忌搜索、模拟退火等)、群体算法(遗传算法、蚁群、粒子群等)、基于规则算法等
精确解法理论上总能获得全局最优解,但是求解效率随着问题规模的增大而急剧下降,例如一个 85 job x 8 machines
问题的搜索空间达到了 10^{880}。近似解法则追求以合理的计算时间获取较好质量的解,但不保证是全局最优解。