一种连续配料料仓加料时序自动编制方法与流程

文档序号:12602448阅读:638来源:国知局
一种连续配料料仓加料时序自动编制方法与流程

本发明涉及冶金自动化技术,尤其涉及一种连续配料料仓加料时序自动编制方法。



背景技术:

使用混匀原料有利于高炉稳定生产提供优质铁水。为了提高原料混匀效果,目前国内很多钢铁企业都采用了由原料场向烧结厂供应混匀原料的工艺。混匀配料工艺主要由混匀配料槽、定量给料装置、混匀料场、混匀堆取料机及相关输送设备组成。通过定量给料装置控制混匀配料槽进行定量配料以实现按照炼铁工艺的实际配比要求进行混匀,再利用混匀堆取料机在混匀料场进行堆取操作完成堆料操作和取料操作。混匀配料槽一般包括多个料仓,以装填各种原料,由于混匀配比的不同,各个料仓的下料速度可能不同,因此如何科学合理的安排各个料仓的加料时序,保证混匀料槽的连续下料成为钢铁企业混匀料场在拥有各种硬件和工艺支持基础上必须具备的软实力。

目前国内钢铁企业的混匀料场调度普遍通过调度人员凭借经验组织混匀生产。在实际生产过程中容易出现时序控制不当导致混匀料槽断料。混匀料槽断料既降低了混匀生产效率,同时混匀料槽断料后,再次开启下料时,由于设备启动存在时差,会导致混匀不均,影响混匀质量。

综上所述,研发连续配料料仓加料时序自动编制的方法,以减少混匀料槽断料的发生,从而保证混匀料槽混匀能力的发挥和原料混匀质量。是进一步提高当前混匀料场原料混匀效果和生产控制水平的一个关键环节。同时从钢铁企业原料厂全局时序控制出发,研发连续配料料仓加料时序自动编制方法,是实现钢铁企业原料厂供卸料一体化调度的基础技术。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种连续配料料仓加料时序自动编制方法。

本发明解决其技术问题所采用的技术方案是:一种连续配料料仓加料时序自动编制方法,包括:

1)收集料仓参数信息;参数信息包括:料仓的料位上限lmax、料仓最小加料停止线l+min、料仓的料位下限lmin、允许开始加料的最高料位ls+、加料速度v+、加料小车的数量ncar、小车移动速度vcar、相邻料仓间距m,调度周期T;

2)获取调度初始状态和混匀任务要求的料槽运行信息;初始状态信息包括:料槽的初始下料状态、各个料仓的初始料位、小车的初始位置、小车的初始可用时刻、小车的初始任务;混匀任务要求的料槽运行信息包括:混匀料槽可使用的料仓、各个料仓的下料速度;将小车的初始任务的按照开始加料时刻从早到晚依次加入全局任务集J。料槽下料状态变化时刻集合TT设置为

3)启动连续配料料仓加料时序自动编制流程;具体步骤如下:

步骤3.1:启动时钟,设置t=0;

步骤3.2:选择加料料仓;选择加料料仓的方法如下:

3.2.1)检索供料任务集合中加料料仓编号为i且开始时刻小于等于t结束时刻大于t的任务;若结果不为空,则表示t时刻料仓i正在加料;若结果为空,则表示t时刻料仓无小车加料;

3.2.2)根据全局任务集合和料槽下料曲线,利用如下公式计算料仓i在t时刻的料位li,t

<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>

其中,li,0为料仓i的初始料位;表示时刻t前料仓i的加料总量,δi,t表示时刻t料仓i是否加料,表示时刻t前料仓i的下料总量,vi,-表示料仓i的下料速度,

利用料仓的持续下料能力计算公式

计算每个可用料仓的持续下料能力;

3.2.3)对可用料仓按照持续下料能力进行升序排序,选出持续下料能力最小的料仓作为加料料仓,记为i*

步骤3.3:计算步骤3.2中选中的料仓的最早和最晚开始加料时刻;具体计算方法如下:

3.3.1)利用公式1)计算当前时钟t时刻料仓的料位

3.3.2)判断是否小于等于lmin;若是,转至3.3.3);若否,转至3.3.4);

3.3.3)得到最晚开始加料时刻最早开始加料时刻结束;

3.3.4)判断是否小于等于ls+,若是则

3.3.5)在料槽下料状态变化时刻集合TT查找当前时钟时刻t之后的状态变化时刻;若查找结果为空,则转到3.3.6);若查找结果不为空,则转到3.3.7);

3.3.6)根据料槽初始下料状态和集合TT判断时刻t料槽的下料状态εt;若εt=1,则如果若εt=0,则如果

3.3.7)遍历3.3.5)中的查找结果,分段计算;求取满足

<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>

的最小的t';若找不到t'满足条件,则令t'=∞;求取满足

<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>

的最小的t”,若找不到t”满足条件,则令t”=∞,若找到则结束遍历;

步骤3.4):指定加料小车,确定开始加料时刻tsf和小车行走时长;具体过程如下:

3.4.1)计算在时刻t每个小车k对选中料仓i*的可用时刻和紧急可用时刻

若时刻t小车k无最近任务,则

<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>

其中idletk,0为小车k的初始可用时刻,pk,0为小车k的初始位置;

若时刻t小车k有最近任务j,且最近任务的结束时刻etj为∞,则判断小车能否在时刻t前加满;若能加满,则计算加满时刻tfull,

<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>m</mi> <mi>a</mi> <mi>x</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>

其中pj为任务j对应的料仓编号;否则小车k对选中料仓i*的紧急可用时刻为

<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>

其中,interupttj为任务j的允许打断时刻;

若时刻t小车k有最近任务j,且最近任务的结束时刻etj不为∞,则

<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>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>

3.4.2)搜索来得及为料仓i*加料的小车;若搜索结果不为空,则转到3.4.3);否则转到步骤3.4.4);

3.4.3)从搜索结果中选择行走距离最近的小车为料仓i*加料,记录选中的小车为k*,小车k*开始加料的时刻为

3.4.4)搜索对选中料仓i*的紧急可用时刻小于等于料仓i*的最晚加料时刻的小车;若搜索结果不为空,转到e);否则转到f);

3.4.5)从搜索结果中选择行走距离最近的小车为料仓i*加料,记录选中的小车为k*,小车k*开始加料的时刻为

3.4.6)选择对选中料仓i*的紧急可用时刻最小的小车为料仓i*加料,记录选中的小车为k*,小车k*开始加料的时刻为

步骤3.5:判断步骤3.4中计算的开始加料时刻是否大于等于调度周期T;若是,则转到步骤3.10若否,则转到步骤3.6;

步骤3.6:令t=sft;进行料槽停止下料检测;料槽停止下料检测的具体过程为:比较t和的大小,若则表示料仓i*在开始加料前已经断料;根据集合TT判断若则将加入TT;

步骤3.7:进行加满检测;具体过程如下:遍历所有小车k,若小车k上的任务j的结束时刻为∞,则根据料槽状态变化时刻集合获取料槽下料状态曲线,确定任务j能否在sft前加满,并确定加满时刻tfull;判断k是否等于k*,若是,则etj=min(tfull,sft-m|pj-i*|/vcar);若否,则判断任务j能否在sft前加满,若能加满,则判断任务j能否在完全不影响为其他料仓供料的情况下确定加满时刻,即要求tfull≤sft-max(pj-1,max(i)-pj),其中max(i)表示料仓编号的最大值,若tfull≤sft-max(pj-1,max(i)-pj),则etj=tfull

步骤3.8:添加新任务到供料任务集合中,并更新小车最近任务;假设新任务为j';新任务的加料料仓为i*,开始加料时刻为sft,可打断时刻为

步骤3.9:进行料槽开始下料检测,转到步骤3.2;料槽开始下料检测的具体过程为:计算新任务的料仓i*在时刻sft的料位计算小车将料仓i*料位加至最低料位以上的时刻tlmin,判断时刻tlmin其他料仓的料位是否均高于料仓的料位下限lmin;若是,则根据料槽下料曲线判断时刻tlmin的料槽下料状态,若时刻tlmin料槽下料状态则将tlmin加入集合TT;

步骤3.10:令t=T,进行料槽停止下料检测;

步骤3.11:强制任务截断;遍历所有小车k,计算各个小车作业料仓的加满时刻tfull,若tfull<T,则令小车上的作业的结束时刻为tfull;若tfull≥T,则令小车上的作业的结束时刻为T。

本发明产生的有益效果是:该方法可以解决混匀料场生产过程中混匀料槽中的各个料仓的加料时序控制问题,避免不必要的混匀料槽断料的发生。可以提高混匀料槽生产效率和混匀效果。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明实施例的方法流程图。

图2是本发明实施例中自动编制的料槽下料状态曲线结果示意图。

图3是本发明实施例中自动编制的各个料仓的料位曲线结果示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本实施例公开的是某钢铁企业工业港混匀料场中确定混匀料槽加料时序的方法。由于依靠人工编制混匀料槽加料时序,经常出现料槽断料的情况,影响混匀质量和料槽混匀能力的发挥,如何合理地确定各个料仓的加料时序,在已有条件下尽可能地保证料槽连续平稳地下料成为企业亟需解决的问题。

本发明提供的连续配料料仓加料时序自动编制方法,具体是:收集料槽的相关参数,作为时序控制的已知条件;输入调度开始时刻的各种初始状态信息和混匀任务要求的料槽运行信息;利用料仓加料需求,根据启发规则推进时钟编制连续配料料仓加料时序。由于料仓加料需求具有离散型,因此利用料仓加料需求推进时钟可以产生类似中断的效果,区别于固定步长推进时钟的方式,能够避免不必要的查询和计算,提升连续配料料仓加料时序编制的性能。

本实施例提供的连续配料料仓加料时序自动编制方法包括以下的步骤:

1)收集参数。本实例中混匀料场中的混匀料槽包括8个料仓,分别标记为1#、2#、…、8#.本实例所收集到的工艺参数主要有:料仓的料位上限lmax=920t、料仓最小加料停止线l+min=800t、料仓的料位下限lmin=460t、允许开始加料的最高料位ls+=560t、加料速度v+=33.33t/min、加料小车的数量ncar=3、小车移动速度vcar=8.16m/min、相邻料仓间距m=12m,调度周期T=480min.

2)输入调度初始状态和混匀任务要求的料槽运行信息。本实施例中设置:料槽的初始下料状态为断料,即ε0=0,8个料仓的初始料位用向量表示为[30,300,100,30,90,30,400,30]t,3个小车的位置用料仓编号来表示,小车的初始位置向量为[1,2,3],3个小车的初始可用时刻向量为[0,0,0],3个小车在调度开始时刻均无最近任务;混匀料槽可使用所有料仓,8个料仓的下料速度用向量表示为[3.67,1.83,11,3.67,7.33,2.93,4.4,1.83]t/min.设置供料任务集合为料槽下料状态变化时刻集合

3)启动连续配料料仓加料时序自动编制流程。如图1所示为连续配料料仓加料时序自动编制算法流程。具体步骤如下:

步骤1:启动时钟,设置t=0。

步骤2:选择加料料仓。选择加料料仓的方法如下:

a)检索供料任务集合中加料料仓编号为i且开始时刻小于等于t结束时刻大于t的任务。若结果不为空,则表示t时刻料仓i正在加料;若结果为空,则表示t时刻料仓无小车加料。

b)根据全局任务集合和料槽下料曲线,利用如下公式计算料仓i在t时刻的料位li,t

<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>2</mn> <mo>)</mo> </mrow> </mrow>

其中,li,0为料仓i的初始料位;表示时刻t前料仓i的加料总量,δi,t表示时刻t料仓i是否加料,表示时刻t前料仓i的下料总量,vi,-表示料仓i的下料速度,

利用料仓的持续下料能力计算公式

计算每个可用料仓的持续下料能力。

c)对可用料仓按照持续下料能力进行升序排序,选出持续下料能力最小的料仓作为加料料仓,记为i*.

步骤3:计算步骤2中选中的料仓的最早和最晚开始加料时刻。具体计算方法如下:

a)利用公式1)计算当前时钟t时刻料仓的料位

b)判断是否小于等于lmin.若是,转至c);若否,转至d)。

c)最晚开始加料时刻最早开始加料时刻结束。

d)判断是否小于等于ls+,若是则

e)在料槽下料状态变化时刻集合TT查找当前时钟时刻t之后的状态变化时刻。若查找结果为空,则转到f);若查找结果不为空,则转到g)。

f)根据料槽初始下料状态和集合TT判断时刻t料槽的下料状态εt。若εt=1,则如果若εt=0,则如果

g)遍历e)中的查找结果,分段计算。求取满足

<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>

的最小的t';若找不到t'满足条件,则令t'=∞;求取满足

<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>

的最小的t”,若找不到t”满足条件,则令t”=∞,若找到则结束遍历。

步骤4:指定加料小车,确定开始加料时刻tsf和小车行走时长。具体过程如下:

a)计算在时刻t每个小车k对选中料仓i*的可用时刻和紧急可用时刻

若时刻t小车k无最近任务,则

<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> <mo>;</mo> </mrow>

若时刻t小车k有最近任务j,且最近任务的结束时刻etj为∞,则判断小车能否在时刻t前加满。若能加满,则计算加满时刻tfull,

<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>m</mi> <mi>a</mi> <mi>x</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>

其中pj为任务j对应的料仓编号。否则小车k对选中料仓i*的紧急可用时刻为

<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>

其中,interupttj为任务j的允许打断时刻。

若时刻t小车k有最近任务j,且最近任务的结束时刻etj不为∞,则

<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>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>

b)搜索来得及为料仓i*加料的小车。若搜索结果不为空,则转到c);否则转到步骤d);

c)从搜索结果中选择行走距离最近的小车为料仓i*加料,记录选中的小车为k*,小车k*开始加料的时刻为

d)搜索对选中料仓i*的紧急可用时刻小于等于料仓i*的最晚加料时刻的小车。若搜索结果不为空,转到e);否则转到f);

e)从搜索结果中选择行走距离最近的小车为料仓i*加料,记录选中的小车为k*,小车k*开始加料的时刻为

f)选择对选中料仓i*的紧急可用时刻最小的小车为料仓i*加料,记录选中的小车为k*,小车k*开始加料的时刻为

步骤5:判断步骤4中计算的开始加料时刻是否大于等于调度周期T。若是,则转到步骤10;若否,则转到步骤6。

步骤6:令t=sft;进行料槽停止下料检测。料槽停止下料检测的具体过程为:比较t和的大小,若则表示料仓i*在开始加料前已经断料。根据集合TT判断若则将加入TT;

步骤7:进行加满检测。具体过程如下:遍历所有小车k,若小车k上的任务j的结束时刻为∞,则根据料槽状态变化时刻集合获取料槽下料状态曲线,确定任务j能否在sft前加满,并确定加满时刻tfull。判断k是否等于k*,若是,则etj=min(tfull,sft-m|pj-i*|/vcar);若否,则判断任务j能否在sft前加满,若能加满,则判断任务j能否在完全不影响为其他料仓供料的情况下确定加满时刻,即要求tfull≤sft-max(pj-1,max(i)-pj),其中max(i)表示料仓编号的最大值,若tfull≤sft-max(pj-1,max(i)-pj),则etj=tfull

步骤8:添加新任务到供料任务集合中,并更新小车最近任务。假设新任务为j';新任务的加料料仓为i*,加料小车为开始加料时刻为sft,可打断时刻为

步骤9:进行料槽开始下料检测,转到步骤2。料槽开始下料检测的具体过程为:计算新任务的料仓i*在时刻sft的料位计算小车将料仓i*料位加至最低料位以上的时刻tlmin,判断时刻tlmin其他料仓的料位是否均高于料仓的料位下限lmin。若是,则根据料槽下料曲线判断时刻tlmin的料槽下料状态,若时刻tlmin料槽下料状态则将tlmin加入集合TT;

步骤10:令t=T,进行料槽停止下料检测。

步骤11:强制任务截断。遍历所有小车k,计算各个小车作业料仓的加满时刻tfull,若tfull<T,则令小车上的作业的结束时刻为tfull;若tfull≥T,则令小车上的作业的结束时刻为T;

连续配料料仓加料时序算法运行完毕,输出在周期T内的编制结果。图2给出了本实施例的料槽下料状态曲线编制结果,从图中可以看出,在整个料槽开始下料后,未出现断料现象。图3给出了本实例的各个料仓的料位变化曲线编制结果图,从图中可以看各个料槽因下料速度的不同,加料的次数不同,并且均能在料仓料位下限以上稳定生产。另外,本是实施例的算法运行时间为0.1秒左右。综上所述,本发明的一种连续配料料仓加料时序自动编制方法,能够满足连续配料料仓的加料时序编制要求,同时具备较高的计算速度,能进一步为钢铁企业原料厂供受料一体化调度提供基础算法支持。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1