本发明涉及冶金自动化技术,尤其涉及一种连续配料料仓加料作业延迟自动调整方法。
背景技术:
使用混匀原料有利于高炉稳定生产提供优质铁水。为了提高原料混匀效果,目前国内很多钢铁企业都采用了由原料场向烧结厂供应混匀原料的工艺。混匀配料工艺主要由混匀配料槽、定量给料装置、混匀料场、混匀堆取料机及相关输送设备组成。通过定量给料装置控制混匀配料槽进行定量配料以实现按照炼铁工艺的实际配比要求进行混匀,再利用混匀堆取料机在混匀料场进行堆取操作完成堆料操作和取料操作。
混匀配料槽一般包括多个料仓,以装填各种原料,由于混匀配比的不同,各个料仓的下料速度可能不同,科学合理地安排各个料仓的加料作业以保证混匀料槽的连续下料成为钢铁企业混匀料场必须具备的软实力。混匀配料料槽的各个料仓的加料计划,一般是在某一时间点根据各种规则和算法计算得出的静态计划。由于加料过程中需要使用的堆取料机、带式运输机和卸料小车等调度设备,在实际生产中,调度设备由于各种原因可能导致延迟,无法及时执行静态计划中的既定任务,造成静态计划无法继续执行下去的情况。因此在连续配料料仓加料过程中必须对作业延迟的扰动进行自动调整,产生新的时序计划以指导实际生产。
技术实现要素:
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种连续配料料仓加料作业延迟自动调整方法。
本发明解决其技术问题所采用的技术方案是:一种连续配料料仓加料作业延迟自动调整方法,包括以下步骤:
1)收集参数;参数信息包括:料仓的料位上限lmax、料仓最小加料停止线l+min、料仓的料位下限lmin、允许开始加料的最高料位ls+、加料速度v+、加料小车的数量ncar、小车移动速度vcar、相邻料仓间距m,调度周期T;
2)获取原调度初始状态和混匀任务要求的料槽运行信息;原初始状态信息包括:料槽的初始下料状态、各个料仓的初始料位、小车的初始位置、小车的初始可用时刻、小车的初始任务;混匀任务要求的料槽运行信息包括:混匀料槽可使用的料仓、各个料仓的下料速度;
3)导入以步骤1)和2)中数据信息为已知条件自动编制好的连续配料料仓加料作业时序计划J,J中的作业按照开始时刻升序排列;导入料槽下料状态变化时刻集合TT;
4)启动连续配料料仓加料作业延迟自动调整流程,具体是:
4.1)输入被延迟的作业的编号j和延迟时长δ;
4.2)根据编号j从原供料作业集合J中找到对应的作业J(j),得到该作业原计划开始加料时刻tsf(j),利用公式tnsf(j)=tsf(j)+δ,计算被延迟的作业新的开始加料时刻tnsf(j);
4.3)删除原供料作业集合J中的编号大于等于j的所有作业;
4.4)根据J中作业属性“加料小车”,重置各个小车的最后任务(查询不到,则令小车上无任务);
4.5)判断供料作业集合J是否为空,若为空,则令时钟t=0,清空混匀料槽下料状态变化时刻集合TT;若不为空,则找到作业j前的首个作业j-1,令时钟t=tsf(j-1),删除混匀料槽下料状态变化时刻集合TT中不小于t的所有时间点;
4.6)设置供料任务集合中结束时刻晚于时钟t的所有任务的结束时刻为无穷大∞;
4.7)选中加料料仓为被延迟的编号j作业对应的料仓,令i表示其编号;
4.8)计算料仓i允许的最晚加料时刻ti,l+;
4.9)判断tnsf(k)是否大于等于T;若是,则转到步骤4.16);若否,则令t=tnsf(j),转到步骤4.10);.
4.10)指定加料小车,确定小车行走时长;具体过程如下:
4.10.1)计算在时刻t每个小车k对选中料仓i的可用时刻availti,t(k)和紧急可用时刻urgentavailti,t(k),若时刻t小车k的最后任务为空,则
urgentavailti,t(k)=availti,t(k)=max(t,initavailt(k)+m|initp(k)-i|/vcar)
其中,initavailt(k)为小车k的初始可用时刻,initp(k)为小车k的初始位置;
若时刻t小车k有最近任务j*,且最近任务的结束时刻et(j*)为∞,则利用料位计算公式判断小车能否在时刻t前加满;若能加满,则计算加满时刻tfull,
availti,t(k)=max(t,tfull+m|p(j*)-i|/vcar);
其中p(j*)为任务j*对应的料仓编号;否则availti,t(k)=∞;小车k对选中料仓i的紧急可用时刻为
urgentavailti,t(k)=max(t,interruptt(j*)+m|p(j*)-i|/vcar)
其中,interruptt(j*)为任务j*的允许打断时刻;
若时刻t小车k有最近任务j*,且最近任务的结束时刻et(j*)不为∞,则
urgentavailti,t(k)=availti,t(k)=max(t,et(j*)+m|p(j*)-i|/vcar).
4.10.2)在小车集合中搜索availti,t(k)<tnsf(j)的所有小车;若搜索结果不为空,则转到4.10.3);否则转到步骤4.10.4);
4.10.3)从搜索结果中选择行走距离最近的小车为料仓i加料,记录选中的小车为k*,过程结束;
4.10.4)搜索对选中料仓i的紧急可用时刻urgentavailti,t(k)≤tnsf(j)的小车;若搜索结果不唯一,则选择行走距离最近的小车为料仓i加料;记录选中的小车为k*;
4.11)料槽停止下料检测;料槽停止下料检测的具体过程为:比较t和ti,l+的大小,若t>ti,l+,则表示料仓i在开始加料前已经断料;根据集合TT判断若则将ti,l+加入TT;
4.12)加满检测;具体过程如下:遍历所有小车k,若小车k上的最近任务j*的结束时刻为∞,则利用料位计算公式得到加满时刻tfull;判断k是否等于k*,若是,然后得到et(j*)=min(tfull,t-m|p(j*)-i|/vcar);若否,则判断任务j*能否在t前加满,若能加满即tfull≤t,则判断任务j*能否在完全不影响为其他料仓供料的情况下确定加满时刻,即要求tfull≤t-max(p(j*)-1,max(i)-p(j*)),其中max(i)表示料仓编号的最大值,若tfull≤t-max(p(j*)-1,max(i)-p(j*)),则et(j*)=tfull;
4.13)添加新任务到供料任务集合J中,新任务的编号为J中最后一个任务的编号加1,并更新小车最近任务;假设新任务为j',则该任务的可打断时刻为interruptt(j')=t+(l+min-li,t)/v+;
4.14)料槽开始下料检测;料槽开始下料检测的具体过程为:获取新任务的料仓编号i,并计算该料仓在时刻t的料位li,t,计算小车将料仓i料位加至最低料位以上的时刻tlmin(i),tlmin(i)=t+max(0,(lmin-li,t)/v+);判断时刻tlmin(i)其他料仓的料位是否均高于料仓的料位下限lmin;若是,则根据料槽下料曲线判断时刻tlmin的料槽下料状态,若时刻tlmin料槽下料状态则将tlmin加入集合TT;
4.15)以当前时刻t为起点,生成调度周期T内的后续加料作业;如图2所示,具体过程如下:
4.15.1)选择加料料仓,记为料仓i*;选择加料料仓原则是对可用料仓按照持续下料能力进行升序排序,选出持续下料能力最小的料仓作为加料料仓;料仓持续下料能力的计算方法为:
假设料仓编号为i,检索供料任务作业集合中加料料仓编号为i且开始时刻小于等于t结束时刻大于t的任务;若结果不为空,则表示t时刻料仓i正在加料;若结果为空,则表示t时刻料仓无小车加料;
根据全局任务集合和料槽下料曲线,利用如下公式计算料仓i在t时刻的料位li,t;
利用料仓的持续下料能力计算公式
得到料仓i的持续下料能力;
4.15.2)计算料仓i*允许的最早和最晚开始加料时刻;
4.15.3)指定加料小车,确定开始加料时刻;
4.15.4)判断开始加料时刻是否不小于调度周期T;若是,则过程结束;否则转到步骤4.15.5);
4.15.5)令t等于开始加料时刻;
4.15.6)料槽停止下料检测;
4.15.7)加满检测;
4.15.8)添加新作业,并更新小车最后作业;
4.15.9)料槽开始下料检测,转到步骤4.15.1);
4.16)令t=T,启动料槽停止下料检测;
4.17)启动强制任务截断方法;遍历所有小车k,计算各个小车作业料仓的加满时刻tfull,若tfull<T,则令小车上的作业的结束时刻为tfull;若tfull≥T,则令小车上的作业的结束时刻为T。
按上述方案,所述步骤4.8)中计算料仓i允许的最晚加料时刻ti,l+的具体计算方法如下:
4.8.1)利用料位计算公式计算时刻t料仓i的料位li,t,其中,li,0为料仓i的初始料位;表示时刻t前料仓i的加料总量,δi,t表示时刻t料仓i是否加料,表示时刻t前料仓i的下料总量,vi,-表示料仓i的下料速度,
4.8.2)判断是否小于等于lmin;若是则料仓i允许的最晚加料时刻为ti,l+=t,计算过程结束;若否,转至步骤4.8.3);
4.8.3)在料槽下料状态变化时刻集合TT查找当前时钟时刻t之后的状态变化时刻;若查找结果为空,则转到4.8.4);若查找结果不为空,则转到4.8.5);
4.8.4)根据料槽初始下料状态和集合TT判断时刻t料槽的下料状态εt;若εt=1,则ti,l+=t+(li,t-lmin)/vi,-;若εt=0,则ti,l+=∞;计算过程结束;
4.8.5)遍历4.8.3)中的查找结果,分段计算;求取满足
的最小的t”;ti,l+=t”。
按上述方案,所述步骤4.15.2)中料仓i*允许的最晚开始加料时刻的计算方法同步骤4.8)所述;料仓i*允许的最早加料时刻的计算方法如下:
利用料位计算公式计算时刻t料仓i*的料位
判断是否小于等于lmin;若是,则料仓i*允许的最早开始加料时刻计算过程结束;若否,则转至下一步;
判断是否小于等于ls+;若是,则计算过程结束;若否,则进入下一步;
在料槽下料状态变化时刻集合TT查找当前时钟时刻t之后的状态变化时刻;若查找结果为空,根据料槽初始下料状态和集合TT判断时刻t料槽的下料状态εt;若εt=1,则若εt=0,则计算过程结束;若查找结果不为空,则遍历本步骤当前时钟时刻t之后的状态变化时刻中的查找结果,分段计算;求取满足
的最小的t',
本发明产生的有益效果是:本发明基于作业集和料槽下料状态变化时刻集跟踪料仓料位的变化,通过设计启发规则确定加料料仓和加料小车。在连续配料料仓加料作业静态时序计划中的作业发生延迟时,能对被延迟的作业对应的料仓进行处理,并利用料仓加料需求驱动时钟产生后续的加料作业计划,从而在原作业计划的基础上快速产生新的作业时序计划以应对作业延迟。由于实际生产过程中常常出现作业延迟的情况,因此本发明能够大大提高通过制定连续配料料仓加料作业计划对生产进行辅助决策的实用性。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明连续配料料仓加料作业延迟自动调整方法的流程图。
图2为本发明后续加料作业任务生成方法的流程图。
图3为本发明实施例中某加料作业延迟自动调整后料槽下料状态曲线结果图。
图4为本发明实施例中某加料作业延迟自动调整后各个料仓的料位曲线结果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
一种连续配料料仓加料作业延迟自动调整方法,包括:
1.收集参数。本实例中混匀料场中的混匀料槽包括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,各个料仓的初始料位用向量表示为[50,350,200,150,120,80,360,60]t,小车的初始位置用料仓编号来表示,小车的初始位置向量为[3,5,2],小车的初始可用时刻向量为[0,0,0],小车在原调度开始时刻均无最后任务,混匀料槽中全部料仓均投入使用,各个料仓的下料速度用向量表示为[3.67,1.83,11,3.67,7.33,2.93,4.4,1.83]t/min.
3.导入步骤1和2为已知条件自动编制好的连续配料料仓加料作业时序计划J(J中的作业按照开始时刻升序排列),如表1所示。导入料槽下料状态变化时刻集合TT={60.6941},单位为分钟.
表格1 原连续配料料仓加料作业时序计划
4.启动连续配料料仓加料作业延迟自动调整流程,具体是:
1)输入被延迟的作业的编号j和延迟时长δ.本实施例中设置j=5,δ=10min进行测试。
2)根据编号j从原供料作业集合J中找到对应的作业J(j),得到该作业原计划开始加料时刻tsf(j),利用公式tnsf(j)=tsf(j)+δ,计算被延迟的作业新的开始加料时刻tnsf(j).
3)删除原供料作业集合J中的编号大于等于j的所有作业。
4)根据J中作业属性“加料小车”,重置各个小车的最后任务(查询不到,则令小车上无任务)。
5)判断供料作业集合J是否为空,若为空,则令时钟t=0,清空混匀料槽下料状态变化时刻集合TT;若不为空,则找到作业j前的首个作业j-1,令时钟t=tsf(j-1),删除混匀料槽下料状态变化时刻集合TT中不小于t的所有时间点。
6)设置供料任务集合中结束时刻晚于时钟t的所有任务的结束时刻为无穷大。
7)选中加料料仓为被延迟的作业(编号j)对应的料仓,令i表示其编号。
8)计算料仓i允许的最晚加料时刻ti,l+。具体计算方法如下:
(1)利用料位计算公式计算时刻t料仓i的料位li,t,其中,li,0为料仓i的初始料位;表示时刻t前料仓i的加料总量,δi,t表示时刻t料仓i是否加料,表示时刻t前料仓i的下料总量,vi,-表示料仓i的下料速度,
(2)判断是否小于等于lmin.若是则料仓i允许的最晚加料时刻为ti,l+=t,计算过程结束;若否,转至步骤(3).
(3)在料槽下料状态变化时刻集合TT查找当前时钟时刻t之后的状态变化时刻。若查找结果为空,则转到(4);若查找结果不为空,则转到(5).
(4)根据料槽初始下料状态和集合TT判断时刻t料槽的下料状态εt。若εt=1,则ti,l+=t+(li,t-lmin)/vi,-;若εt=0,则ti,l+=∞.计算过程结束。
(5)遍历(3)中的查找结果,分段计算。求取满足
的最小的t”.ti,l+=t”.
9)判断tnsf(k)是否大于等于T.若是,则转到步骤16);若否,则令t=tnsf(j),转到步骤10).
10)指定加料小车,确定小车行走时长。具体过程如下:
(1)计算在时刻t每个小车k对选中料仓i的可用时刻availti,t(k)和紧急可用时刻urgentavailti,t(k).若时刻t小车k的最后任务为空,则
urgentavailti,t(k)=availti,t(k)=max(t,initavailt(k)+m|initp(k)-i|/vcar)
其中,initavailt(k)为小车k的初始可用时刻,initp(k)为小车k的初始位置。
若时刻t小车k有最近任务j*,且最近任务的结束时刻et(j*)为∞,则利用料位计算公式判断小车能否在时刻t前加满。若能加满,则计算加满时刻tfull,
availti,t(k)=max(t,tfull+m|p(j*)-i|/vcar);
其中p(j*)为任务j*对应的料仓编号。否则availti,t(k)=∞.小车k对选中料仓i的紧急可用时刻为
urgentavailti,t(k)=max(t,interruptt(j*)+m|p(j*)-i|/vcar)
其中,interruptt(j*)为任务j*的允许打断时刻。
若时刻t小车k有最近任务j*,且最近任务的结束时刻et(j*)不为∞,则
urgentavailti,t(k)=availti,t(k)=max(t,et(j*)+m|p(j*)-i|/vcar).
(2)在小车集合中搜索availti,t(k)<tnsf(j)的所有小车。若搜索结果不为空,则转到(3);否则转到步骤(4).
(3)从搜索结果中选择行走距离最近的小车为料仓i加料,记录选中的小车为k*,过程结束。
(4)搜索对选中料仓i的紧急可用时刻urgentavailti,t(k)≤tnsf(j)的小车。若搜索结果不唯一,则选择行走距离最近的小车为料仓i加料。记录选中的小车为k*.
11)料槽停止下料检测。料槽停止下料检测的具体过程为:比较t和ti,l+的大小,若t>ti,l+,则表示料仓i在开始加料前已经断料。根据集合TT判断若则将ti,l+加入TT.
12)加满检测。具体过程如下:遍历所有小车k,若小车k上的最近任务j*的结束时刻为∞,则利用料位计算公式得到加满时刻tfull.判断k是否等于k*,若是,然后得到et(j*)=min(tfull,t-m|p(j*)-i|/vcar);若否,则判断任务j*能否在t前加满,若能加满即tfull≤t,则判断任务j*能否在完全不影响为其他料仓供料的情况下确定加满时刻,即要求tfull≤t-max(p(j*)-1,max(i)-p(j*)),其中max(i)表示料仓编号的最大值,若tfull≤t-max(p(j*)-1,max(i)-p(j*)),则et(j*)=tfull.
13)添加新任务到供料任务集合J中,新任务的编号为J中最后一个任务的编号加1,并更新小车最近任务。假设新任务为j',则该任务的可打断时刻为interruptt(j')=t+(l+min-li,t)/v+.
14)料槽开始下料检测。料槽开始下料检测的具体过程为:获取新任务的料仓编号i,并计算该料仓在时刻t的料位li,t,计算小车将料仓i料位加至最低料位以上的时刻tlmin(i),tlmin(i)=t+max(0,(lmin-li,t)/v+).判断时刻tlmin(i)其他料仓的料位是否均高于料仓的料位下限lmin。若是,则根据料槽下料曲线判断时刻tlmin的料槽下料状态,若时刻tlmin料槽下料状态则将tlmin加入集合TT.
15)以当前时刻t为起点,生成调度周期T内的后续加料作业。如图2所示,具体过程如下:
(1)选择加料料仓,记为料仓i*.选择加料料仓原则是对可用料仓按照持续下料能力进行升序排序,选出持续下料能力最小的料仓作为加料料仓。料仓持续下料能力的计算方法为:
a)假设料仓编号为i,检索供料任务作业集合中加料料仓编号为i且开始时刻小于等于t结束时刻大于t的任务。若结果不为空,则表示t时刻料仓i正在加料;若结果为空,则表示t时刻料仓无小车加料。
b)根据全局任务集合和料槽下料曲线,利用如下公式计算料仓i在t时刻的料位li,t。
利用料仓的持续下料能力计算公式
得到料仓i的持续下料能力。
(2)计算料仓i*允许的最早和最晚开始加料时刻。料仓i*允许的最晚开始加料时刻的计算方法同上文中所述。料仓i*允许的最早加料时刻的计算方法如下:
a)利用料位计算公式计算时刻t料仓i*的料位
b)判断是否小于等于lmin.若是,则料仓i*允许的最早开始加料时刻计算过程结束;若否,则转至步骤c).
c)判断是否小于等于ls+.若是,则计算过程结束;若否,则转到步骤d).
d)在料槽下料状态变化时刻集合TT查找当前时钟时刻t之后的状态变化时刻。若查找结果为空,则转到e);若查找结果不为空,则转到f).
e)根据料槽初始下料状态和集合TT判断时刻t料槽的下料状态εt.若εt=1,则若εt=0,则计算过程结束。
f)遍历d)中的查找结果,分段计算。求取满足
的最小的t',
(3)指定加料小车,确定开始加料时刻。
(4)判断开始加料时刻是否不小于调度周期T.若是,则过程结束;否则转到步骤(5).
(5)令t等于开始加料时刻。
(6)料槽停止下料检测。
(7)加满检测。
(8)添加新作业,并更新小车最后作业。
(9)料槽开始下料检测,转到步骤(1).
1)令t=T,启动料槽停止下料检测。
2)启动强制任务截断方法。遍历所有小车k,计算各个小车作业料仓的加满时刻tfull,若tfull<T,则令小车上的作业的结束时刻为tfull;若tfull≥T,则令小车上的作业的结束时刻为T.
连续配料料仓加料作业延迟自动调整算法运行完毕,输出新的料仓加料作业时序计划,供生产调度人员进行参考。本实施例中设定作业编号j=5的作业,延迟时长δ=10分钟,利用连续配料料仓加料作业延迟自动调整方法得到新的连续配料料仓加料作业时序计划的任务集合如表2所示。新计划对应的料槽下料状态曲线和各个料仓的料位变化曲线编制结果分别如图3和图4所示。结合图表可以看出,连续配料料仓加料作业延迟自动调整方法能够在作业延迟发生时,在原作业计划的基础上生成新的料仓加料作业计划,保证各个料仓的料位在合理范围内波动。使作业计划具有抗干扰的能力,以适应生产现场随时可能出现的作业延迟的发生。
表格2 j=5,δ=10自动调整后的连续配料料仓加料作业时序计划
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。