罩式炉退火生产优化排产方法 【技术领域】
本发明属于信息技术领域,涉及到自动化技术,特别涉及到一种罩式炉退火生产优化排产方法。
背景技术
目前,国内大部分钢厂的退火车间均采用罩式炉炉群退火方式,退火主要分为加热和冷却两个阶段,周期较长,普通氮氢罩式炉的退火周期一般超过70个小时,即使采用目前较为先进的全氢罩式退火工艺,退火周期也在35个小时以上,是冶金企业的能源消耗大户。退火车间的加热罩和冷却罩数通常按一定的配比关系进行设计,两者数量之和等于炉台总数。按目前的罩式炉生产工艺,退火周期中加热段总时间小于冷却段总时间加装出炉辅助时间,这样必然存在罩式炉系统资源冲突现象。为了合理利用资源、提高生产效率,必须对退火生产进行优化排产。
现有的排产方法是从作业调度入手,提高加热罩、冷却罩、行车的有效作业率,减少和避免加热罩和冷却罩的抛空,这是目前公认的提高退火车间生产能力的有效途径。
如S.Moon和A.N.Hrymak.在他们的文章(Scheduling of the batchannealing process-deterministic case. Computers and ChemicalEngineering,23(1999),1193-1208.)中提出了一种基于时间槽分解的数学建模的方法,他们考虑了批量处理情况,即假设开始调度时所有炉台均处于空闲状态,在此基础上,采用时间槽分解的方法建立了退火车间的混合整数线性规划(MILP)模型,并应用分枝定界法进行求解。该方法在实际应用中有以下两个方面的问题:一是大部分退火车间均是不间断生产,所有炉台均空闲的初始状态假设不符合实际;二是形成地MILP模型规模较大,还没有特别有效的解法。董杰方等人在他们的文章(钢卷热处理调度的数学模型与算法研究.钢铁(2001),Vol.36,No.12,73-76.)中介绍了一种简化问题的方法,他们将问题简化为一个混合流水车间排序问题,设计了相应的贪婪排序算法进行求解。但在问题建模过程中将有十二个操作阶段的退火过程简化为两个阶段来处理,因此在实际应用中仍存在问题。
通常,国内大部分退火车间采用人工方法依据经验进行作业调度来得到一个可行的排产结果,这种方法不仅费时费力而且很难保证排产的合理性,生产中经常出现加热罩、冷却罩、行车等紧缺资源的冲突,加热罩和冷却罩的抛空率较大,造成退火车间的生产能力低于相邻工序的生产能力。并且当生产情况与所预计发生不一致时,排产结果必须变更或者重排。这样不仅给排产工人带来了很大的麻烦,而且也降低了整条生产线的效率。
【发明内容】
本发明的目的是提供一种执行于一计算机的自动优化排产方法,为罩式炉退火生产提供最优的作业调度方案,解决目前人工排产的费时费力和效率低下以及难以保证结果最优的问题。
实现本发明的技术方案:
本发明包含两个模块,遗传算法模块和计算机仿真模型模块。最优的作业调度方案就是由这两个模块的交互作用而产生。
计算机仿真模型
在充分分析罩式炉炉群退火生产的生产过程和各种约束条件的基础上,建立了罩式炉退火生产的仿真模型,该模型可以在已知初始生产状态和作业调度方案的前提下,在计算机中仿真罩式炉炉群退火生产过程,仿真结束后就可以得到所关心的生产指标。
本发明把各个退火步骤抽象成各个事件,把需要资源得不到满足时必需的等待抽象成等待事件,本发明根据现场实际情况按优先级不同把等待事件分成4类,用4个二叉排序树存放这4类等待事件,每个二叉排序树就是一个等待事件队列,所以一共有4个等待事件队列,相同优先级的等待事件按发生时间排序。把各个资源抽象成各种对象,运用面向对象技术,采用事件驱动法建立计算机仿真模型。
遗传算法
每个调度方案作为遗传算法中的个体,采用自然数编码方式。把计算机仿真模型作为遗传算法的适应度函数,计算机仿真以后得到的生产指标作为适应度函数的函数值,群体规模和进化代数可视情况调整。
遗传算法与计算机仿真模型的交互过程如下:起初由遗传算法随机产生一个种群(个体的集合),把这个种群中的各个个体作为输入送入计算机仿真模型,经仿真后得到所需要的生产指标作为适应度函数值送入遗传算法模块,利用遗传算法的全局并行搜索能力得到较优的种群,再把这个较优的种群送入计算机仿真模型,如此循环反复直到收敛为止。然后,从最后得到的最优的种群中选择一个最优的个体作为最优的调度方案。
本发明的效果和益处是:显著降低了工人的劳动强度,大量节约了排产所需时间,增加了排产结果的准确性,提高了退火生产和整条生产线的的生产效率。
【附图说明】
图1是基于仿真优化的退火炉作业调度原理图。
图中:(1)调度方案,(2)遗传算法模块,(3)目标函数,(4)计算机仿真模块。
图2是计算机仿真退火生产模块的程序流程图。
图中:(5)仿真初始化,(6)判断有没有满足条件的等待事件,(7)执行满足条件的等待事件,(8)选择一个最早发生的非等待事件,(9)将仿真钟推进到该事件的发生时间,(10)执行该非等待事件,(11)判断仿真是否可以结束,(12)结束仿真。
【具体实施方式】
下面结合附图和实例详细说明本发明的具体实施方案。
若现有46个炉台,23个加热罩,23个冷却罩,2部行车,10个待排产的生产计划,每个不同的生产顺序都是一种调度方案,采用不同的调度方案进行生产将得到不同的生产指标,排产的目的就是要选择一个最优的调度方案。
步骤1:启动遗传算法模块
模块(2)把10个待排产的生产计划从1到10编号。产生初始种群,初始种群的每个个体代表一个调度方案,采用自然数编码,例如(1,2,3,4,5,6,7,8,9,10)是一个个体,代表一种调度方案;而(10,9,8,7,6,5,4,3,2,1)是另一个个体,代表另一种调度方案,其生产顺序与上一种相反。把初始种群作为当前种群保存。
步骤2:判断是否达到规定的最大代数
若达到规定的最大代数,从仿真过的所有种群中选出具有最优生产指标的个体,该个体所代表的排产计划作为最优的调度方案,结束程序运行。否则进入下一步。
步骤3:把当前种群中的每个个体作为输入调用计算机仿真模块(4)。(1)即为送入仿真模块的个体。每个个体的仿真过程如步骤4至步骤11。
步骤4:仿真初始化(5)
把各个炉台、加热罩、冷却罩和行车定义成对象,然后读入46个炉台的当前生产状态,把这些生产状态转换成对应的事件或者等待事件,事件按时间顺序放入事件队列,事件队列只有1个。等待事件放入等待事件队列,本发明根据实际情况按优先级不同把等待事件分成4类,用4个二叉排序树存放着4类等待事件,每个二叉排序树就是一个等待事件队列,所以一共有4个等待事件队列,相同优先级的等待事件按发生时间排序。然后,设置仿真钟为0。
步骤5:判断有没有满足条件的等待事件(6)
按优先级查看哪个等待事件所等待的条件可以得到满足。如果满足,从等待队列中提出此等待事件,进入下一步;如果不满足则跳过下一步。
步骤6:执行满足条件的等待事件(7)
其操作包括产生下一个事件,占用相关资源,销毁自身(即释放该等待事件对象占用的内存资源)。将所有满足条件的等待事件都执行后,进入下一步。
步骤7:选择一个最早发生的非等待事件(8)
从事件队列中选择一个发生时间最早的事件,如果不只一个,一并选择出来。
步骤8:将仿真钟推进到该事件的发生时间(9)
步骤9:执行该非等待事件(10)
操作包括释放与占用相关资源,产生下一个事件或者等待事件,销毁自身(即释放该非等待事件对象占用的内存资源)。
步骤10:判断仿真是否可以结束(11)
判断结束条件是否满足,即判断事件队列是否为空,若为空则进入下一步,若不为空,则回到步骤5继续执行。
步骤11:结束仿真(12)
步骤12:进行选择运算
在仿真的执行过程当中,不断记录程序状态,包括加热罩和冷却罩的等待时间长度以及工作时间长度,在程序结束后记录生产总时间。注意,这个总时间并不是程序运行的总时间,而是所仿真的生产过程需要的总时间。
一个个体仿真结束后,利用所记录的数据形成用户所关心的生产指标作为这个个体适应度函数值(3)送入遗传算法模块,遗传算法模块会根据当前种群中所有个体的适应度函数值采用轮盘赌的方法对这些个体进行选择。
步骤13:进行交叉运算
将选择后的各个个体采用部分映射交叉(PMX)法交叉,交叉率不小于0.9。
步骤14:进行变异运算
采用的是互换变异,随机的选择两个位置,并将这两个位置互换,变异率小于0.1。
步骤15:返回步骤2
把经过选择、交叉和变异的所有个体作为当前种群,返回步骤2。