发明名称 一种基于指标补偿的平均流经时间快速预测方法
摘要 平均流经时间是企业关注的一个重要调度性能指标。利用基于软计算等的调度方法进行优化调度过程中,需要对调度策略进行全局仿真以获得对应的平均流经时间指标,且上述过程需多次进行,若对整个较大规模生产线建立精确仿真模型并对调度策略进行全局仿真,其耗时较长,因而,对平均流经时间指标进行快速预测,对提高调度算法的性能具有重要意义。本发明公开了一种基于指标补偿的平均流经时间快速预测方法,该方法通过将机器组划分为瓶颈和非瓶颈机器组,进而松弛非瓶颈机器组加工能力建立简化调度模型,然后利用SVM(支持向量机)获得简化调度模型和非简化调度模型对应的平均流经时间指标之间的补偿关系,从而实现对平均流经时间指标的快速预测。
申请公布号 CN101782769A 申请公布日期 2010.07.21
申请号 CN201010119399.7 申请日期 2010.03.08
申请人 清华大学 发明人 刘民;郭路;郝井华
分类号 G05B19/418(2006.01)I 主分类号 G05B19/418(2006.01)I
代理机构 代理人
主权项 1.一种基于指标补偿的平均流经时间快速预测方法,其特征在于,所述方法是在计算机上依次按以下步骤实现的:步骤(1):初始化:基于从实际生产过程中得到的如下信息:整个生产线中机器组数量、每个机器组对应的机器数量、待调度的工件种类及各类的数量、各类工件的工艺路径、各工件每个操作的加工时间,形成原调度问题;步骤(2):初始化完成后,将各机器组的调度规则设为SRPT规则(剩余加工时间最小者优先规则),按以下步骤进行瓶颈机器组的识别:步骤(2.1):进行原调度问题的仿真,获得各操作到达机器组缓冲区的时间和该操作加工完成时间的仿真结果数据;步骤(2.2):按下式确定各个操作流经机器组的时间<img file="FSA00000031348200011.GIF" wi="85" he="49" /><maths num="0001"><![CDATA[<math><mrow><msub><mi>&delta;</mi><mrow><msub><mi>j</mi><mi>k</mi></msub><mi>l</mi></mrow></msub><mo>=</mo><msub><mi>b</mi><mrow><msub><mi>j</mi><mi>k</mi></msub><mi>l</mi></mrow></msub><mo>-</mo><msub><mi>a</mi><mrow><msub><mi>j</mi><mi>k</mi></msub><mi>l</mi></mrow></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>;</mo><mi>l</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi></mrow></math>]]></maths>其中,<img file="FSA00000031348200013.GIF" wi="152" he="49" />分别为第j个工件在机器组l上加工的第k个操作到达机器组缓冲区的时间和该操作加工完成时间;m为机器组的数量;n为工件的数量;步骤(2.3):按下式计算流经机器组l对应的所有操作的平均流经时间为δ<sub>l</sub>:<maths num="0002"><![CDATA[<math><mrow><msub><mover><mi>&delta;</mi><mo>&OverBar;</mo></mover><mi>l</mi></msub><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>l</mi><mi>j</mi></msub></munderover><msub><mi>&delta;</mi><mrow><msub><mi>j</mi><mi>k</mi></msub><mi>l</mi></mrow></msub></mrow><mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>l</mi><mi>j</mi></msub></mrow></mfrac></mrow></math>]]></maths>式中n为工件数量,l<sub>j</sub>表示第j个工件在机器组l上加工的操作数量;步骤(2.4):按下式计算所有工件的平均流经时间f:<maths num="0003"><![CDATA[<math><mrow><mover><mi>f</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>l</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>l</mi><mi>j</mi></msub><msub><mover><mi>&delta;</mi><mo>&OverBar;</mo></mover><mi>l</mi></msub></mrow><mi>n</mi></mfrac></mrow></math>]]></maths>步骤(2.5):按照δ<sub>l</sub>从大到小的顺序进行机器组瓶颈程度排序,记排序后的各机器组δ<sub>l</sub>值序列为{β<sub>1</sub>,β<sub>2</sub>,…,β<sub>m</sub>},按下式确定瓶颈机器组数量b:<maths num="0004"><![CDATA[<math><mrow><munder><mi>min</mi><mi>b</mi></munder><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>b</mi></munderover><msub><mi>&beta;</mi><mi>i</mi></msub></mrow><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msub><mi>&beta;</mi><mi>i</mi></msub></mrow></mfrac><mo>&GreaterEqual;</mo><mn>80</mn><mo>%</mo></mrow></math>]]></maths>选取{β<sub>1</sub>,β<sub>2</sub>,…,β<sub>m</sub>}中前b个值所对应的机器组为瓶颈机器组;步骤(3):在瓶颈机器组识别基础上,按如下步骤进行调度模型简化:步骤(3.1):保持瓶颈机器组对应的相关调度约束不变,包括保持不可中断约束、机器唯一性约束和工件唯一性约束不变;步骤(3.2):松弛非瓶颈机器组加工能力为无穷大,即不考虑操作在非瓶颈机器组上的等待时间,直接用相应操作的加工时间作为其在该机器组上的流经时间;步骤(4):在瓶颈机器组识别和调度模型简化基础上,按照如下步骤提取训练SVM(支持向量机)需要的输入特征属性向量和输出目标属性数据,并对SVM相关参数进行训练:步骤(4.1):对各机器组对应的待调度的所有操作分别随机产生一个排序,将排序结果作为一条调度策略,基于上述简化调度模型对生产线进行仿真,获得各工件完工时间序列{sf<sub>1</sub>,sf<sub>2</sub>,…,sf<sub>n</sub>}(满足sf<sub>1</sub>≤sf<sub>2</sub>≤…≤sf<sub>n</sub>),并计算其对应的平均流经时间如下:<maths num="0005"><![CDATA[<math><mrow><mover><mi>sf</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>sf</mi><mi>i</mi></msub></mrow><mi>n</mi></mfrac></mrow></math>]]></maths>步骤(4.2):基于上述获得的工件完工时间序列,按如下步骤提取SVM输入特征属性向量:步骤(4.2.1):按下式确定工件完工时间序列中相邻工件的完工时间间隔,形成工件完工时间间隔数据序列t<sub>1</sub>,t<sub>2</sub>,…,t<sub>n-1</sub>:t<sub>i</sub>=sf<sub>i+1</sub>-sf<sub>i</sub>,i=1,2,…,n-1步骤(4.2.2):按照下式将上述工件完工时间间隔数据序列依次分成K组,记N=n-1,每组的个数为:<maths num="0006"><![CDATA[<math><mrow><msub><mi>b</mi><mi>k</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mo>[</mo><mi>N</mi><mo>/</mo><mi>K</mi><mo>]</mo><mo>,</mo><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>K</mi><mo>-</mo><mn>1</mn></mtd></mtr><mtr><mtd><mi>N</mi><mo>-</mo><mo>[</mo><mi>N</mi><mo>/</mo><mi>K</mi><mo>]</mo><mo>&times;</mo><mrow><mo>(</mo><mi>K</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mi>k</mi><mo>=</mo><mi>K</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>步骤(4.2.3):按下式提取工件完工时间间隔数据序列的特征属性向量:X=[m<sub>m</sub>,m<sub>σ</sub>,σ<sub>m</sub>,σ<sub>σ</sub>]<sup>T</sup>其中:X表示当前训练样本的输入特征属性向量<maths num="0007"><![CDATA[<math><mrow><msub><mi>m</mi><mi>tk</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><msub><mi>b</mi><mi>k</mi></msub><mo>+</mo><mn>1</mn></mrow><mrow><mi>k</mi><mo>&times;</mo><msub><mi>b</mi><mi>k</mi></msub></mrow></munderover><msub><mi>t</mi><mi>i</mi></msub></mrow><msub><mi>b</mi><mi>k</mi></msub></mfrac><mo>,</mo></mtd><mtd><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>K</mi><mo>-</mo><mn>1</mn></mtd></mtr><mtr><mtd><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mrow><mo>(</mo><mi>K</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><msub><mi>b</mi><mi>k</mi></msub><mo>+</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>t</mi><mi>i</mi></msub></mrow><msub><mi>b</mi><mi>k</mi></msub></mfrac><mo>,</mo></mtd><mtd><mi>k</mi><mo>=</mo><mi>K</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths><maths num="0008"><![CDATA[<math><mrow><msub><mi>&sigma;</mi><mi>tk</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mfrac><mn>1</mn><msub><mi>b</mi><mi>k</mi></msub></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><msub><mi>b</mi><mi>k</mi></msub><mo>+</mo><mn>1</mn></mrow><mrow><mi>b</mi><mo>&times;</mo><msub><mi>b</mi><mi>k</mi></msub></mrow></munderover><msup><mrow><mo>(</mo><msub><mi>t</mi><mi>i</mi></msub><mo>-</mo><msub><mi>m</mi><mi>tk</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>,</mo></mtd><mtd><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>K</mi><mo>-</mo><mn>1</mn></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><msub><mi>b</mi><mi>k</mi></msub></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mrow><mo>(</mo><mi>K</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><msub><mi>b</mi><mi>k</mi></msub><mo>+</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><mrow><mo>(</mo><msub><mi>t</mi><mi>i</mi></msub><mo>-</mo><msub><mi>m</mi><mi>tk</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>,</mo></mtd><mtd><mi>k</mi><mo>=</mo><mi>K</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths><maths num="0009"><![CDATA[<math><mrow><msub><mi>m</mi><mi>m</mi></msub><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mi>m</mi><mi>tk</mi></msub></mrow><mi>K</mi></mfrac><mo>,</mo></mrow></math>]]></maths><maths num="0010"><![CDATA[<math><mrow><msub><mi>m</mi><mi>&sigma;</mi></msub><mo>=</mo><mfrac><mn>1</mn><mi>K</mi></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msup><mrow><mo>(</mo><msub><mi>m</mi><mi>tk</mi></msub><mo>-</mo><msub><mi>m</mi><mi>m</mi></msub><mo>)</mo></mrow><mn>2</mn></msup></mrow></math>]]></maths><maths num="0011"><![CDATA[<math><mrow><msub><mi>&sigma;</mi><mi>m</mi></msub><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mi>&sigma;</mi><mi>tk</mi></msub></mrow><mi>K</mi></mfrac><mo>,</mo></mrow></math>]]></maths><maths num="0012"><![CDATA[<math><mrow><msub><mi>&sigma;</mi><mi>&sigma;</mi></msub><mo>=</mo><mfrac><mn>1</mn><mi>K</mi></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msup><mrow><mo>(</mo><msub><mi>&sigma;</mi><mi>tk</mi></msub><mo>-</mo><msub><mi>&sigma;</mi><mi>m</mi></msub><mo>)</mo></mrow><mn>2</mn></msup></mrow></math>]]></maths>步骤(4.3):基于步骤(4.1)中所得到的调度策略,对原调度问题基于非简化模型进行仿真,利用步骤(2.4)的计算公式,得到所有工件的平均流经时间f,按照下式确定当前训练样本中的目标属性值:Δf=f-sf步骤(4.4):重复步骤(4.1)~步骤(4.3)直至满足设定的训练样本数量S要求,按下式形成训练样本集:输入特征属性向量集:XX=[X<sub>1</sub>,X<sub>2</sub>,…,X<sub>S</sub>]输出目标属性集:ff=[Δf<sub>1</sub>,Δf<sub>2</sub>,…,Δf<sub>S</sub>]步骤(4.5):利用训练样本集给出的输入特征属性向量集和输出目标属性集,对SVM进行训练;训练完成后,建立SVM回归函数为:<maths num="0013"><![CDATA[<math><mrow><mi>&Delta;</mi><msub><mi>f</mi><mi>y</mi></msub><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>S</mi></munderover><mrow><mo>(</mo><msup><msub><mi>&alpha;</mi><mi>i</mi></msub><mo>*</mo></msup><mo>-</mo><msub><mi>&alpha;</mi><mi>i</mi></msub><mo>)</mo></mrow><mi>K</mi><mrow><mo>(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>,</mo><mi>X</mi><mo>)</mo></mrow><mo>+</mo><mi>b</mi></mrow></math>]]></maths>其中:<img file="FSA00000031348200038.GIF" wi="587" he="139" />为高斯核函数,γ为高斯核函数宽度参数,b为训练得到的阈值,Δf<sub>y</sub>(X)为对输入特征属性向量X的预测值,即平均流经时间的补偿量,α<sub>i</sub><sup>*</sup>、α<sub>i</sub>为训练完成后得到的参数;步骤(5):在得到原调度问题的简化调度模型及用于计算平均流经时间补偿值的SVM后,在调度算法的优化过程中,对给定的调度策略,按照如下步骤确定平均流经时间指标预测值:步骤(5.1):根据优化调度过程中给定的调度策略,提取SVM需要的输入特征属性向量X;步骤(5.2):利用训练得到的SVM回归函数,计算平均流经时间补偿值:<maths num="0014"><![CDATA[<math><mrow><mi>&Delta;</mi><msub><mi>f</mi><mi>y</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>S</mi></munderover><mrow><mo>(</mo><msup><msub><mi>&alpha;</mi><mi>i</mi></msub><mo>*</mo></msup><mo>-</mo><msub><mi>&alpha;</mi><mi>i</mi></msub><mo>)</mo></mrow><mi>K</mi><mrow><mo>(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>,</mo><mi>X</mi><mo>)</mo></mrow><mo>+</mo><mi>b</mi></mrow></math>]]></maths>步骤(5.3):按下式计算上述调度策略对应的平均流经时间指标预测值:<maths num="0015"><![CDATA[<math><mrow><msub><mover><mi>f</mi><mo>&OverBar;</mo></mover><mi>y</mi></msub><mo>=</mo><mover><mi>sf</mi><mo>&OverBar;</mo></mover><mo>+</mo><mi>&Delta;</mi><msub><mi>f</mi><mi>y</mi></msub><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>sf</mi><mi>i</mi></msub></mrow><mi>n</mi></mfrac><mo>+</mo><mi>&Delta;</mi><msub><mi>f</mi><mi>y</mi></msub></mrow></math>]]></maths>其中:f<sub>y</sub>为平均流经时间指标预测值。
地址 100084 北京市100084信箱82分箱清华大学专利办公室