发明名称 一种带有批处理机的跨作业单元调度方法
摘要 本发明涉及一种带有批处理机的跨作业单元调度方法,包括以下步骤:1.定义三种不同结构的信息素;2.初始化信息素;3.按照加工顺序,将每个零件的批处理工序之前的每道工序分派至机器;4.按照时间顺序,将每个机器上的每道工序排序;5.将零件组批、调度批处理工序;6.按照加工顺序,将每个零件的批处理工序之后的每道工序分派至机器;7.按照时间顺序,将每个机器上的每道工序排序;8.根据形成的解,更新信息素;9.若循环次数达到上限,或连续若干次最优解无变化,则结束;否则,转第2步。本发明能够解决生产过程中零件跨单元调度问题;能够处理生产过程中的批处理工序和非批处理工序的集成调度,并保证运行效率。
申请公布号 CN102938102A 申请公布日期 2013.02.20
申请号 CN201210398621.0 申请日期 2012.10.19
申请人 北京理工大学 发明人 李冬妮;孟宪文;王妍;王彤;王小海;金铮;郑伟;居玉辉;郝勇;谢洪涛;李弘;赵凯;潘树民;许清波;段勇;郑鸿;马小丽;闫锦锋;马开;赵瑞颖;邓卫云
分类号 G06Q10/06(2012.01)I 主分类号 G06Q10/06(2012.01)I
代理机构 代理人
主权项 1.一种带有批处理机的跨作业单元调度方法,包括以下步骤:第1步:定义如下表所示的索引和变量:表1索引和变量<img file="FDA00002276430400011.GIF" wi="1783" he="2254" />同时,定义三种不同结构的信息素:a)工序分派中的信息素结构在工序选择机器的过程中,定义一个O×M大小的矩阵来表示信息素,其中O表示工序总数,M表示机器总数,矩阵中的元素(O<sub>ij</sub>,k)表示工序O<sub>ij</sub>在机器上k上加工对应的信息素浓度;b)工序排序中的信息素结构在每台机器上的工序排序时,定义M个O×O大小的矩阵来表示信息素,其中O表示工序总数,第m个矩阵中的元素(O<sub>ij</sub>,k)表示机器m上工序O<sub>ij</sub>在此机器上第k个加工对应的信息素浓度;c)批处理机工序组批中的信息素结构在批处理工序组批的过程中,定义N×N大小的矩阵来表示信息素,其中N表示零件总数,元素(i,j)表示零件i与零件j在同一批次对应的信息素浓度;批处理工序组批时从可选零件列表中每次选择一个零件加入现有批,而批次的数目无法确定,故有式(1)所示定义:<img file="FDA00002276430400021.GIF" wi="1399" he="217" />其中,τ<sub>i,b</sub>表示将零件i加入批次b对应的信息素浓度,τ<sub>i,k</sub>表示零件i与零件k在同一批次对应的信息素浓度,|B<sub>b</sub>|表示B<sub>b</sub>中已有的零件个数;式(1)表示若批次b不为空,则零件i加入批次b对应的信息素浓度为,零件i分别与批次b中现有的零件在同一批次的信息素浓度之和,否则为定值1;第2步:进行初始化,输入机器信息、单元划分、单元间转移距离、须加工的零件总数及各零件的工艺信息,然后按照如下说明初始化信息素:a)初始化工序分派中的信息素<img file="FDA00002276430400022.GIF" wi="1432" he="133" />其中,τ<sub>i,j,m</sub>表示工序O<sub>ij</sub>在机器m上加工对应的信息素浓度,ε为信息素浓度初始值,定为0.01;b)初始化工序排序中的信息素<img file="FDA00002276430400023.GIF" wi="1432" he="133" />其中,在机器m上τ<sub>m,i,j,k</sub>表示工序O<sub>ij</sub>在第k个加工对应的信息素浓度,ε为信息素浓度初始值,定为0.01;c)初始化批处理机工序分批中的信息素<img file="FDA00002276430400031.GIF" wi="1432" he="115" />其中,τ<sub>i,k</sub>表示零件i和零件j在同一批次上加工对应的信息素浓度,ε为信息素浓度初始值,定为0.01;第3步:按照加工顺序,将每个零件的批处理工序之前的每道工序分派至机器,即对于每个零件按照工序的加工顺序依次为每道工序选定加工机器,每台机器被选中的概率为:<maths num="0001"><![CDATA[<math><mrow><msub><mi>Pr</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>m</mi></mrow></msub><mo>=</mo><mfrac><mrow><msubsup><mi>&tau;</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>m</mi></mrow><msub><mi>&alpha;</mi><mn>1</mn></msub></msubsup><msubsup><mi>&rho;</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>m</mi></mrow><msub><mi>&beta;</mi><mn>1</mn></msub></msubsup></mrow><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></msubsup><msubsup><mi>&tau;</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><msub><mi>&alpha;</mi><mn>1</mn></msub></msubsup><msubsup><mi>&rho;</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><msub><mi>&beta;</mi><mn>1</mn></msub></msubsup></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,Pr<sub>i,j,m</sub>表示工序O<sub>ij</sub>在机器上k上加工的概率,ρ<sub>i,j,k</sub>表示对应的启发式信息,α<sub>1</sub>、β<sub>1</sub>分别表示信息素浓度、启发式信息所占权重;由于考虑了零件的跨单元转移时间,故ρ<sub>i,j,k</sub>定义如下:<maths num="0002"><![CDATA[<math><mrow><msub><mi>&rho;</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>=</mo><mfrac><mn>1</mn><mrow><msub><mi>P</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>+</mo><msub><mi>TT</mi><mi>i</mi></msub><msub><mi>D</mi><mrow><msup><mi>m</mi><mo>&prime;</mo></msup><mo>,</mo><mi>k</mi></mrow></msub></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,P<sub>i,j,k</sub>表示O<sub>ij</sub>在机器上k上的加工时间,TT<sub>i</sub>D<sub>m′,k</sub>表示零件i单位距离转移时间与前道工序加工的机器m’到机器k的转移距离之积,即零件i对应的转移时间;由启发式信息公式可看出,在工序分派时优先选择加工时间和转移时间之和较小的机器;得到工序在每台可选的机器上加工的概率后,以轮盘赌算法随机选定某台机器加工该工序;第4步:按照时间顺序,将每个机器上的每道工序排序,即在工序分派的基础上,确定每台机器上工序的加工先后顺序以及起始时间;具体方法为:对于每台机器,从其可调度工序中,根据以下公式所示概率,以轮盘赌算法随机选择一道工序安排在下一个加工;重复此过程,直至所有工序均被调度;<maths num="0003"><![CDATA[<math><mrow><msub><mi>Pr</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>=</mo><mfrac><mrow><msubsup><mi>&tau;</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><msub><mi>&alpha;</mi><mn>2</mn></msub></msubsup><msubsup><mi>&rho;</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><msub><mi>&beta;</mi><mn>2</mn></msub></msubsup></mrow><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>l</mi><mo>=</mo><mn>1</mn></mrow><mi>O</mi></msubsup><msubsup><mi>&tau;</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>l</mi></mrow><msub><mi>&alpha;</mi><mn>2</mn></msub></msubsup><msubsup><mi>&rho;</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>l</mi></mrow><msub><mi>&beta;</mi><mn>2</mn></msub></msubsup></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,Pr<sub>m,i,j,l</sub>表示机器m上O<sub>ij</sub>在第l个加工的概率,ρ<sub>m,i,j,l</sub>表示对应的启发式信息,α<sub>2</sub>、β<sub>2</sub>分别表示信息素浓度、启发式信息所占权重;工件排序的启发式信息综合考虑了零件的跨单元转移时间和机器的准备时间,同时零件的跨单元转移时间和机器的准备时间事实上是可以重叠的,即在零件的转移过程中,对应的机器可以开始为加工该零件做准备,故启发式信息定义如式(8)所示:<maths num="0004"><![CDATA[<math><mrow><msub><mi>&rho;</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mi>max</mi><mrow><mo>(</mo><msub><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>TT</mi><mi>i</mi></msub><msub><mi>D</mi><mrow><msup><mi>m</mi><mo>&prime;</mo></msup><mo>,</mo><mi>m</mi></mrow></msub><msub><mi>TE</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>+</mo><msub><mi>l</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><msub><mi>ST</mi><mrow><mi>i</mi><mo>,</mo><mi>m</mi></mrow></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>TE</mi><mrow><mi>m</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,f<sub>i,j-l</sub>表示工件i的第j-1道工序加工结束的时间,D<sub>m′,m</sub>表示从加工工件上一道工序的机器m’到机器m的转移距离,l<sub>i,j</sub>用于标记机器上前一个加工的零件所属零件族:l<sub>i,j</sub>=0表示工件i在机器上第一个加工或机器上前一个加工的工件与工件i属于同一零件族,l<sub>i,j</sub>=1表示机器上前一个加工的工件与工件i不属于同一零件族,TE<sub>m,i,j</sub>表示机器m上O<sub>ij</sub>的前一道工序的结束时刻,max(f<sub>i,j-1</sub>+T T<sub>i</sub>D<sub>i,j,m</sub>,TE<sub>m,i,j</sub>+l<sub>i,j</sub>ST<sub>i,j,m</sub>)-TE<sub>m,i,j</sub>则表示从前一道工序结束到O<sub>ij</sub>开始加工所花费的实际时间;由启发式信息公式可知,在工序排序时,优先调度能较早开始加工的工序;在工序排序过程中,对于任意一台机器,其可调度工序为分派至该机器的工序中,任一零件的第一道工序或前一道工序已被排序的工序的集合;第5步:将零件组批、调度批处理工序,即决策将哪些零件的批处理工序放在批处理机的同一批次进行加工,具体方法为:Step1.选择到达时间最早的零件,加入本批次;Step2.更新候选零件集,候选零件集的定义为:若b为任一批次,则其候选零件集为以下集合:<maths num="0005"><![CDATA[<math><mrow><msub><mi>CL</mi><mi>b</mi></msub><mo>=</mo><mo>{</mo><mi>k</mi><mo>|</mo><msub><mi>J</mi><mi>k</mi></msub><mo>=</mo><msub><mi>J</mi><mi>l</mi></msub><mo>,</mo><mo>&ForAll;</mo><mi>l</mi><mo>&Element;</mo><msub><mi>B</mi><mi>b</mi></msub><mi>and</mi><msub><mi>S</mi><mi>k</mi></msub><mo>&lt;</mo><mo>-</mo><msub><mi>C</mi><mi>B</mi></msub><mo>-</mo><msub><mi>&Sigma;</mi><mrow><mi>l</mi><mo>&Element;</mo><msub><mi>B</mi><mi>b</mi></msub></mrow></msub><msub><mi>S</mi><mi>l</mi></msub><mi>and&Delta;WI</mi><msub><mi>S</mi><mi>b</mi></msub><mo>&lt;</mo><mn>0</mn><mo>}</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths>即任一批次的候选零件集,为所有与其中零件同一零件族且加入此批次后不会使批次中零件总大小超过批处理机容量或批次浪费和空闲空间增加的零件的集合;对于批处理机的一个批次b,b的浪费和空闲空间WIS<sub>b</sub>为该批次浪费空间WS<sub>b</sub>和空闲空间IS<sub>b</sub>之和,对于一个批处理工序的调度解S,WIS(S)表示S的浪费和空闲空间,等于S的所有批次的WIS之和;WS和IS的定义如下:<maths num="0006"><![CDATA[<math><mrow><msub><mi>WS</mi><mi>b</mi></msub><mo>=</mo><msub><mi>C</mi><mi>B</mi></msub><mo>&CenterDot;</mo><msub><mi>P</mi><mi>b</mi></msub><mo>-</mo><msub><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><msub><mi>B</mi><mi>b</mi></msub></mrow></msub><msub><mi>S</mi><mi>i</mi></msub><mo>&CenterDot;</mo><msub><mi>P</mi><mi>iM</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow></math>]]></maths>IS<sub>b</sub>=C<sub>B</sub>·(BS<sub>b</sub>-BE<sub>b-1</sub>)                                (11)其中,BS<sub>b</sub>,BE<sub>b</sub>分别表示批次b的开始和结束时间,P<sub>iM</sub>为零件i的批处理工序加工时间,且当b=0时,令BE<sub>b-1</sub>为初始时刻,故有:<maths num="0007"><![CDATA[<math><mrow><msub><mi>WIS</mi><mi>b</mi></msub><mo>=</mo><msub><mi>WS</mi><mi>b</mi></msub><mo>+</mo><msub><mi>IS</mi><mi>b</mi></msub><mo>=</mo><msub><mi>C</mi><mi>B</mi></msub><mo>&CenterDot;</mo><msub><mi>P</mi><mi>b</mi></msub><mo>-</mo><munder><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><msub><mi>B</mi><mi>b</mi></msub></mrow></munder><msub><mi>S</mi><mi>i</mi></msub><mo>&CenterDot;</mo><msub><mi>P</mi><mi>iM</mi></msub><mo>+</mo><msub><mi>C</mi><mi>B</mi></msub><mo>&CenterDot;</mo><mrow><mo>(</mo><msub><mi>BS</mi><mi>b</mi></msub><mo>-</mo><msub><mi>BE</mi><mrow><mi>b</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0008"><![CDATA[<math><mrow><mo>=</mo><msub><mi>C</mi><mi>B</mi></msub><mo>&CenterDot;</mo><mrow><mo>(</mo><msub><mi>BE</mi><mi>b</mi></msub><mo>-</mo><msub><mi>BE</mi><mrow><mi>b</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><msub><mi>B</mi><mi>b</mi></msub></mrow></msub><msub><mi>S</mi><mi>i</mi></msub><mo>&CenterDot;</mo><msub><mi>P</mi><mi>iM</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>12</mn><mo>)</mo></mrow></mrow></math>]]></maths>Step3.按照以下公式计算候选零件集中零件被选中的概率,然后以轮盘赌算法选择其中一个零件加入本批次;<img file="FDA00002276430400054.GIF" wi="1442" he="216" />其中,α<sub>3</sub>、β<sub>3</sub>分别表示信息素浓度、启发式信息所占权重,Pr<sub>i,b</sub>表示零件i加入批次b的概率,<img file="FDA00002276430400055.GIF" wi="1373" he="157" />ΔWS<sub>i,b</sub>=WS<sub>b′</sub>-WS<sub>b</sub>=C<sub>B</sub>·(S<sub>b′</sub>-S<sub>b</sub>)+C<sub>B</sub>·(P<sub>b′</sub>-P<sub>b</sub>)-S<sub>i</sub>P<sub>i</sub>  (15)Step4.若候选零件集不为空,转至Step2,否则继续执行Step5;Step5.若还有零件尚未组批,转至Step1,继续组建下一批次,否则结束;第6步:按照加工顺序,将每个零件的批处理工序之后的每道工序分派至机器,方法同第3步;第7步:按照时间顺序,将每个机器上的每道工序排序,方法同第4步;第8步:根据形成的解,更新信息素,更新规则为:对于最优解集合中每一个解,a)若工序O<sub>ij</sub>分派至机器m,则τ<sub>i,j,m</sub>=(1-ρ)·τ<sub>i,j,m</sub>+ρ·Δτb)若工序O<sub>ij</sub>在机器m上第k个加工,则τ<sub>m,i,j,k</sub>=(1-ρ)·τ<sub>m,i,j,k</sub>+ρ·Δτc)若零件O<sub>i</sub>加入批次b,则<maths num="0009"><![CDATA[<math><mrow><msub><mi>&tau;</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>=</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&rho;</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><msub><mi>&tau;</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>+</mo><mi>&rho;</mi><mo>&CenterDot;</mo><mi>&Delta;&tau;</mi><mo>,</mo><mo>&ForAll;</mo><mi>k</mi><mo>&Element;</mo><msub><mi>B</mi><mi>b</mi></msub></mrow></math>]]></maths>其中,ρ表示信息素挥发率,Δτ为信息素更新量:<maths num="0010"><![CDATA[<math><mrow><mi>&Delta;&tau;</mi><mo>=</mo><mi>Q</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msub><mi>&gamma;</mi><mn>1</mn></msub><mfrac><msubsup><mi>C</mi><mi>max</mi><mi>l</mi></msubsup><msubsup><mi>C</mi><mi>max</mi><mi>g</mi></msubsup></mfrac><mo>+</mo><msub><mi>&gamma;</mi><mn>2</mn></msub><mfrac><msup><mi>R</mi><mi>l</mi></msup><msup><mi>R</mi><mi>g</mi></msup></mfrac><mo>+</mo><msub><mi>&gamma;</mi><mn>3</mn></msub><mfrac><msup><mi>&Delta;TW</mi><mi>l</mi></msup><msub><mi>&Delta;TW</mi><mi>g</mi></msub></mfrac><mo>)</mo></mrow></mrow></math>]]></maths>Q为信息素更新量影响因子,γ<sub>1</sub>,γ<sub>2</sub>,γ<sub>3</sub>为三个优化目标的权值,分别表示对三个优化目标:最大完工时间、批处理机利用率、非批处理工序和批处理工序之间等待时间的重视程度,且γ<sub>1</sub>+γ<sub>2</sub>+γ<sub>3</sub>=1,<img file="FDA00002276430400063.GIF" wi="436" he="119" />分别表示该调度解的总完工时间,批处理机利用率,非批处理工序和批处理工序之间总等待时间与当前最优解的比值;第9步:若循环次数达到上限,或连续若干次最优解无变化,则结束;否则,转第2步;在以上步骤中用户参数的设置范围为:<tables num="0001"><table><tgroup cols="2"><colspec colname="c001" colwidth="50%" /><colspec colname="c002" colwidth="50%" /><tbody><row><entry morerows="1"> 参数</entry><entry morerows="1">  取值范围</entry></row><row><entry morerows="1"> α<sub>1</sub>=α<sub>2</sub>=α<sub>3</sub></entry><entry morerows="1">  1</entry></row><row><entry morerows="1"> β<sub>1</sub>=β<sub>2</sub></entry><entry morerows="1">  (0,4)</entry></row><row><entry morerows="1"> β<sub>3</sub></entry><entry morerows="1">  (0,4)</entry></row><row><entry morerows="1"> ρ</entry><entry morerows="1">  (0,1)</entry></row><row><entry morerows="1"> τ_max</entry><entry morerows="1">  (1,10)</entry></row><row><entry morerows="1"> Q</entry><entry morerows="1">  (0,τ_max)</entry></row></tbody></tgroup></table></tables>
地址 100081 北京市海淀区中关村南大街5号