发明名称 一种连续配料料仓加料时序自动编制方法
摘要 本发明公开了一种连续配料料仓加料时序自动编制方法,该方法包括以下步骤:收集料槽的相关参数,作为时序控制的已知条件;获取调度开始时刻的各种初始状态信息和混匀任务要求的料槽运行信息;利用料仓加料需求,根据启发规则推进时钟编制连续配料料仓加料时序。由于料仓加料需求具有离散型,因此利用料仓加料需求推进时钟可以产生类似中断的效果,区别于固定步长推进时钟的方式,能够避免不必要的查询和计算,提升连续配料料仓加料时序编制的性能。本发明方法可以解决混匀料场生产过程中混匀料槽中的各个料仓的加料时序控制问题,避免不必要的混匀料槽断料的发生。可以提高混匀料槽生产效率和混匀效果。
申请公布号 CN106327096A 申请公布日期 2017.01.11
申请号 CN201610764107.2 申请日期 2016.08.30
申请人 中冶南方工程技术有限公司 发明人 梁小兵;赵菁;路万林
分类号 G06Q10/06(2012.01)I;G06Q50/04(2012.01)I;B65G65/00(2006.01)I 主分类号 G06Q10/06(2012.01)I
代理机构 湖北武汉永嘉专利代理有限公司 42102 代理人 唐万荣
主权项 一种连续配料料仓加料时序自动编制方法,其特征在于,包括:1)收集料仓参数信息;参数信息包括:料仓的料位上限l<sub>max</sub>、料仓最小加料停止线l<sub>+min</sub>、料仓的料位下限l<sub>min</sub>、允许开始加料的最高料位l<sub>s+</sub>、加料速度v<sub>+</sub>、加料小车的数量n<sub>car</sub>、小车移动速度v<sub>car</sub>、相邻料仓间距m,调度周期T;2)获取调度初始状态和混匀任务要求的料槽运行信息;初始状态信息包括:料槽的初始下料状态、各个料仓的初始料位、小车的初始位置、小车的初始可用时刻、小车的初始任务;混匀任务要求的料槽运行信息包括:混匀料槽可使用的料仓、各个料仓的下料速度;将小车的初始任务的按照开始加料时刻从早到晚依次加入全局任务集J;料槽下料状态变化时刻集合TT设置为<img file="FDA0001099827540000011.GIF" wi="99" he="51" />3)启动连续配料料仓加料时序自动编制流程;具体步骤如下:步骤3.1:启动时钟,设置t=0;步骤3.2:选择加料料仓;选择加料料仓的方法如下:3.2.1)检索供料任务集合中加料料仓编号为i且开始时刻小于等于t结束时刻大于t的任务;若结果不为空,则表示t时刻料仓i正在加料;若结果为空,则表示t时刻料仓无小车加料;3.2.2)根据全局任务集合和料槽下料曲线,利用如下公式计算料仓i在t时刻的料位l<sub>i,t</sub>;<maths num="0001"><math><![CDATA[<mrow><msub><mi>l</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi></mrow></msub><mo>=</mo><msub><mi>l</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>+</mo><msubsup><mo>&Integral;</mo><mn>0</mn><mi>t</mi></msubsup><msub><mi>v</mi><mo>+</mo></msub><msub><mi>&delta;</mi><mrow><mi>i</mi><mo>,</mo><mi>t</mi></mrow></msub><mi>d</mi><mi>t</mi><mo>-</mo><msubsup><mo>&Integral;</mo><mn>0</mn><mi>t</mi></msubsup><msub><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mo>-</mo></mrow></msub><msub><mi>&epsiv;</mi><mi>t</mi></msub><mi>d</mi><mi>t</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001099827540000021.GIF" wi="1150" he="87" /></maths>其中,l<sub>i,0</sub>为料仓i的初始料位;<img file="FDA0001099827540000022.GIF" wi="182" he="93" />表示时刻t前料仓i的加料总量,δ<sub>i,t</sub>表示时刻t料仓i是否加料,<img file="FDA0001099827540000023.GIF" wi="726" he="146" /><img file="FDA0001099827540000024.GIF" wi="182" he="95" />表示时刻t前料仓i的下料总量,v<sub>i,‑</sub>表示料仓i的下料速度,<img file="FDA0001099827540000025.GIF" wi="678" he="146" />利用料仓的持续下料能力计算公式<img file="FDA0001099827540000026.GIF" wi="1206" he="151" />计算每个可用料仓的持续下料能力;3.2.3)对可用料仓按照持续下料能力进行升序排序,选出持续下料能力最小的料仓作为加料料仓,记为i<sup>*</sup>;步骤3.3:计算步骤3.2中选中的料仓的最早和最晚开始加料时刻;具体计算方法如下:3.3.1)利用公式1)计算当前时钟t时刻料仓的料位<img file="FDA0001099827540000027.GIF" wi="83" he="70" />3.3.2)判断<img file="FDA0001099827540000028.GIF" wi="59" he="70" />是否小于等于l<sub>min</sub>;若是,转至3.3.3);若否,转至3.3.4);3.3.3)得到最晚开始加料时刻<img file="FDA0001099827540000029.GIF" wi="171" he="63" />最早开始加料时刻<img file="FDA00010998275400000210.GIF" wi="155" he="63" />结束;3.3.4)判断<img file="FDA00010998275400000211.GIF" wi="59" he="69" />是否小于等于l<sub>s+</sub>,若是则<img file="FDA00010998275400000212.GIF" wi="154" he="62" />3.3.5)在料槽下料状态变化时刻集合TT查找当前时钟时刻t之后的状态变化时刻;若查找结果为空,则转到3.3.6);若查找结果不为空,则转到3.3.7);3.3.6)根据料槽初始下料状态和集合TT判断时刻t料槽的下料状态ε<sub>t</sub>;若ε<sub>t</sub>=1,则<img file="FDA0001099827540000031.GIF" wi="518" he="71" />如果<img file="FDA0001099827540000032.GIF" wi="707" he="70" />若ε<sub>t</sub>=0,则<img file="FDA0001099827540000033.GIF" wi="171" he="62" />如果<img file="FDA0001099827540000034.GIF" wi="395" he="68" />3.3.7)遍历3.3.5)中的查找结果,分段计算;求取满足<maths num="0002"><math><![CDATA[<mrow><msub><mi>l</mi><mrow><mi>s</mi><mo>+</mo></mrow></msub><mo>=</mo><msub><mi>l</mi><mrow><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>+</mo><msubsup><mo>&Integral;</mo><mi>t</mi><msup><mi>t</mi><mo>&prime;</mo></msup></msubsup><msub><mi>v</mi><mo>+</mo></msub><msub><mi>&delta;</mi><mrow><mi>i</mi><mo>,</mo><mi>x</mi></mrow></msub><mi>d</mi><mi>x</mi><mo>-</mo><msubsup><mo>&Integral;</mo><mi>t</mi><msup><mi>t</mi><mo>&prime;</mo></msup></msubsup><msub><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mo>-</mo></mrow></msub><msub><mi>&epsiv;</mi><mi>x</mi></msub><mi>d</mi><mi>x</mi></mrow>]]></math><img file="FDA0001099827540000035.GIF" wi="622" he="104" /></maths>的最小的t′;若找不到t′满足条件,则令t′=∞;求取满足<maths num="0003"><math><![CDATA[<mrow><msub><mi>l</mi><mi>min</mi></msub><mo>=</mo><msub><mi>l</mi><mrow><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>+</mo><msubsup><mo>&Integral;</mo><mi>t</mi><msup><mi>t</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup></msubsup><msub><mi>v</mi><mo>+</mo></msub><msub><mi>&delta;</mi><mrow><mi>i</mi><mo>,</mo><mi>x</mi></mrow></msub><mi>d</mi><mi>x</mi><mo>-</mo><msubsup><mo>&Integral;</mo><mi>t</mi><msup><mi>t</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup></msubsup><msub><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mo>-</mo></mrow></msub><msub><mi>&epsiv;</mi><mi>x</mi></msub><mi>d</mi><mi>x</mi></mrow>]]></math><img file="FDA0001099827540000036.GIF" wi="638" he="103" /></maths>的最小的t″,若找不到t″满足条件,则令t″=∞,若找到则结束遍历;<img file="FDA0001099827540000037.GIF" wi="358" he="80" />步骤3.4):指定加料小车,确定开始加料时刻t<sub>sf</sub>和小车行走时长;具体过程如下:3.4.1)计算在时刻t每个小车k对选中料仓i<sup>*</sup>的可用时刻<img file="FDA0001099827540000038.GIF" wi="186" he="70" />和紧急可用时刻<img file="FDA0001099827540000039.GIF" wi="342" he="71" />若时刻t小车k无最近任务,则<maths num="0004"><math><![CDATA[<mrow><msub><mi>urgentavailt</mi><mrow><mi>k</mi><mo>,</mo><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>=</mo><msub><mi>availt</mi><mrow><mi>k</mi><mo>,</mo><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>=</mo><mi>m</mi><mi>a</mi><mi>x</mi><mrow><mo>(</mo><mi>t</mi><mo>,</mo><msub><mi>idlet</mi><mrow><mi>k</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>+</mo><mi>m</mi><mo>|</mo><mrow><msub><mi>p</mi><mrow><mi>k</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>-</mo><msup><mi>i</mi><mo>*</mo></msup></mrow><mo>|</mo><mo>/</mo><msub><mi>v</mi><mrow><mi>c</mi><mi>a</mi><mi>r</mi></mrow></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA00010998275400000310.GIF" wi="1218" he="86" /></maths>其中idlet<sub>k,0</sub>为小车k的初始可用时刻,p<sub>k,0</sub>为小车k的初始位置;若时刻t小车k有最近任务j,且最近任务的结束时刻et<sub>j</sub>为∞,则判断小车能否在时刻t前加满;若能加满,则计算加满时刻t<sub>full</sub>,<maths num="0005"><math><![CDATA[<mrow><msub><mi>availt</mi><mrow><mi>k</mi><mo>,</mo><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>=</mo><mi>max</mi><mrow><mo>(</mo><mi>t</mi><mo>,</mo><msub><mi>t</mi><mrow><mi>f</mi><mi>u</mi><mi>l</mi><mi>l</mi></mrow></msub><mo>+</mo><mi>m</mi><mo>|</mo><mrow><msub><mi>p</mi><mi>j</mi></msub><mo>-</mo><msup><mi>i</mi><mo>*</mo></msup></mrow><mo>|</mo><mo>/</mo><msub><mi>v</mi><mrow><mi>c</mi><mi>a</mi><mi>r</mi></mrow></msub><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA00010998275400000311.GIF" wi="802" he="79" /></maths>其中p<sub>j</sub>为任务j对应的料仓编号;否则<img file="FDA00010998275400000312.GIF" wi="282" he="63" />小车k对选中料仓i<sup>*</sup>的紧急可用时刻为<maths num="0006"><math><![CDATA[<mrow><msub><mi>urgentavailt</mi><mrow><mi>k</mi><mo>,</mo><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>=</mo><mi>m</mi><mi>a</mi><mi>x</mi><mrow><mo>(</mo><mi>t</mi><mo>,</mo><msub><mi>interuptt</mi><mi>j</mi></msub><mo>+</mo><mi>m</mi><mo>|</mo><mrow><msub><mi>p</mi><mi>j</mi></msub><mo>-</mo><msup><mi>i</mi><mo>*</mo></msup></mrow><mo>|</mo><mo>/</mo><msub><mi>v</mi><mrow><mi>c</mi><mi>a</mi><mi>r</mi></mrow></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001099827540000041.GIF" wi="1022" he="78" /></maths>其中,interuptt<sub>j</sub>为任务j的允许打断时刻;若时刻t小车k有最近任务j,且最近任务的结束时刻et<sub>j</sub>不为∞,则<maths num="0007"><math><![CDATA[<mrow><msub><mi>urgentavailt</mi><mrow><mi>k</mi><mo>,</mo><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>=</mo><msub><mi>availt</mi><mrow><mi>k</mi><mo>,</mo><msup><mi>i</mi><mo>*</mo></msup><mo>,</mo><mi>t</mi></mrow></msub><mo>=</mo><mi>max</mi><mrow><mo>(</mo><mi>t</mi><mo>,</mo><msub><mi>et</mi><mi>j</mi></msub><mo>+</mo><mi>m</mi><mo>|</mo><mrow><msub><mi>p</mi><mi>j</mi></msub><mo>-</mo><msup><mi>i</mi><mo>*</mo></msup></mrow><mo>|</mo><mo>/</mo><msub><mi>v</mi><mrow><mi>c</mi><mi>a</mi><mi>r</mi></mrow></msub><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0001099827540000042.GIF" wi="1142" he="78" /></maths>3.4.2)搜索来得及为料仓i<sup>*</sup>加料的小车;若搜索结果不为空,则转到3.4.3);否则转到步骤3.4.4);3.4.3)从搜索结果中选择行走距离最近的小车为料仓i<sup>*</sup>加料,记录选中的小车为k<sup>*</sup>,小车k<sup>*</sup>开始加料的时刻为<img file="FDA0001099827540000043.GIF" wi="541" he="71" />3.4.4)搜索对选中料仓i<sup>*</sup>的紧急可用时刻小于等于料仓i<sup>*</sup>的最晚加料时刻的小车;若搜索结果不为空,转到e);否则转到f);3.4.5)从搜索结果中选择行走距离最近的小车为料仓i<sup>*</sup>加料,记录选中的小车为k<sup>*</sup>,小车k<sup>*</sup>开始加料的时刻为<img file="FDA0001099827540000044.GIF" wi="622" he="70" />3.4.6)选择对选中料仓i<sup>*</sup>的紧急可用时刻最小的小车为料仓i<sup>*</sup>加料,记录选中的小车为k<sup>*</sup>,小车k<sup>*</sup>开始加料的时刻为<img file="FDA0001099827540000045.GIF" wi="619" he="71" />步骤3.5:判断步骤3.4中计算的开始加料时刻是否大于等于调度周期T;若是,则转到步骤3.10若否,则转到步骤3.6;步骤3.6:令t=sft;进行料槽停止下料检测;料槽停止下料检测的具体过程为:比较t和<img file="FDA0001099827540000051.GIF" wi="74" he="63" />的大小,若<img file="FDA0001099827540000052.GIF" wi="211" he="71" />则表示料仓i<sup>*</sup>在开始加料前已经断料;根据集合TT判断<img file="FDA0001099827540000053.GIF" wi="115" he="67" />若<img file="FDA0001099827540000054.GIF" wi="379" he="79" />则将<img file="FDA0001099827540000055.GIF" wi="77" he="67" />加入TT;步骤3.7:进行加满检测;具体过程如下:遍历所有小车k,若小车k上的任务j的结束时刻为∞,则根据料槽状态变化时刻集合获取料槽下料状态曲线,确定任务j能否在sft前加满,并确定加满时刻t<sub>full</sub>;判断k是否等于k<sup>*</sup>,若是,则et<sub>j</sub>=min(t<sub>full</sub>,sft‑m|p<sub>j</sub>‑i<sup>*</sup>|/v<sub>car</sub>);若否,则判断任务j能否在sft前加满,若能加满,则判断任务j能否在完全不影响为其他料仓供料的情况下确定加满时刻,即要求t<sub>full</sub>≤sft‑max(p<sub>j</sub>‑1,max(i)‑p<sub>j</sub>),其中max(i)表示料仓编号的最大值,若t<sub>full</sub>≤sft‑max(p<sub>j</sub>‑1,max(i)‑p<sub>j</sub>),则et<sub>j</sub>=t<sub>full</sub>;步骤3.8:添加新任务到供料任务集合中,并更新小车最近任务;假设新任务为j′;新任务的加料料仓为i<sup>*</sup>,开始加料时刻为sft,可打断时刻为<img file="FDA0001099827540000056.GIF" wi="686" he="77" />步骤3.9:进行料槽开始下料检测,转到步骤3.2;料槽开始下料检测的具体过程为:计算新任务的料仓i<sup>*</sup>在时刻sft的料位<img file="FDA0001099827540000057.GIF" wi="107" he="70" />计算小车将料仓i<sup>*</sup>料位加至最低料位以上的时刻t<sub>lmin</sub>,<img file="FDA0001099827540000058.GIF" wi="694" he="71" />判断时刻t<sub>lmin</sub>其他料仓的料位是否均高于料仓的料位下限l<sub>min</sub>;若是,则根据料槽下料曲线判断时刻t<sub>lmin</sub>的料槽下料状态,若时刻t<sub>lmin</sub>料槽下料状态<img file="FDA0001099827540000059.GIF" wi="410" he="70" />则将t<sub>lmin</sub>加入集合TT;步骤3.10:令t=T,进行料槽停止下料检测;步骤3.11:强制任务截断;遍历所有小车k,计算各个小车作业料仓的加满时刻t<sub>full</sub>,若t<sub>full</sub><T,则令小车上的作业的结束时刻为t<sub>full</sub>;若t<sub>full</sub>≥T,则令小车上的作业的结束时刻为T。
地址 430223 湖北省武汉市东湖新技术开发区大学园路33号