发明名称 一种存储时间受限的自动化立体仓库调度多目标优化方法
摘要 本发明涉及一种存储时间受限的自动化立体仓库调度多目标优化方法。本方法考虑到工业现场的实际情况,依据要优化的目标建立了带约束条件的多目标优化模型。由于多目标之间存在一定的矛盾,本发明结合pareto思想,采用禁忌搜索算法对该模型进行求解,并针对禁忌搜索算法自身的一些不足本发明对此进行了改进:一方面为解空间构造可行的初始解,并对其邻域结构进行了改进,另一方面采用惩罚策略使其在搜索过程中能够跳出局部最优。最终求出兼顾多个目标的pareto优化解。本发明不仅改善了产品的质量,而且提高了生产效率,取得了多目标优化的良好效果,具有很高的推广价值。
申请公布号 CN103049800B 申请公布日期 2016.08.03
申请号 CN201210547460.7 申请日期 2012.12.17
申请人 上海大学 发明人 邓丽;杨文强;费敏锐;陈息坤;王朝夕;瞿俊俊
分类号 G06Q10/04(2012.01)I 主分类号 G06Q10/04(2012.01)I
代理机构 上海上大专利事务所(普通合伙) 31205 代理人 何文欣
主权项 一种存储时间受限的自动化立体仓库调度多目标优化方法,其特征在于包括如下具体步骤:(1)对工业现场存在的约束及要优化的目标进行分析,并抽象为数学模型,所述数学模型是基于以下考虑建立的:①出入库延时对不同工艺的产品的影响程度不同;②基于节能降耗的目的对堆垛机出入库路径进行优化,因而得出优化的目标包括产品的质量以及产品出入库路径,其数学模型表示如下:<img file="FDA0000973129750000011.GIF" wi="1694" he="264" /><maths num="0001"><math><![CDATA[<mrow><msub><mi>f</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>e</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>m</mi><mo>+</mo><mi>n</mi></mrow></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>m</mi><mo>+</mo><mi>n</mi></mrow></munderover><msub><mi>d</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><msub><mi>e</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub></mrow>]]></math><img file="FDA0000973129750000012.GIF" wi="796" he="237" /></maths>min f(e)=(f<sub>1</sub>(e),f<sub>2</sub>(e))其中,f<sub>1</sub>(e)为任务完成时对产品质量的影响程度;f<sub>2</sub>(e)为完成任务堆垛机所行使的总距离;f(e)为待优化的目标;m,n分别为入出仓库产品的数量;C为堆垛机的容量;t<sub>ir</sub>为堆垛机在第r次出入库作业时第i个产品所用的时间;T<sub>ir</sub>为堆垛机在第r次出入库作业时第i个产品距离当前批出入库任务开始执行时的时间;d<sub>ij</sub>为堆垛机在某条路径下经过仓位v<sub>i</sub>和仓位v<sub>j</sub>之间的距离;e为完成当前出入库任务对应的仓位序列;e<sub>ij</sub>对堆垛机在某条路径下是否经过仓位v<sub>i</sub>和仓位v<sub>j</sub>进行标记;S<sub>r</sub>对堆垛机在当前路径下是否经过进行标记;(2)令pareto解集<img file="FDA0000973129750000013.GIF" wi="154" he="47" />禁忌表<img file="FDA0000973129750000014.GIF" wi="171" he="48" />(3)构建可行的初始解e<sub>0</sub>,并令当前解e<sub>c</sub>=e<sub>0</sub>,P=P∪{e<sub>0</sub>},其中构建所述初始解e<sub>0</sub>的步骤如下:首先对要入库和出库位置相对靠近的任务进行出入库配组,以满足现场的各种约束条件,接着对路径中距离相等的任务进行两两交换,形成初始解候选解集,从候选解中找出支配解集中的最小解,最终得出一个最优的出入库队列,从而构建出可行的初始解e<sub>0</sub>;(4)产生当前解e<sub>c</sub>的可行邻域N(e<sub>c</sub>),所述可行邻域N(e<sub>c</sub>)的产生是借助矩阵实现的,即由某个解产生邻域的过程中,只允许入库的产品之间或出库的产品之间以及同条路径中的产品进行两两位置互换,其实现过程如下:①首先根据初始解或当前解定义一个产品编号与路径编号相关联的矩阵P<sub>m×n</sub>,定义如下:<maths num="0002"><math><![CDATA[<mrow><msub><mi>P</mi><mrow><mi>m</mi><mo>&times;</mo><mi>n</mi></mrow></msub><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>n</mi><mn>11</mn></msub></mtd><mtd><msub><mi>n</mi><mn>12</mn></msub></mtd><mtd><mo>...</mo></mtd><mtd><msub><mi>n</mi><mrow><mn>1</mn><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>n</mi><mn>21</mn></msub></mtd><mtd><msub><mi>n</mi><mn>21</mn></msub></mtd><mtd><mo>...</mo></mtd><mtd><msub><mi>n</mi><mrow><mn>2</mn><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd></mtr><mtr><mtd><msub><mi>n</mi><mrow><mi>m</mi><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>n</mi><mrow><mi>m</mi><mn>2</mn></mrow></msub></mtd><mtd><mo>...</mo></mtd><mtd><msub><mi>n</mi><mrow><mi>m</mi><mi>n</mi></mrow></msub></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000973129750000021.GIF" wi="857" he="407" /></maths>其P<sub>m×n</sub>中的列表示所有待出入库的产品的编号,行表示每条出入库路径中待出入库产品的顺序,矩阵中元素的值表示路径编号,即处于该元素所在列的产品在当前调度顺序下属于哪条路径,即:<img file="FDA0000973129750000022.GIF" wi="1814" he="172" />②依据矩阵P<sub>m×n</sub>定义一个单位矩阵I<sub>n×n</sub>,其具体如下:<maths num="0003"><math><![CDATA[<mrow><msub><mi>I</mi><mrow><mi>n</mi><mo>&times;</mo><mi>n</mi></mrow></msub><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>...</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mo>...</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>...</mo></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000973129750000023.GIF" wi="1182" he="447" /></maths>以工业现场约束为条件对单位矩阵I<sub>n×n</sub>实施一系列的初等变换,变换后得到的初等矩阵记为:I1<sub>n×n</sub>,I2<sub>n×n</sub>……In<sub>n×n</sub>;③P<sub>m×n</sub>左乘I1<sub>n×n</sub>,I2<sub>n×n</sub>……In<sub>n×n</sub>实现同条路径中产品出入库顺序的改变;P<sub>m×n</sub>右乘I1<sub>n×n</sub>,I2<sub>n×n</sub>……In<sub>n×n</sub>实现不同路径中产品出入库顺序的改变;这样就产生了初始解或当前解的可行邻域;(5)遍历任一e∈N(e<sub>c</sub>),如果禁忌对象<img file="FDA0000973129750000034.GIF" wi="259" he="60" />则根据pareto解的定义更新P=P∪{e},并把A(e)加入TL;否则不更新P;(6)如果在搜索过程中,连续10代pareto解没有得到更新,则启用惩罚策略,使搜索跳出局部最优,所述惩罚策略即对进入禁忌表中禁忌对象的次数进行记录,其记录次数的函数用penalty(e)表示,其原理是:对任一进入禁忌表中的禁忌对象,其对应的penalty(e)初始值设为0,每当禁忌对象进入禁忌表时,令penalty(e)=penalty(e)+1,并以此对目标分量进行惩罚,当连续10代pareto解集没有更新时,启用惩罚策略,此时,目标分量z<sub>i</sub>(e)的值将变为<img file="FDA0000973129750000031.GIF" wi="126" he="68" /><maths num="0004"><math><![CDATA[<mrow><msubsup><mi>z</mi><mi>i</mi><mo>*</mo></msubsup><mrow><mo>(</mo><mi>e</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>z</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>e</mi><mo>)</mo></mrow><mo>+</mo><mi>w</mi><mo>&CenterDot;</mo><mi>p</mi><mi>e</mi><mi>n</mi><mi>a</mi><mi>l</mi><mi>t</mi><mi>y</mi><mrow><mo>(</mo><mi>e</mi><mo>)</mo></mrow><mo>,</mo><mi>i</mi><mo>&Element;</mo><mrow><mo>(</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>p</mi><mo>)</mo></mrow><mo>,</mo><mi>w</mi><mo>=</mo><msup><mi>pn</mi><mi>a</mi></msup></mrow>]]></math><img file="FDA0000973129750000032.GIF" wi="1542" he="95" /></maths>上式中w为惩罚权重,p为目标分量的个数,a为惩罚因子,pn为记录pareto解连续不变次数的变量,其具体为:初始化pn=0,每当pareto解不变时,若此后pareto解连续不变,则令pn=pn+1,直到pareto解开始变化时,若此时pn值小于10,则令pn=0,若pn=10,则启用惩罚策略,<img file="FDA0000973129750000033.GIF" wi="851" he="94" />其中pn与w满足关系式:w=pn<sup>a</sup>,并且a&gt;0,这样当pn增大时,w增大的更快,可以使搜索尽快地跳出局部最优;(7)如果搜索没有达到最大迭代次数,则从选择的pareto解集P中随机选择一个解作为当前解e<sub>c</sub>,并返回步骤(4);否则,停止搜索,并输出pareto解。
地址 200444 上海市宝山区上大路99号