采用NEH启发式算法最小化最大完工时间。

时间: 2023-07-30 12:08:04 浏览: 84
NEH启发式算法是一种经典的贪心算法,用于解决流水线调度问题。最小化最大完工时间也是流水线调度问题的一个目标。以下是NEH启发式算法的步骤: 1. 将所有作业按照加工时间的非降序排列 2. 将前两个作业分别安排在两个机器上,并计算出每个机器的完工时间 3. 逐个将剩余作业插入到各个位置中,每次插入后计算出每个机器的完工时间,选择最小的完工时间 4. 重复3直到所有作业都被插入 在NEH启发式算法中,每次插入作业时只考虑当前状态下的最优解,不考虑未来的影响。因此,NEH启发式算法并不保证获得全局最优解,但通常能够得到一个较好的局部最优解。 对于最小化最大完工时间的流水线调度问题,NEH启发式算法可以通过在步骤3中选择最小的完工时间来实现。具体地说,对于每个插入位置,计算出将该作业插入该位置后,每个机器的完工时间。然后选择最大的机器完工时间作为本次插入的最小完工时间,直到所有作业都被插入。最终的最大完工时间即为所有机器的完工时间中的最大值。
相关问题

采用C++实现置换流水车间调度问题数学模型,采用NEH启发式算法最小化最大完工时间,给出你设计的编码和解码描述,并举例说明。给出产生解的算子步骤。

一、数学模型 假设有 $m$ 台机器和 $n$ 个工件,每个工件需要经过 $m$ 台机器,每台机器的处理时间为 $p_{ij}$,其中 $i$ 表示第 $i$ 个工件,$j$ 表示第 $j$ 台机器。那么问题就是如何安排每个工件在每台机器上的加工顺序,使得最大完工时间(makespan)最小。 二、NEH启发式算法 NEH算法是一种启发式算法,它的主要思想是将所有工件按照某种规则排序,然后依次插入到初始序列中,每次插入后计算最大完工时间,最终得到最优解。 1. 排序 首先需要对所有工件进行排序,通常采用工件加工时间之和的非降序排列。 2. 初始序列 将排序后的第一个工件插入到空序列中,得到初始序列。 3. 插入 依次将其他工件插入到初始序列中,每次插入后计算最大完工时间,并记录最小值。 4. 返回结果 返回最小的最大完工时间和对应的序列。 三、编码和解码 编码:将一个解表示为一个长度为 $n$ 的排列 $P$,其中 $P_i$ 表示第 $i$ 个工件在序列中的位置。 解码:对于一个给定的排列 $P$,可以通过按照 $P$ 中的顺序依次安排每个工件在每台机器上的加工顺序,从而得到一个完整的调度方案。然后可以计算该调度方案的最大完工时间。 举例说明: 假设有 $4$ 台机器和 $6$ 个工件,每个工件需要依次经过 $4$ 台机器的加工,每台机器的处理时间如下表所示: | 机器 | 时间 | | ---- | ---- | | 1 | 3 | | 2 | 6 | | 3 | 4 | | 4 | 5 | 工件加工时间如下表所示: | 工件 | 1 | 2 | 3 | 4 | 5 | 6 | | ---- | - | - | - | - | - | - | | 1 | 3 | 2 | 6 | 4 | 5 | 7 | | 2 | 5 | 4 | 3 | 2 | 6 | 1 | | 3 | 4 | 5 | 6 | 1 | 3 | 2 | | 4 | 2 | 7 | 5 | 4 | 6 | 3 | 1. 排序 按照工件加工时间之和的非降序排列,得到排序后的工件序列为 $1, 2, 3, 4$。 2. 初始序列 将排序后的第一个工件 $1$ 插入到空序列中,得到初始序列 $1$。 3. 插入 依次将其他工件插入到初始序列中,每次插入后计算最大完工时间,并记录最小值。 - 将工件 $2$ 插入到序列 $1$ 的前面,得到序列 $2, 1$,最大完工时间为 $28$。 - 将工件 $3$ 插入到序列 $2, 1$ 的前面,得到序列 $3, 2, 1$,最大完工时间为 $36$。 - 将工件 $4$ 插入到序列 $3, 2, 1$ 的前面,得到序列 $4, 3, 2, 1$,最大完工时间为 $43$。 4. 返回结果 得到最小的最大完工时间为 $43$,对应的序列为 $4, 3, 2, 1$。 四、产生解的算子步骤 在NEH算法中,产生解的算子是插入算子。具体步骤如下: - 将一个工件插入到序列中的某个位置。 - 计算新的最大完工时间。 然后对所有可能的插入位置进行遍历,选择能够使最大完工时间最小的插入位置。

采用C++实现置换流水车间调度问题数学模型,采用NEH启发式算法,给出产生解的算子或步骤。

置换流水车间调度问题是一种NP难问题,因此采用启发式算法求解是比较常见的方法之一。NEH启发式算法是一种经典的启发式算法,下面给出其产生解的算子或步骤。 1. 初始化:将作业按照其总加工时间从大到小排序,得到一个初始调度序列。 2. 插入操作:对于当前调度序列,将新的作业插入到每个位置上,计算每个插入位置的调度序列的总加工时间,选择最小的一个插入位置并插入作业。 3. 循环迭代:重复执行插入操作,直到得到满意的解或达到预设的迭代次数。 NEH启发式算法的关键在于插入操作,具体实现可以采用贪心策略,即每次选择能够使调度序列总加工时间最小的插入位置进行插入。同时,为了避免陷入局部最优解,可以在每次迭代时随机打乱作业的顺序,重新进行初始化和插入操作。

相关推荐

最新推荐

recommend-type

Johnson(流水作业调度的最优算法)

Johnson(流水作业调度的最优算法),算法思想基于动态规划,里面包含了公式的推导与poj例题的简单实现的代码
recommend-type

内鬼V4 cat版 scratch版.sb3

这是一个未做好的作品,但还原了绿色周!!!
recommend-type

2024-2030中国mRNA癌症疫苗和治疗市场现状研究分析与发展前景预测报告 Sample.pdf

QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com
recommend-type

国家开放大学数据库应用技术第三次形考作业3

使用TOP和CASE的查询。写出实现如下查询的SQL语句。  (18) 列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。  (19) 查询Java考试成绩最低的学生的姓名、所在系和Java成绩。  (20) 查询选修了Java的学生学号、姓名、所在系和成绩,并对所在系进行如下处理:   当所在系为“计算机系”时,显示“CS”;   当所在系为“信息管理系”时,显示“IS”;   当所在系为“通信工程系”时,显示“CO”;   对其他系,均显示“OTHER”。
recommend-type

2024-2030中国巴比妥酸市场现状研究分析与发展前景预测报告 Sample.pdf

QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!