车间调度建模系列2|复杂车间调度问题描述
获取更多资讯,赶快关注公众号(名称:智能制造与智能调度,公众号:deeprlscheduler)吧!
三维析取图模型建模系列目录
- 复杂车间调度问题三维析取图建模系列预告
- 车间调度建模系列1|复杂车间调度问题特点
- 车间调度建模系列2|复杂车间调度问题描述(本文)
针对存在上一篇文章中特点(车间调度建模系列1|复杂车间调度问题特点)的复杂作业车间调度问题,综合考虑动态工时、动态工作日历、周转运输、外协等复杂约束,其描述如下:
NJNJNJ个工件需要在NMNMNM台机床上加工,每个工件JiJ_iJi包含NOiNO_iNOi道工序,其中OihO_{ih}Oih为工件JiJ_iJi的第hhh道工序。每道工序OihO_{ih}Oih均可以在可选机床集合Mih\boldsymbol{M}_{i h}Mih中的任意一台MmM_mMm上进行加工,工序OihO_{ih}Oih在机床MmM_mMm上的加工时间为PihmP_{ihm}Pihm。目标就是在满足以下约束的前提下优化一个或多个生产目标。
下面列出了用于问题表述的符号。
(1)索引
m,n,rm,n,rm,n,r:机床序号,m,n,r=1,2,3,...,NMm,n,r=1,2,3,...,NMm,n,r=1,2,3,...,NM;
i,ji,ji,j:工件序号,i,j=1,2,3,...,NJi,j=1,2,3,...,NJi,j=1,2,3,...,NJ;
h,lh,lh,l:工件工序序号,h=1,2,3,...,NOi,l=1,2,3,...,NOlh=1,2,3,...,NO_i,l=1,2,3,...,NO_lh=1,2,3,...,NOi,l=1,2,3,...,NOl;
ooo:所有工序索引,o=1,2,3,...,NOo=1,2,3,...,NOo=1,2,3,...,NO;
(2)参数
M\boldsymbol{M}M:总的机床集合;
J\boldsymbol{J}J:总的工件集合;
NMNMNM:机床数量;
NJNJNJ:工件数量;
NONONO:工序数量;
NOiNO_iNOi:工件iii的工序总数;
Mih\boldsymbol{M}_{i h}Mih:工件iii的第hhh道工序的可选加工机床集合;
NMihNM_{ih}NMih:工件iii的第hhh道工序的可选机床数;
OihO_{ih}Oih:工件iii的第hhh道工序;
O\boldsymbol{O}O:所有工序集合;
Oready\boldsymbol{O}_{ready}Oready:当前就绪任务集合;
OihmO_{ihm}Oihm:工件iii的第hhh道工序在机床mmm上加工;
Oi′h′mO_{i^{\prime} h^{\prime} m}Oi′h′m:机床mmm上排在工序OihO_{ih}Oih前的一道工序;
PihmP_{ihm}Pihm:工件iii的第hhh道工序在机床mmm上的加工时间;
PihP_{ih}Pih:工件iii的第hhh道工序在所有可选机床上的平均加工时间;
SihmS_{ihm}Sihm:工件iii的第hhh道工序在机床mmm上的开始加工时间;
CihmC_{ihm}Cihm:工件iii的第hhh道工序在机床mmm上的完成加工时间;
LLL:一个足够大的正数;
CiC_iCi:工件iii的完成时间;
CmaxC_{max}Cmax:所有工件中最晚的完成时间,Cmax=∑i=1NJmax{Ci}C_{\max }=\sum_{i=1}^{N J} \max \left\{C_{i}\right\}Cmax=∑i=1NJmax{Ci} ;
did_idi:工件iii的交货期;
wiw_iwi:工件iii的权重;
bib_ibi:工件iii的批量;
TiT_iTi:工件iii的拖期,Ti=max{0,Ci−di}T_{i}=\max \left\{0, C_{i}-d_{i}\right\}Ti=max{0,Ci−di};
OCihOC_{ih}OCih:工序OihO_{ih}Oih的单位时间加班成本;
CCihCC_{ih}CCih:工序OihO_{ih}Oih的外协成本;
TCihTC_{ih}TCih:工序OihO_{ih}Oih的单位转运批量运输成本;
tbihtb_{ih}tbih:工序OihO_{ih}Oih的转运批量;
(3)决策变量
xihm={1,如果工序 Oih选择机器 Mm0,否则 x_{i h m}=\left\{\begin{array}{l} 1, \text { 如果工序 } O_{i h} \text { 选择机器 } M_{m} \\ 0, \text { 否则 } \end{array}\right. xihm={1, 如果工序 Oih 选择机器 Mm0, 否则
yihjlm={1,如果 Oihm先于 Ojlm加工 0,否则 y_{i h j l m}=\left\{\begin{array}{l} 1, \text { 如果 } O_{i h m} \text { 先于 } O_{j l m} \text { 加工 } \\ 0, \text { 否则 } \end{array}\right. yihjlm={1, 如果 Oihm 先于 Ojlm 加工 0, 否则
ooih={1,如果工序 Oih加班 0,否则 o o_{i h}=\left\{\begin{array}{l} 1, \text { 如果工序 } O_{i h} \text { 加班 } \\ 0, \text { 否则 } \end{array}\right. ooih={1, 如果工序 Oih 加班 0, 否则
coih={1,如果工序 Oih外协 0,否则 c o_{i h}=\left\{\begin{array}{l} 1, \text { 如果工序 } O_{i h} \text { 外协 } \\ 0, \text { 否则 } \end{array}\right. coih={1, 如果工序 Oih 外协 0, 否则
(4)目标函数
Minimize Cmax(2.1)\text { Minimize } C_{\max }\tag{2.1} Minimize Cmax(2.1)
Minimize TWT=∑i=1NJwi⋅Ti(2.2)\text { Minimize } T W T=\sum_{i=1}^{N J} w_{i} \cdot T_{i}\tag{2.2} Minimize TWT=i=1∑NJwi⋅Ti(2.2)
Minimize TOC=∑oih∈Oooih⋅OCih⋅Pihm(2.3)\text { Minimize } T O C=\sum_{o_{i h} \in \boldsymbol {O}} o o_{i h} \cdot O C_{i h} \cdot P_{i h m}\tag{2.3} Minimize TOC=oih∈O∑ooih⋅OCih⋅Pihm(2.3)
Minimize TCC=∑oih∈Ocoih⋅CCih(2.4)\text { Minimize } \quad T C C=\sum_{o_{i h} \in \boldsymbol {O}} c o_{i h} \cdot C C_{i h}\tag{2.4} Minimize TCC=oih∈O∑coih⋅CCih(2.4)
Minimize TTC=∑i=1NJ∑h=1NOi−1bitbi⋅TCih(2.5)\text { Minimize } T T C=\sum_{i=1}^{N J} \sum_{h=1}^{N O_{i-1}} \frac{b_{i}}{t b_{i}} \cdot T C_{i h}\tag{2.5} Minimize TTC=i=1∑NJh=1∑NOi−1tbibi⋅TCih(2.5)
(5)约束
s.t. {Ci≥0,Cihm≥0,∀i,h,m(a)Sihm+xihm×Pihm≤Cihm,∀i,h,m(b)∑m∈Mihxihm=1,∀i,h(c)Cihm≤Si(h+1)n,i∈[1,NJ],h∈[1,NOi−1](d)Sihm+Pihm≤Sjlm+L(1−yihjlm),∀i,h,m,j,l(e)(2.6)\text { s.t. }\left\{\begin{array}{l} C_{i} \geq 0, C_{i h m} \geq 0, \forall i, h, m \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad(a)\\ S_{i h m}+x_{i h m} \times P_{i h m} \leq C_{i h m}, \forall i, h, m \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad(b)\\ \sum_{m \in \boldsymbol{M}_{i h}} x_{i h m}=1, \forall i, h \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad(c)\\ C_{i h m} \leq S_{i(h+1) n}, i \in[1, N J], h \in\left[1, N O_{i}-1\right] \quad\quad\quad\quad\quad\quad\quad(d)\\ S_{i h m}+P_{i h m} \leq S_{j l m}+L\left(1-y_{i h j l m}\right), \forall i, h, m, j, l \quad\quad\quad\quad\quad\quad(e) \end{array}\right.\tag{2.6} s.t. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧Ci≥0,Cihm≥0,∀i,h,m(a)Sihm+xihm×Pihm≤Cihm,∀i,h,m(b)∑m∈Mihxihm=1,∀i,h(c)Cihm≤Si(h+1)n,i∈[1,NJ],h∈[1,NOi−1](d)Sihm+Pihm≤Sjlm+L(1−yihjlm),∀i,h,m,j,l(e)(2.6)
目标2.1-2.5分别用于最小化制造期、总加权拖期、总加班成本、总外协成本和总运输成本;不等式2.6(a)表示工件和每道工序的完成时间不能为负;不等式2.6(b)表示考虑日历情况下工序完成时间与开始时间间隔不能小于工序工时,只有当此间隔内均为上班班次(包括正常上班和加班)时等式才成立;等式2.6©意味着每道工序只能分派到一台机床上;不等式2.6(d)表明只有前道工序结束了后道工序才能开始,保证了顺序约束;不等式2.6(e)确保在同一机床上同一时刻最多只能加工一个工序,即满足能力约束。
车间调度建模系列2|复杂车间调度问题描述相关推荐
- 车间调度建模系列9|复杂车间调度问题建模实例
获取更多资讯,赶快关注公众号(名称:智能制造与智能调度,公众号:deeprlscheduler)吧! 三维析取图模型建模系列目录 复杂车间调度问题三维析取图建模系列预告 车间调度建模系列1|复杂车间调 ...
- 【车间调度】鸟群算法求解车间调度问题【含Matlab源码 1395期】
⛄一.车间调度简介 1 车间调度定义 车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源.提高企业经济效益的目的.车间调度问题从数学上可以描述为有n个待加工的零件要在m台 ...
- 【车间调度】模拟退火算法求解车间调度(jobshop-3)问题【含Matlab源码 1082期】
⛄一.车间调度简介 1 车间调度定义 车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源.提高企业经济效益的目的.车间调度问题从数学上可以描述为有n个待加工的零件要在m台 ...
- 多目标柔性车间调度丨mogv算法:以算例MK01为例
车间调度系列文章: 1.车间调度的编码.解码,调度方案可视化的探讨 2.多目标优化:浅谈pareto寻优和非支配排序遗传算法-NSGAII的非支配排序及拥挤度 3.柔性车间调度问题:以算例MK01初探 ...
- 多目标柔性车间调度丨NSGA-II:以算例MK01为例
车间调度系列文章: 1.车间调度的编码.解码,调度方案可视化的探讨 2.多目标优化:浅谈pareto寻优和非支配排序遗传算法-NSGAII的非支配排序及拥挤度 3.柔性车间调度问题:以算例MK01初探 ...
- 30篇强化学习求解车间调度文章(中文)大全
国内使用强化学习求解车间调度问题的研究起步较晚,基本是在在2000年以后,而深度强化学习求解车间调度问题更是在2019.2020年左右开始流行.今天在上一篇文章的基础上((吐血整理)118篇强化学习求 ...
- 【车间调度】免疫遗传算法求解多目标生产调度问题【含Matlab源码 710期】
⛄一.生产调度简介 1 车间调度定义 车间调度是指给定一个加工任务,根据已有的生产条件,对有限的系统资源进行分配,对产品的加工步骤进行安排,使得某项性能指标最优.在实际生产过程中,所涉及的约束条件主要 ...
- 【车间调度】车间调度问题的特点
本系列为自己学习调度相关知识的记录,如有误请指出,也欢迎调度方向的小伙伴加我好友共同交流. 1.多约束性在通常情况下,工件的加工路线是已知的,并且受到严格的工艺约束,使得各道工序在加工顺序上具有先后约 ...
- 【车间调度】基于matlab遗传算法求解车间调度问题(含甘特图)【含Matlab源码 2216期】
⛄一.车间调度简介 1 车间调度定义 车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源.提高企业经济效益的目的.车间调度问题从数学上可以描述为有n个待加工的零件要在m台 ...
- 【车间调度】粒子群算法求解6X6车间调度问题【含Matlab源码 411期】
⛄一.车间调度简介 1 车间调度定义 车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源.提高企业经济效益的目的.车间调度问题从数学上可以描述为有n个待加工的零件要在m台 ...
最新文章
- Sudo 漏洞隐患不断,macOS 也受牵连!
- 记于2014-12-9
- linux 内存管理 page fault带来的性能问题
- android设置布局高度自适应,4种Android屏幕自适应解决方案
- 【编程大系】Java资源汇总
- MySQL中有外键时数据表的删除方法
- parallels for linux,在 Parallels Desktop 上安装 Remix OS PC
- ELF动态库加载技术
- mysql8.0root连接失败_mac 下jdbc连接mysql 8.0 失败
- java里面cin怎么用_刚学Java,弱弱一问,eclipse中怎样输入啊,我写了输入语句但它不像C++的cin一样弹出输入窗口。。...
- jpg图片已损坏怎么修复_JPG图片怎么转成PDF?这两个方法你能用上
- CSS背景图像的简单响应
- mysql查询时去除重复数据以及 FOUND_ROWS 统计记录函数
- prbs()matlab,prbs7伪随机码生成
- 《OpenGL编程指南》收藏的学习网址
- 计算机图标制作教程,电脑主题ICO图标制作方法 详细教程你一学就会
- 电商管理系统微服务架构图
- MPLAB使用PICKit3.5烧录程序说明
- “企鹅号+时尚集团MCN”强强联手 打造19春夏时装周报道新模式
- 错误代码0x800F081F怎么解决,安装NET Framework
热门文章
- Address already in use: bind 端口被占用的解决办法
- Consider defining a bean of type ‘com.bsj.system.service.RedisService‘ in your configuration.
- 运行uiautomatorviewer.bat报错No suitable Java found
- C++ 自旋锁简单实现
- 每天一道剑指offer-丑数
- json字符串中的大括号转义传到后台_string.format格式化字符串中转义大括号“{}”...
- 杜克大学计算机统计学,Duke的Statistical Science「杜克大学统计学系」
- 服务器win10系统开机慢,Win10系统开机慢怎么办 windows10开机慢的解决方法
- 遨博机器人展示_高交会:智能机器人走入大众生活
- 内存问题分析工具_valgrind之memcheck基本使用