车间作业调度问题
车间作业调度问题(Job Shop Scheduling Problem,JSSP)是经典的组合优化问题,在阅读论文过程中发现了对其描述如下:
给定一组工件J=1,2,...,nJ=1,2,...,nJ=1,2,...,n,要求在一组机器M=1,2,...,mM=1,2,...,mM=1,2,...,m上加工完成,满足以下约束条件:
1)每个工件在机器上的加工次序给定;
2)每台机器在任何时刻最多只加工一个工件,工件加工的时间是固定的且工序一旦开始不能被中断;
3)每道工序必须等到其所有的前继工序加工完毕后才能开始加工。
数学描述如下:
f=min{max{cik}}(1)
f=min\{max\{c_{ik}\}\} \tag{1}
f=min{max{cik}}(1)s.t.cik−pik+M(1−aihk)≥cih,i=1,2,....,n;h,k=1,2,...m(2)c_{ik}-p_{ik}+M(1-a_{ihk})\ge c_{ih}, \\i=1,2,....,n;h,k=1,2,...m \tag{2}cik−pik+M(1−aihk)≥cih,i=1,2,....,n;h,k=1,2,...m(2)cjk−cik+M(1−xijk)≥pjk,i,j=1,2,....,n;k=1,2,...m(3)
c_{jk}-c_{ik}+M(1-x_{ijk})\ge p_{jk}, \\ i,j=1,2,....,n;k=1,2,...m \tag{3}cjk−cik+M(1−xijk)≥pjk,i,j=1,2,....,n;k=1,2,...m(3)cik≥0,i=1,2,...,n;k=1,2,...,m(4)c_{ik}\ge 0,i=1,2,...,n;k=1,2,...,m\tag{4}cik≥0,i=1,2,...,n;k=1,2,...,m(4)
其中,符号cikc_{ik}cik和pikp_{ik}pik分别表示工件iii在机器kkk上的加工完成时间和加工时长;MMM是一个足够大的正数;aihka_{ihk}aihk和xijkx_{ijk}xijk分别为指示系数和指示变量,意义如下:
aihk={1若机器h先于机器k加工工件i0非上述情况(5)
a_{ihk}=
\begin{cases}
1& \text{若机器$h$先于机器$k$加工工件$i$}\\
0& \text{非上述情况}
\end{cases}\tag{5}aihk={10若机器h先于机器k加工工件i非上述情况(5)xijk={1若工件i先于工件j在机器k上加工0非上述情况(6)
x_{ijk}=
\begin{cases}
1& \text{若工件$i$先于工件$j$在机器$k$上加工}\\
0& \text{非上述情况}
\end{cases}\tag{6}xijk={10若工件i先于工件j在机器k上加工非上述情况(6)
理解:
目标函数(1)中的max{cik}max\{c_{ik}\}max{cik}表示一系列工件最后一个工件完工的时间。
约束(2)表示,若机器hhh先于机器kkk加工工件iii,则需保证cik−pik≥cihc_{ik}-p_{ik}\ge c_{ih}cik−pik≥cih,即工件iii在机器hhh上加工完后再到机器kkk上加工。
约束(3)表示,若工件iii先于工件jjj在机器kkk上加工,则须保证cjk−cik≥pjkc_{jk}-c_{ik}\ge p_{jk}cjk−cik≥pjk,即工件jjj在机器kkk上加工完后才能再加工工件iii。
约束(4)表示每个工件在每个机器上都要加工。
编码
这里对基于工序的编码方式进行介绍:
每个个体的染色体有所有工序的排序构成,每个基因代表一个工序,同一作业的所有工序由同一作业序号表示,根据他们在染色体排序中的顺序决定他们在不同机器上的加工顺序。对于一个nnn个工件,mmm个机器的作业调度问题,每个染色体由n×mn\times mn×m个基因组成,每个工件号在染色体中出现的次数为mmm次,同一工件的第iii次出现表示该工件的第iii道工序。
解码
这里采用前插式解码,根据给定的染色体,对每个当前工序,从其所在机器的前面开始遍历,如果有时间间隔和约束条件可以满足当前工序,则将其插入该位置。
示例
下面以论文《Optimization of job shop scheduling problems using teaching-learning-based optimization algorithm》中的例子为例。已知的工件对应的操作机器、时间如下表所示,


假设编码为:1 2 3 1 2 3 2 1 3
那么它对应的时间安排是什么样的呢?
将上述两个表格进行重新整理:
| Job | Operation1 | Operation2 | Operation3 |
|---|---|---|---|
| 1 | 1(15) | 2(25) | 3(18) |
| 2 | 2(10) | 3(20) | 1(7) |
| 3 | 3(8) | 1(12) | 2(10) |
(括号外为这一操作使用的机器,括号内为每一步操作所需时间)
1 表示工件1的第一个操作,在机器1上完成:15min
2 表示工件2的第一个操作,在机器2上完成:10min
3 表示工件3的第一个操作,在机器3上完成:8min
1 表示工件1的第二个操作,在机器2上完成:此时需等待工件1的第一个操作已完成,且机器2有空闲:15min+25min=40min
2 表示工件2的第二个操作,在机器3上完成:此时需等待工件2的第一个操作已完成,且机器3有空闲:10min+20min=30min
3 表示工件3的第二个操作,在机器1上完成:此时需等待工件3的第一个操作已完成,且机器1有空闲:15min+12min=27min
2 表示工件2的第三个操作,在机器1上完成:此时需等待工件2的第二个操作已完成,且机器1有空闲:30min+7min=37min
1 表示工件1的第三个操作,在机器3上完成:此时需等待工件1的第二个操作已完成,且机器3有空闲:40min+18min=58min
3 表示工件3的第三个操作,在机器2上完成:此时需等待工件3的第二个操作已完成,且机器2有空闲:40min+10min=50min
于是该染色体对应甘特图如下:

4713

被折叠的 条评论
为什么被折叠?



