关注我的公众号YueTan进行交流探讨
欢迎关注我的APS仓库:https://github.com/yuetan1988/python-lekin
APS系列入门
- APS入门1-综述
- APS入门2-ortools
- APS入门3-从源码解读一个C# APS项目
- APS入门4: 供应链与APS
- APS入门5:工厂管理
- APS入门6-LEKIN学习与复现
- APS入门7-数字化车间智能排产调度实战
- APS入门8-C++开发-从源码解读一个APS项目
开源
https://github.com/google/or-tools
新建环境,安装包
conda create --name op python=3.7
python -m pip install --upgrade --user ortools
了解常见的优化类型
数学模型
采用or-tools等运筹方法进行生产排程最重要的是建立数学模型。
建立数学模型之前,需要想清楚哪些变量,哪些实体。一般实体可以作为下角标
- i 第i台机器
- j 第j个工件
- k 第k道工序
决策变量
- n j n_j nj 表示 第j工件的第n加工工序
- y i j l y_{ijl} yijl 表示工件j的第l道工序在第i台机器进行加工,01表示是否
- P i j k l P_{ijkl} Pijkl 表示工件j的第l道工序在第i台机器的k工序加工时间
- 加工开始时间,加工结束时间。根据完成时间与加工时间可以推导出开始时间,因此两个即可
表征完成后,重要的就是目标和约束的建模
- 目标
优化问题一半都是求极值问题。
总的加工时间最短。总加工时间可以描述为
-
C
j
k
C_{jk}
Cjk 表示机器j的第k个位置的完成时间
- 约束
对约束的理解建模通常是最复杂的部分。
工艺路线本身就是约束,要安装顺序执行。前一个工序做完才能开始下一道
同一时间,统一设备只允许加工的生产任务或数量
某个设备开始执行一个任务后,执行完成才能开始下一个
参考
- https://www.kaggle.com/code/jpmiller/application-of-google-or-tools
- https://www.kaggle.com/code/jpmiller/google-or-tools-w-clusters