最近阅读了一些文献来了解动态调度的问题,有几篇文章觉得总结整理的很到位。

《炼钢-连铸生产调度模型及启发式算法》——刘光航

《钢铁生产动态调度理论研究与工程应用综述》——常春光

《炼钢-连铸混合优化调度方法及应用(博士学位论文)》——王秀英

首先整理一下看过的文献资料,关于动态调度研究方法应该可以分为四类:

(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安排到使冲突最小的设备上。

希望以后慢慢多写代码, 多实现算法。

炼钢-连铸生产动态调度模型(加启发式算法步骤)相关推荐

  1. 人工蜂群算法c语言程序,基于人工蜂群算法的炼钢连铸生产调度方法研究

    摘要: 钢铁工业是国民经济和国防建设的重要支柱.炼钢连铸是钢铁生产的主要工序和瓶颈工序,有效的炼钢连铸生产调度方法能提高生产效率并降低生产成本.然而,炼钢连铸调度问题是一类复杂的NP-hard问题,难 ...

  2. c++ linux 线程等待与唤醒_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...

    为什么要线程同步? 线程间有很多共享资源,都对一个共享数据读写操作,线程操作共享资源的先后顺序不确定,可能会造成数据的冲突 看一个例子 两个线程屏行对全局变量count++ (采用一个val值作为中间 ...

  3. TensorFlow学习笔记(三)模型的基本步骤

    在本教程中,我们将学到构建一个TensorFlow模型的基本步骤,并将通过这些步骤为MNIST构建一个深度卷积神经网络. 安装 在创建模型之前,我们会先加载MNIST数据集,然后启动一个TensorF ...

  4. 判断sem信号量为零_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...

    为什么要线程同步? 线程间有很多共享资源,都对一个共享数据读写操作,线程操作共享资源的先后顺序不确定,可能会造成数据的冲突 看一个例子 两个线程屏行对全局变量count++ (采用一个val值作为中间 ...

  5. Java实现生产消费模型的5种方式

    ** 前言 ** 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储 ...

  6. PyTorch框架学习十九——模型加载与保存

    PyTorch框架学习十九--模型加载与保存 一.序列化与反序列化 二.PyTorch中的序列化与反序列化 1.torch.save 2.torch.load 三.模型的保存 1.方法一:保存整个Mo ...

  7. 如何将深度学习模型加载到android环境中

    承接上一篇的内容,考虑如何将深度学习的模型加载到android app中 文章目录 前言 一.使用工具 二.使用步骤 1.模型格式的转换 2.配置文件修改 3. 应用程序 前言 将图片学习的模型加载到 ...

  8. 生产-消费模型之阻塞队列的源码分析

    文章目录 前言 阻塞队列API 存放元素 boolean add(E e) boolean offer(E e) boolean offer(E e, long timeout, TimeUnit u ...

  9. 基于three.js如何在模型加消息提示框?

    在模型加消息提示框 示例描述与操作指南 示例效果展示 实现步骤 相关接口 示例描述与操作指南 在模型区的正上方显示消息提示,可提示多类信息,本示例默认为"info"类信息提示,还可 ...

最新文章

  1. c# yield关键字原理
  2. 深度学习有哪些经典数据集?
  3. 顾险峰: 庞加莱猜测的证明和应用
  4. Java实用教程笔记 组件及事件处理
  5. ROS学习(十三):time 和 Timer
  6. 《408计算机网络》综合应用题
  7. 2440按键中断编程
  8. linux中service的问题
  9. EasyRMS录播管理服务器项目实战:windows上开机自启动NodeJS服务
  10. PUN☀️四、服务器大厅建房解析
  11. GUI界面设计学渣笔记———使用PyQt做深度学习的可视化界面
  12. 什么是SPA,如何实现SPA应用呢?
  13. 1374:铲雪车(snow)——欧拉回路
  14. createjs之easeljs【游戏看你有多色(一)】
  15. 手机远程启动热车!汽车远程启动有什么缺点?你都知道吗汽车手机远程启动优缺点,汽车手机远程启动怎么用,
  16. 爬虫笔记:BeautifulSoup详解
  17. 好玩的免费GM游戏整理汇总
  18. 1379690-01-3,3-Azido-D-alanine HCl结构式分享
  19. Zoomit默认快捷键
  20. 管理小故事精髓 100例(转) 1

热门文章

  1. Android user版通过adb_enable开启adb 调试 不提示对话框
  2. 设计原则之【开闭原则】
  3. 分布式架构优缺点以及设计
  4. 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】
  5. php 格式化银行卡,PHP 格式化数字返回银行卡号码
  6. 家庭摄像头隐私保护存在漏洞,央视提醒:信息安全可能无法保障
  7. Proxmox kvm关机失败
  8. php实现视频转gif,mp4格式如何转换成gif格式
  9. Freebsd PF 安装使用
  10. SET和SETX命令的应用