信息与控制
INFORMATION AND CONTROL
1999年 第28卷 第2期 Vol.28 No.2 1999



解Job-shop调度问题的混合模拟退火进化规划
翁妙凤
　　摘要　提出运用混合模拟退火进化规划(SAEP)求解Job-shop调度问题.首先介绍了SAEP和进化规划(EP)的不同选择方法以及他们的变异算子,最后给出了仿真实例,并比较了这两种算法的优劣.
　　关键词　模拟退火法，进化规划，调度问题
SAEP ALGORITHM OF SOLVING JOB-SHOP SCHEDULING PROBLEM
WENG Miaofeng
(East China Shipbuilding Institute,Zhenjiang,212003)
　　Abstract　In this paper,a combined evolutionary programming (SAEP) with simulated annealing is presented to solve Job-shop scheduling problem.Two different selected methods between SAEP and EP and their mutation operators are discussed,and simulation results are given to illustrate the efficiency of the presented algorithm,and a comparison between the two algorithms is also presented.
　　Key words　simulated annealing algorithm,evolutionary programming,scheduling problem
　　1　引言
　　文中研究的Job-shop调度问题(记为JSSP)为：(1)设有n个工件分为r类：J={J1,J2,…,Jn},Ji∈[1,r]；每类工件有各自特定的不可改变的操作顺序；(2)有m台机器，M={M1,M2,…,Mm}；每台机器可加工若干操作,不同的机器能加工的操作不全相同且完成相同操作的加工时间也不相同;(3)机器加工各操作所需的安装时间与此机器加工前一操作有关.文中的安装时间是指刀具更换时间；(4)当机器最初和加工结束后处于空闲等待状态时,视为0操作；空闲等待时可以先换刀具；(5)每类工件有各自的交货期限要求；(6)工件在零时刻都可得且当工件的每一操作加工完了没有自动活动车辆调度.
　　求 合理地将工件的各操作分配到可加工的机器上,在满足各工件的操作顺序和交货期限的约束条件下，使n个工件的加工时间最短.
　　2　JSSP混合模拟退火进化规划实现
　　2.1　个体表示
　　文中用二维矩阵S=[sij]m×L表示个体,sij∈整数闭区间[0,L],其中m表示机器数,L表示n个工件的总操作数.除零矩阵元素(称零元素)外,任一矩阵元素值均不相等,且每一非零矩阵元素(称非零元素)值表示n个工件的所有工序统一编号.如文中的仿真实例,将10个工件的总33个工序统一编号(见表1).
表1　10个工件的总33个工序统一编号

123456789101112131415161718192021222324252627282930313233
A1C1B1D1A2C2B2D2A3C3B3D3B4D4E4B5D5E5B6D6E6B7A7F7B8A8F8B9A9F9B10A10F10

(注：表中字母A～F表示操作类型，其右上角数字表示工件号)
　　在矩阵S中,无用零元素都在行右,即siki≠0,有siu=0(i=1,2,…,m；u=ki+1,…,L),=L(di为S中第i行上非零元素个数).
　　个体满足可行解的约束条件为 ①机器约束：每一操作必须在可供使用的机器上加工；零元素满足机器约束(可在任何机器上加工).②操作顺序约束：对任一工件,其第1个工序在矩阵中的列号小于第2个工序的列号,中间工序的列号大于前一工序的列号而小于后一工序的列号,最后工序的列号大于前一工序的列号(本文所述工序次序,皆指同一工件而言).
　　设sij,skt(j≠t)为一工件的两个工序.当sij-1=0时,称sij有空闲等待；当skt=sij-1且t<j时,称skt为sij的前一工序；当skt=sij+1且t>j时,称skt为sij的后一工序.
　　2.2　初始群体的设定
　　(1)先给任一个体矩阵S置零,然后按如下步骤随机给L个矩阵元素置不同(1～L)的整数值,且满足可行解的约束条件
for p:=1 to L　do
　　查表(如表1)判p在工件中的工序次序；if p是第1个工序 then {根据p的操作类型,随机产生可供使用的行号(机器) i并在(1,10)内随机产生列号j,置sij:=p}
　　else (即p为中间工序或最后工序) {根据p的操作类型,随机产生可供使用的行号(机器)k,并在S中找到p的前一工序的列号g,在[g+1,L]中随机产生一列号t(g+1≤t≤L),置skt:=p}.
　　endfor
　　在建立初始群体时,由于顺序将1到L个工序给个体的基因置初值,每个工序的后一工序必定在该工序之后出现,故不必找后一工序的列号.
　　(2)通过立体搜索，前移个体矩阵中的非零元素
　　对个体矩阵S逐行(行号i从1到(i+1) mod m)逐列(列号j从1或断点到L)扫描非零元素sij,若sij是第1个工序则前移到本行的第1个零元素处(互换)并置前移标志,否则{判工序sij的前一工序(sij-1)是否前移过,若前移过则由j向左找(sij-1)的列号t(t<j),将sij前移到i行t列后的第1个零元素处(互换)；若(sij-1)未前移过则把sij作断点,扫描下一行}等直到S中的L个非零元素全部前移,而无用零移到行右.
　　2.3　适应值的计算
　　在通过立体搜索,前移个体的非零元素过程中求得其适应值.设a(s′ij-1,s′ij),t(sij)和L(sij)分别为个体S中工序sij在机器i上的安装时间,运行时间和完工时间；s′ij-2,s′ij-1和s′ij分别为sij-2,sij-1和sij的操作类型；a(A,B)为操作A变为操作B的安装时间(换刀时间)；令当j-1=0时,s′ij-1=0,L(sij-1)=0；当j-2=0时,sij-2=0,s′ij-2=0,L(sij-2)= 0.
　　(1)求任一工序sij的完工时间L(sij)
　　①sij为第1个工序：L(sij)=L(sij-1)+a(s′ij-1,s′ij)+t(sij)；②sij为非第1个工序：(a)当sij-1=0(有空闲等待)时,若L(sij-2)+min[a(s′ij-2,0)+a(0,s′ij),a(s′ij-2,s′ij)]>L(sij-1)且sij-2≠0则L(sij)=L(sij-2)+min[a(s′ij-2,0)+a(0,s′ij),a(s′ij-2,s′ij)]+t(sij),否则L(sij)=L(sij-1)+t(sij)；(b) sij-1≠0(无空闲等待)时,L(sij)=max[L（sij-1）+a(s′ij-1,s′ij),（sij-1）]+t(sij).
　　(2)求任一机器i上最右(后)一个操作(非零元素)的完工时间Ti和任一工件k的完工时间LL(k)

　　由工序统一编号表中查得任一工件k的最后一个工序x,求出x的完工时间L(x),置LL(k)=L(x).
　　(3)求个体S的适应值f

　　其中β为合适的惩罚系数,D(k)为工件k的交货时间.群体中求得的个体最小适应值,即为n个工件的加工时间.
　　2.4　EP的选择算子
　　置初始群体规模为偶数,将每代群体按适应值升序排序.取排在前50%(最佳)的个体复制到下一代,余下的个体进行变异,若变异不成功,则作为下一代保存,否则将产生的子个体经立体搜索,前移非零元素后保存到下一代.
　　2.5　SAEP选择机制
　　由于模拟退火法(SA)在搜索过程中,随机地接受某些劣化解,因而具有较强的全局搜索能力,能够跳出局部极小点；而上EP最佳个体保存选样算子会导致局部最优个体急速增加,进化有可能过早收敛,陷入局部最优解；因此文中混合使用SA和EP(称SAEP)来改善上EP变异后的选择机制.文中的仿真实例中，初始温度T0=1,Tt+1=0.9Tt,(每代降温率为0.9),由于收敛判据为1000代,故没有设置终止温度.接受概率依Metrolis准则:y2<y1或exp(-(y2-y1)/T)>ρ时子个体替换其父个体(y1是父个体的适应值,y2是子个体的适应值,T是温度系数,ρ是0和1之间均匀分布的随机数).在变异中,设i1变异为i2,若i2的适应值比i1的适应值小,则用i2替换i1,否则i2按概率替换i1.
　　将变异后替换过的父个体进行立体搜索,前移非零元素,然后将全部父个体保存到下一代.
　　2.6　变异算子
　　进化规划只有变异算子而没有用交叉算子.文中SAEP和EP采用相同的6种变算子.为了使个体经变异后能满足操作顺序约束要求,须先求需要移动的工序之移动区.
　　(1)个体中非零元素移动区的确定
　　设个体S中元素sij的移动区为开区间(wt,wr)；wt为sij的前一工序(sij-1)在S中的列号,wr为sij的后一工序(sij+1)在S中的列号.只有wr-wt>2时才能对该个体进行变异,否则重选待移动的非零元素,直到该非零元素移动区的长度>2时为止.当sij=0时,sij的移动区为(0,L+1),故不用求零元素的移动区.
　　(2)变异算子
　　将需要变异的个体，随机选样如下6种变异算子中的一种进行变异
　　①win(互换个体同行上的两个矩阵元素)
　　在个体S中,随机选择一个非零元素sij，获sij的移动区(a1,a2).在(a1,a2)内随机产生一列号k(a1<k<a2),若求得sij的移动区(a3,a4)包含sij(a3<j<a4),则可互换sij和sik(sik值可为0).
　　②Wbt(互换个体两个不同行上的矩阵元素)
　　(a)在个体S中,随机找一个非零元素sij；(b)获得其移动区(a1,a2),在(a1,a2)内随机产生一列号t,并随机产生一可加工sij的操作类型之行号(机器)k(k≠i.若k=i重新产生k,或只有k=i,重找sij,转(b).若求得skt的移动区(a3,a4)包含sij(a3<j<a4),且行号(机器)i可加工skt的操作类型,则可互换sij与skt(skt值可为零).
　　③ Sin(将个体中的一个非零元素与其移动区内同行零元素互换,(WinSin).
　　④ Sbt(将个体中操作数最多行上的一个非零元素与其移动区内的另一可加工其操作类型行上的零元素互换).
　　⑤Tin(将引起个体中某行最右一个有空闲等待工序的前一工序移到其移动区内同行的零元素处).
　　在个体S中,随机产生一行号i.在i行上找最右一个有空闲等待的工序sij=0,sij-1=0.找到sij的前一工序(sij-1)的行号k,列号t,移动区(a1,a2)；将skt前移到k行上的(a1,t)内的第一个零元素处(互换).
　　⑥Tbt(将引起个体中某行最右一个有空闲等待工序的前一工序移到其移动区内并可加工其操作类型另一行上的第一个零元素处(互换).
　　上述变异算子产生的子个体均满足可行解的约束条件.
　　3　仿真结果
　　设有10个工件在四台机器上加工；J1～J3为第1类工件,J4～J6为第2类工件,J7～J10为第3类工件.各类工件所需的操作为第1类：A,C,B,D；第2类：B,D,E；第3类：B,A,F.这3类工件的交货期限分别为190,95,181.10个工件的工序总数为33；其统一编号见表1.4台机器加工各操作所需安装时间见表2,各操作在机器上的运行时间见表3.表3还反映了四台机器各自能加工的操作类型.
表2　四台机器加工各操作所需安装时间

　M1M2M3M4
0ABCF0BCDE0BDF0EF
002.52.01.82.101.51.41.82.201.31.71.201.92.1
A1.400.41.51.8
B1.31.700.60.91.701.82.00.81.801.51.8
C1.81.62.101.91.31.901.51.2
D　0.41.01.801.51.62.001.5
E1.51.51.41.30　1.802.1
F2.21.61.31.10　0.41.61.701.41.60

表3　各操作在机器上的运行时间

　ABCDEF
M117.2524.4518.68　　13.88
M2　18.9515.7217.4518.67
M317.54　21.45　19.76
M4　15.4319.45

　　仿真实例的群体规模=100,收敛判据=1000代，惩罚系数β=2000(实验得到).采用SAEP和EP两种算法的调度结果见图1和图2.两种算法的仿真结果比较见表4(CPU时间=算法得到最优解(收敛时)在奔腾586机上所需时间(s)).

图1　采用SAEP所得调度结果

图2　采用EP所得调度结果
表4　SAEP和EP的结果比较

　SAEPEP
最佳适应值180.72187.01
收敛代数869772 
CPU时间260(S)150(S)

（注：表2和表3中无数字的表项为无意义、非法表项）
　　从仿真结果,SAEP得到的加工时间为180.72,而EP得到的加工时间为187.01.这两种算法均能找到较为满意的调度结果,且各工件的完工时间均能满足交货期限要求.但相比之下SAEP的解优于EP,收敛代数比EP多97代,但CPU时间(收敛速度)比EP慢得多,SAEP的CPU时间为EP的1.73倍.
　　4　结论
　　(1) SAEP和EP两种算法求解JSSP都是有效可行的.
　　(2)由于SA以一定的概率接受较差的个体,改进了GA的选择机制,所以SAEP可以搜索整个空间,不易陷入局部最优解,不受搜索空间的限制性假设的约束,可优化多峰函数,克服了EP的“过早收敛”问题,但EP收敛速度比SAEP快得多.
　　(3)在两种算法中,文中用惩罚函数法处理了工件的交货期限约束；用抛弃不可行解法处理了机器约束和操作顺序约束,虽然一般抛弃不可行解法的搜索效率较低,但本算法在个体进行变异时,使需要移动的矩阵元素只能在其移动区内移动,进行数对互换,大大地减少了不可行解的数目,从而表明算法设计的个体表示和变异算子在解决JSSP上是成功和有效的.
作者简介：翁妙凤，女，58岁，副教授．研究领域为计算机软件及人工智能．
作者单位：华东船舶工业学院　镇江　212003
参考文献
　1　Yip P,Yoh-han Pao.Combinatorial Optimization With Use of Guided Evolutionary 　Simulated Annealing.IEEE Trans.Neural Networks,1995,6(2) : 290～295
　2　姚新，陈国良等.进化算法研究进展.计算机学报,1995,18(9),694～705
　3　方剑等.基于事件驱动的Job-Shop仿真调度系统.系统仿真学报,1997,9(4) : 42～50
1998-08-18收稿
