设备的分配与调度简单方案_连铸生产调度与动态重调度的优化与研究-3,炼钢技术(3)原创...

基于生产扰动分类的二阶段遗传算法求解动态重调度问题

4.1引言

电炉炼钢-连铸生产对整个生产的节奏要求较高,各个工序各个工位间配合要比较紧密,但实际的生产过程中总会存在许多不可避免的扰动因素,必须根据实时现场的监控数据来进行动态调度以调整原调度计划,当钢种冶炼质量不合格超过指定加工时间时,要调整其后炉次的开工时间以适应;当钢种的温度达不到浇铸条件时, 要进行钢种回炉补温;当设备发生故障时,要调够相应设备上原先分配的炉次,当设备重新启用时,又要给其分配调度任务。对于实际生产,非常关心生产的有序进行,当出现异常扰动时,如何快速识别扰动态调整生产调度,产生新的调度方案,减少异常扰动对生产的影响。

常见的动态重调度策略有周期性重调度旳、事件驱动式的重调度的以及周期性混合事件驱动的的重调度.但是由于周期性重调度的周期参数很能确定无法有效的快退应对扰动因素;而事件驱动式重调度在应对生产过程中的扰动因素,过于频繁的启动重调度,降低了系统的鲁棒性;混合的重调度不但没能解决这些问题,反而増加了重调度频率。本章提出的基于实时现场监控的事件驱动式重调度,根据不同的生产扰动提出重调度策略,并结合上-章的改进的遗传算法,既利用了事件驱动式重调度的针对性强的特点,又实时反馈监控数据减少了重调度频率,提高了系统的稳定性。

4.2电炉炼钢-连铸的生产扰动分类

对生产过程中发生的异常扰动很多,对其进行相似特征的分类,有助于找到分类扰动问题的-体化解决方法。根据总结与归纳,电炉炼钢-连铸的生产扰动分类如下:

⑴计划任务扰动:因计划任务临时变更或错误产生的扰动,会更改当前正在进行的炉次和浇次计划,见表4-1。

688da9279d5761c19926ca8164496d41.png
5f7cd1e2f60d5d9d15548f020510a843.png

⑷时间因素扰动:由于生产流程的不标准导致的不能按照标准作业时间生产, 出现拖期或者提前的情况。

4.3基于生产扰动分类的二阶段遗传算法的动态重调度方法及过程

4. 3.1基于生产扰动分类的二阶段遗传算法的描述

电炉炼钢连铸的动态重调度的难点就在于生产扰动总是出现在调度方案正在执行的过程中,由于要维护调度方案执行的连续性,木文提出个两阶段遗传算法

第一阶段当产生生产扰动进入重调度时,通过扰动分类相对应的调度策略对正在生产炉次进行调度安排,汽出现计划扰动时,插入紧急的炉次到未生产的炉次中; 当岀现设备扰动时,优先保证连浇,在无法保证连浇的情况下重新对炉次浇次拜序; 当出现品质扰动时,需要对出现扰动的炉次插入新的工序;当出现时间扰动时,通过迭代递推的方式保证连浇,最后确定正在生产炉次的调度方案。此时更新所有工序机器的最早可加工时间,第二阶段再对未生产炉次根据第三章的遗传算法重新生成调度方案。整个算法的原理如图4-1所示。

0be8c21433eaa53f91134e1f6dbf0d2f.png

4.3.2基于生产扰动分类的动态重调度策略

基于生产扰动分类的动态重调度策略是实现第阶段安撻正在生产炉次的关键技术,以下详细描述他们的动态重调度策略。

⑴计划扰动动态重调度策略

计划扰动主要考虑的是当冇紧急炉次插入时,如何不影响现有生产的情况。此时优先完成已经在执行的浇次计划,以正在执行的浇次计划结束时刻作为动态重调度的开始时间,将此浇次计划和新插入的浇次计划合并重新排序,更新未生产调度的浇次和炉次计划,利用改进的遗传算法生成新的生产调度。

⑵设备扰动动态重调度策略

设备扰动主要考虑的是当设备故障后,当前正在加工的炉次及其之后的炉次都无法再执行预定计划;当设备修复后,施新启用此设备,加入到生产流程中去。设备故障是严重的生产事故,基本无法消解冲突,将此设备从可用设备中除去,重新制定浇次和炉次计划,设备恢复时,将此设备重新加入W用设备,对未生产的浇次和炉次重新生成生产调度。

(3)品质扰动动态重调度策略

品质扰动主要考虑的是余钢返回,即炉次即将进入连铸工序浇筑时,其温度不满足连铸浇筑的最低温度,必须进入LF工序补温加热。此情形下,该炉次插入新的工序LF,更新其工艺路径,将连铸工序其后的炉次依次前移。算法步骤如下:

步骤1:连铸工序上余钢返回炉次的前炉次加工时间设为最长加工时间,对于余钢返回的炉次,在连铸工序前插入LF工序,更新其工艺路径,査找当前时刻 LF工序是否存在空闲机器加工该炉次,如存在转步骤2,如不存在转步骤3。

步骤2:将连铸工序余钢返回炉次之后的炉次依次前移,使用第三章的逆工序 工艺路径解码算法,标准加工肘间设定为最短加工肘间,寻找是否存在可行调度解, 如存在转步骤4,如不存在转步骤3。

步骤3:找到余钢返回炉次导致的连铸断浇时间,断浇炉次,更新因此没有生 产的炉次,产生新的浇次计划,转步骤4。

步骤4:更新各个工序各个机器的自当前时间起最早可开工时间,当前未加工 炉次数浇次数。

(4)时间扰动动态重调度策略

时间扰动主要考虑的是工序机器上炉次加工时间比指定时间延长或者提前,导致原作业计划产生时间冲突的问题,实际中加工时间提前可以等待直至达到指定的加.时间,不会影响到其他炉次的生产,但是炉次加工时间延长会产生时间冲突, 针对这样的情况,使用迭代递推算法,迭代递推算法步骤如下:

步骤1:将因故时间延长的炉次的结束时间向后顺延t分钟,则该机器上后一卢次升始时间顺延t分钟。

步骤2:按照后炉次的工艺路径,依次取最短加工时间为指定加工时间,直至连铸工序前,判断是否消解时间冲突,如2消解转步骤-五,如没有转步骤3。

步骤3:对后一炉次后面的一机器的炉次依次执行步骤二。 如果后面已没有炉次,则转步骤4。

步骤4:找到因加工时间延长的炉次导致的连续断浇炉次,其断浇时间,更新因此没有生产的炉次,产生新的浇次计划,转步骤5。

步骤5:更新各个工序各个机器的自当前时间起最早可开工时间,当前未加工炉次数、浇次数。

4.3.3适应动态重调度问题的遗传算法

本章的遗传算法基于第三章的遗传算法基础之上,针对动态重调度的特殊约束, 在编码阶段将炉次已经经过的工序的基因值设为999,在交叉和变异阶段都不参与。其次,解码时,不再从零时刻开始,而是当前动态重调度时刻开始。其余与第三章相同。

4.4实例验证

以第三章实例验证中的工艺路径、生产数据、浇次炉次信息作为基础,使用二 阶段遗传算法进行动态重调度,预先生成的生产调度方案如图42所示。当其执行到4:10时,正在EAF1上加工的炉次4无法按时完工,进行拖期作业,预计20分钟后完工,系统收到扰动信号后运用时间扰动重调度策略调整时间,进行两阶段遗传算法,得到图4-3所示的动态重调度方案。

04cc61c5c8623e352117968e8889fb32.png

对比图4-2和图4-3可以看出:

①动态重调度方案仍然保持了预先生产调度方案浇次的连浇要求。

②炉次4在EAF1上拖期,影响其后炉次生产,通过迭代递推算法将炉次4 及其后的炉次顺延,解决了因炉次4拖期导致的延时问题。

以上实验结果表明,本章提出的二阶段遗传算法很好的解决了生产过程中的扰动因素,算法是可行有效的。

4.5本章小结

在实际的生产过程中,按照生产计划生产的调度方案往往遇到生产扰动的影响,无法顺利的执行下去,需要进行动态重调度。本章分析了电炉炼钢-连铸生产过程中的扰动分类,并且根据动态重调度的特点,将重调度的炉次分为正在生产炉次和未生产炉次,提出先根据扰动分类安排生产炉次,然后对未生产炉次亟新生成调度方案的两阶段方案。釆用实际生产数据进行的实例流证表明,本章的动态无调度方案能可以根据生产扰动的不同,依赖实时监控信息,制定出可行的重调度方案。

5.1论文总结

电炉炼钢-连铸的生产调度与动态重调度问题是多工艺路径、多并行机、 多约束下的受随机生产扰动影响的NP难题,现有的理论方法在具体的生产过程中存在一定的局限。本文以电炉炼钢-连铸的实际生产过程为基础,以电炉炼钢-连铸生产调度方案的制定问题作为研究对象,围绕着生产调度与动态重调度两类问题,建立了抽象的数学模型、提出了生产调度的制定方法、动态重 调度的实现思路,研究成果总结如下:

(1)系统总结了生产调度与动态重调度的研究成果,介绍了生产调度问题的研究现状、不足点以及发展的趋势,归纳了动态重调度问题的内容与特点, 研究了生产调度问题的主要理论、方法及技术。

(2)详细分析了电炉炼钢-连铸的工艺特点及其约束条件,将电炉炼钢- 连铸的生产流程抽象为带批量约束的并行机job-shop调度问题,在此基础上建立了以满足连浇生产等约束条件,以最小化总完成时间为目标函数的电炉炼钢-连铸生产调度数学模型。

(3)提出一种求解电炉炼钢-连铸生产调度方案制定问题的改进的遗传算法,基于改进随机键的实数矩阵编码方法,使用顺工序工艺路径和逆工序工艺路径两种算法得到最终的生产调度方案,釆用分段交叉和分段变异的方式,交叉和变异概率是自适应的,通过与简单遗传算法的数据比较,证明了本算法的优越性。

(4)针对生产扰动产生的动态重调度问题,提出了一种基于扰动分类的二阶段遗传算法,将生产炉次分为正在生产炉次和未生产炉次,对于正在生产炉次,通过针对特定扰动分类的动态重调度策略,安排新的加工顺序与时间, 然后更新所有工序的最早可加工时间,利用遗传算法重新生成调度方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

敏捷开发总结(1)软件研发过程

敏捷开发总结(1)软件研发过程 转载于:https://www.cnblogs.com/lexiaofei/p/6644326.html

mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

java for循环 嵌套for循环-标签使用

continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环。在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使程序的结构紊乱,可读性变差。…

WPF 窗体边框处理

一般做wpf窗口时都不会使用默认的标题栏等,会把他隐藏掉 此时设置以下属性 WindowStyle、AllowsTransparency、ResizeMode 中的两个或三个都能达到目的。 有一种场景,针对.Net 4.0及以下版本,4.5 直接就支持操作 1. 隐藏边框 2.保留鼠标移动到…

数据加密辅助类(默认编码UTF-8)

public final class SecurityUtil {private SecurityUtil() {}/*** 默认算法密钥*/private static final byte[] ENCRYPT_KEY { -81, 0, 105, 7, -32, 26, -49, 88 };public static final String CHARSET "UTF-8";/*** BASE64解码* * param key* return* throws Ex…

mysql 查询时间转换_数据库查询时日期的转换

首先简单说明一下,laravel框架中查询并打印sql语句的办法,不管任何时候由于sql语句报错时,都可以先打印一下,分析一下是什么原因造成的错误①引入laravel框架DB类useIlluminate\Support\Facades\DB;②开启框架日志记录DB::connect…

浅谈Spring之@Nullable、@NonNull注解

NonNull 可以标注在方法、字段、参数之上,表示对应的值不可以为空 Nullable 注解可以标注在方法、字段、参数之上,表示对应的值可以为空

事务概念和事务四大特性和隔离级别

什么是事务 事务四大特性 原生的JDBC事务处理 事务的隔离级别

python中坐标怎么表示_如何在Python中以像素表示(有限)平面上的坐标

我假设你有十进制坐标,比如50.3869881,-4.6177269,南北优先。在因为你有一个相当小的地图,我们不需要担心地球的曲率,我们可以假设我们有一个线性地图,所以地图上点的(x,y)坐标将是x longitude…

2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0。博客的时间比较早,11年的,学习的是Spring3 MVC。不知道版本上有没有变化比较大的功能。 spring mvc教程(六)转发、重定向、a…

squid mysql认证_Squid 3.1.7通过mysql_auth方式认证

Squid 3.1.7通过mysql_auth方式认证(FreeBSD平台)一、下载相应软件及补丁#fetch http://people.arxnet.hu/airween/mysql_auth/mysql_auth-0.8.tar.gz#tar xvzf mysql_auth-0.8.tar.gz#cd mysql_auth-0.8#patch -p1 < ../additionalselect.patchpatching file src/confparse…

Spring事务传播属性和隔离级别

Spring事务传播属性和隔离级别 一、Spring事务传播属性&#xff08;Propagation&#xff09;&#xff1a; 1) REQUIRED&#xff08;默认属性&#xff09; 如果存在一个事务&#xff0c;则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个级别时&#xff0c;会为…

.net 解析Transfer-Encoding:chunked 秒掉网上无用方案

昨天在爬数据时&#xff0c;发现某个网站Response.Get过来的数据一直是为空。当时就很奇怪&#xff0c;认真看下了响应头。发现Transfer-Encoding:chunked这个玩意网上查了下资料一般情况HTTP的Header包含Content-Length域来指明报文体的长度。有时候服务生成HTTP回应是无法确定…

unity检测范围内敌人_Unity实现视野范围外死亡敌人的分数显示在屏幕内

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test01 : MonoBehaviour&#xff5b;Transform cam;//相机物体Vector3 pos;// Start is called before the first frame updatevoid Start()&#xff5b;pos transform.position;c…

ClickHouse之简单性能测试

前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse&#xff0c;接下来进行简单的性能测试。测试数据来源于美国民用航班的数据&#xff0c;从1987年到2017年&#xff0c;有1.7亿条。 环境&#xff1a; centos 6.3&#xff0c;32G内存&#xff0c;24核 下载脚本&#x…

mysql主从从配置详解_MySQL主从配置详解

● 本打算买个云数据&#xff0c;为我的新项目做点安全保障。阿里云&#xff0c;腾讯云转了一圈&#xff0c;两个字太贵。不就数据有备份吗&#xff0c;既然这样那我不如自己来做备份。● 家里有2个树莓派直接把mysql备份到他们上就好了&#xff0c;网上有教程&#xff0c;这就…

泛型数组

定义泛型数组 在写程序时&#xff0c;大家可能会遇到类似String[] list new String[8];的需求&#xff0c;这里可以定义String数组&#xff0c;当然我们也可以定义泛型数组&#xff0c;泛型数组的定义方法为 T[]&#xff0c;与String[]是一致的&#xff0c;下面看看用法&#…

是前端类库还是前端框架?

一、BootstrapBootstrap是一系列常用CSS和jQuery plugin的集合&#xff0c;典型的UI库&#xff0c;带给你的是栅格系统&#xff0c;是预置的按钮、表单、列表、导航、响应式等样式&#xff0c;它在你独立开发的时候非常有用。因为能节约用来设计网页的时间&#xff0c;而且这套…

mysql php pdo例_PHP的PDO操作实例

try{$dbmsmysql; //数据库类型 ,对于开发者来说&#xff0c;使用不同的数据库&#xff0c;只要改这个&#xff0c;不用记住那么多的函数$host127.0.0.1; //数据库主机名$dbNamebooks; //使用的数据库$userroot; //数据库连接用户名$pass; …

Java泛型详解:<T>和Class<T>的使用,泛型类

单独的T 代表一个类型 &#xff0c;而 Class代表这个类型所对应的类&#xff0c; Class<&#xff1f;>表示类型不确定的类 E - Element (在集合中使用&#xff0c;因为集合中存放的是元素)T - Type&#xff08;Java 类&#xff09;K - Key&#xff08;键&#xff09;V - …