炼钢-连铸生产动态调度模型(加启发式算法步骤)
最近阅读了一些文献来了解动态调度的问题,有几篇文章觉得总结整理的很到位。
《炼钢-连铸生产调度模型及启发式算法》——刘光航
《钢铁生产动态调度理论研究与工程应用综述》——常春光
《炼钢-连铸混合优化调度方法及应用(博士学位论文)》——王秀英
首先整理一下看过的文献资料,关于动态调度研究方法应该可以分为四类:
(1)基于模型的方法
1.精确模型:运筹学方法,包括线性规划、动态规划、排队论、网络与图论等
2.近似模型:系统仿真模型
(2)基于智能的方法
1.人工智能:启发式搜索或逻辑推理,启发式方法以调度规则以及实践经验为基础
2.计算智能:
①进化算法:随机优化技术,包括遗传算法,进化规划,进化策略
②模拟进化算法:近似算法,包括模拟退火法,禁忌搜索法,蚁群算法以及局域搜索法
③神经网络:通过一个能量函数构造网络的极值
④Multi-agent:以分布式人工智能中的多代理机制作为新的生产组织与运行模式
(3)人机交互
(4)多种方法组合
1.不同类智能方法组合
2.模型与智能组合
3.人机交互与智能组合
4.模型与人机交互组合
那再来看看具体方案及算法的实现:
炼钢-连铸生产主要流程为铁水——转炉——精炼——连铸——板坯。主要调度炼钢到连铸的钢水(动态调度),可以归为三阶段并行多机的Hybrid Flow Shop问题。
问题描述:
目标是使由于断浇和炉次在工序间等待造成的损失最小。
也就是动态调度就是为了让钢水都能达到下一环节就开始运行,因为等待可能会使钢水温度下降,导致不能开浇,形成断流。并且要使一个浇次与下一个浇次之间没有断开能马上接上。
那为了这两个分目标,作者设置了两个惩罚参数,记为浇次n的单位断浇时间的惩罚费用,
为炉次i的单位等待惩罚费用,
为足够大的正整数。
符号说明:
其中,是已知的。
建立模型:
关于约束条件②,我有一个疑问还没理解,作者是为了表示同一设备前一炉次处理完,才能开始下一步。
那么破坏这个条件的情况就是,应该是排到
后面的工作, 但是比
先开始了,所以它们两个都被指派到k设备上了,那么
都为1,
为0,但是因为
是足够大的正整数,所以约束条件②还是
的。
是不是应该是?
正常情况就是都为1,
。
求解模型:
先探讨炉次设备指派的策略,为炉次指派设备、生成粗调度后,再用一个线性规划模型来确定各炉次最终的开始处理时间,以解消可能存在的设备冲突。
这里的开浇时间指连铸时间:
炉次设备指派策略的核心是当一个设备上未指派的炉次q对应时段内有指派e时,如何为q选择设备。为了得到冲突最小的粗调度,需要计算可能的设备冲突,并把q安排到使冲突最小的设备上。
希望以后慢慢多写代码, 多实现算法。
炼钢-连铸生产动态调度模型(加启发式算法步骤)相关推荐
- 人工蜂群算法c语言程序,基于人工蜂群算法的炼钢连铸生产调度方法研究
摘要: 钢铁工业是国民经济和国防建设的重要支柱.炼钢连铸是钢铁生产的主要工序和瓶颈工序,有效的炼钢连铸生产调度方法能提高生产效率并降低生产成本.然而,炼钢连铸调度问题是一类复杂的NP-hard问题,难 ...
- c++ linux 线程等待与唤醒_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...
为什么要线程同步? 线程间有很多共享资源,都对一个共享数据读写操作,线程操作共享资源的先后顺序不确定,可能会造成数据的冲突 看一个例子 两个线程屏行对全局变量count++ (采用一个val值作为中间 ...
- TensorFlow学习笔记(三)模型的基本步骤
在本教程中,我们将学到构建一个TensorFlow模型的基本步骤,并将通过这些步骤为MNIST构建一个深度卷积神经网络. 安装 在创建模型之前,我们会先加载MNIST数据集,然后启动一个TensorF ...
- 判断sem信号量为零_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...
为什么要线程同步? 线程间有很多共享资源,都对一个共享数据读写操作,线程操作共享资源的先后顺序不确定,可能会造成数据的冲突 看一个例子 两个线程屏行对全局变量count++ (采用一个val值作为中间 ...
- Java实现生产消费模型的5种方式
** 前言 ** 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储 ...
- PyTorch框架学习十九——模型加载与保存
PyTorch框架学习十九--模型加载与保存 一.序列化与反序列化 二.PyTorch中的序列化与反序列化 1.torch.save 2.torch.load 三.模型的保存 1.方法一:保存整个Mo ...
- 如何将深度学习模型加载到android环境中
承接上一篇的内容,考虑如何将深度学习的模型加载到android app中 文章目录 前言 一.使用工具 二.使用步骤 1.模型格式的转换 2.配置文件修改 3. 应用程序 前言 将图片学习的模型加载到 ...
- 生产-消费模型之阻塞队列的源码分析
文章目录 前言 阻塞队列API 存放元素 boolean add(E e) boolean offer(E e) boolean offer(E e, long timeout, TimeUnit u ...
- 基于three.js如何在模型加消息提示框?
在模型加消息提示框 示例描述与操作指南 示例效果展示 实现步骤 相关接口 示例描述与操作指南 在模型区的正上方显示消息提示,可提示多类信息,本示例默认为"info"类信息提示,还可 ...
最新文章
- c# yield关键字原理
- 深度学习有哪些经典数据集?
- 顾险峰: 庞加莱猜测的证明和应用
- Java实用教程笔记 组件及事件处理
- ROS学习(十三):time 和 Timer
- 《408计算机网络》综合应用题
- 2440按键中断编程
- linux中service的问题
- EasyRMS录播管理服务器项目实战:windows上开机自启动NodeJS服务
- PUN☀️四、服务器大厅建房解析
- GUI界面设计学渣笔记———使用PyQt做深度学习的可视化界面
- 什么是SPA,如何实现SPA应用呢?
- 1374:铲雪车(snow)——欧拉回路
- createjs之easeljs【游戏看你有多色(一)】
- 手机远程启动热车!汽车远程启动有什么缺点?你都知道吗汽车手机远程启动优缺点,汽车手机远程启动怎么用,
- 爬虫笔记:BeautifulSoup详解
- 好玩的免费GM游戏整理汇总
- 1379690-01-3,3-Azido-D-alanine HCl结构式分享
- Zoomit默认快捷键
- 管理小故事精髓 100例(转) 1