出自  [1]    TAILLARD E. Some efficient heuristic methods for the flow shop sequencing problem[J]. European Journal of Operational Research, 1990,47(1): 65-74.

Some efficient heuristic methods for the flow shop sequencing problem - ScienceDirect

以下为文章部分内容翻译。

题目:求解流水车间调度问题的几种有效启发式方法

(Some efficient heuristic methods for the flow shop sequencing problem)

摘要:本文对目前求解流水车间排序问题的最佳启发式方法进行了比较,并对最佳启发式方法(NEH)的复杂度进行了改进。接下来,我们应用禁忌搜索这一解决组合优化问题的新技术,并报告了计算实验。最后给出了一种并行禁忌搜索算法,实验结果表明该启发式算法具有很好的加速效果。

部分内容:

流水车间调度问题是np困难的,只能精确地解决小尺寸[2]。它包括寻找一个使最大完成时间M(σ)最小的序列σ。所以可能的调度结果的数量是n!。

对该问题的一些观察

首先,我们在图1中给出了由9个作业和10台机器的500个问题的完全枚举得到的所有可能的最大完成时间的分布。该分布是相对于最优解给出的。处理时间是随机统一生成的(1到100之间的整数)。我们之所以选择这个问题大小,是因为在合理的计算时间内,每一个解σ都可以计算出M(σ)。

我们可以观察到分布是不对称的。小于0.02%的M(σ) 位于M(σopt)和1.01 M(σopt)之间(其中σopt是一个最优调度结果)。所以找到比最优解高1%的解通常是非常困难的,但随机解质量平均只比最优解高20%。然后,我们在图2中给出了这些问题的最佳最大完工时间M(σopt)的分布。

这个分布看起来几乎是对称的,它的范围(对于这500个问题)包含在平均值附近20%的区间内。makespan的平均值为1016.1,标准差为62.1。χ2检验既不能确认也不能反驳这个分布是高斯分布。因此,说到由启发式给出的平均完成时间似乎是一个有意义的度量。

经典启发式的比较

人们提出了许多启发式方法来解决流水车间问题;我们在表1中比较了解决方案的质量和其中一些解决方案的复杂性。在Gupta, Johnson, Palmer和CDS (Campbell, Dudek和Smith的算法)的[1]中,在RA(快速访问程序)的[3]中,在NEH (Nawaz, Enscore和Ham的算法)的[8]中,可以找到这些方法的描述。

复杂性包括完成时间的计算。解的质量以高于最优值(*)或禁忌启发式迭代1000次后获得的最大完成时间的平均值的百分比给出。

NEH似乎是实践中最好的多项式启发式。当需要较短的计算时间时,启发式RA或Palmer也很有用。关于这些启发式的其他结果将在[9]中讨论。注意,下面描述的新方法[7]允许我们将NEH算法的复杂度从O(n^3m)降低到O(n^2m)。

自然,下降算法可以应用于这些启发式给出的解,但不能再给出复杂度,改进也很小:对于NEH,解的平均改进不到1%,计算时间变得和NEH对于其他启发式一样重要。

*NEH启发式的改进

我们首先回顾NEH算法:

1) n个作业按照 在各机器上的加工时间总和 降序排列。

2) 获取前两个作业,并对它们进行调度,以最小化部分完工时间,就像只有这两个作业一样。

3) 对k=3到n执行

4)在k个可能的作业中插入第k个作业,使部分完工时间最小。

(↓原文)

步骤1的复杂度为O(nlog(n));步骤2为O(m)。为了在步骤4中计算一个部分的最大完成时间,我们需要O(km)操作。然而,可以用O(km)来计算这一步的k个最大完成时间:

算法(求Mi,第i个位置插入作业k后的最大完成时间)

1) 计算第j台机器上第i个作业的最早完成时间eij;第一个机器上的第一个作业的开始时间为0(见图3a)。(tij为作业i在机器j上的加工时间)

2) 计算尾部qij,即从第j台机器上第i个作业开始的时间到操作结束的时间(图3b)

3) 计算插入第i个位置的作业k在第j台机器上的最早相对完成时间fij(图3c)

4) 在第i个位置增加作业k时,部分完成时间Mi的值为:

(↓原文)

所有这些步骤都可以在O(km)的时间内执行。因此,NEH算法第4步的复杂度为O(km)。我们得出NEH算法的运行时间为O(n^2m)。

算法复现c++源码见:

(1条消息) (流水车间调度 FSSP) NEH算法(优化后)c++源代码_JC.223的博客-CSDN博客

(流水车间调度 FSSP) NEH启发式算法改进 (时间复杂度从 O(mn^3) 降至 O(mn^2) )相关推荐

  1. 用matlab求解工作时间调度问题,置换流水车间调度问题的MATLAB求解

    置换流水车间调度问题的MATLAB求解 物流运筹实务课程设计 题目:置换流水车间调度问题的MATLAB求解 置换流水车间调度问题的MATLAB求解 目录 一. 前言------------------ ...

  2. 用matlab求解工作时间调度问题,置换流水车间调度问题的MATLAB求解.doc

    物流运筹实务课程设计 题目:置换流水车间调度问题的MATLAB求解 置换流水车间调度问题的MATLAB求解 目录 前言--------------------------- 5 问题描述------- ...

  3. 【优化算法】遗传算法GA求解混合流水车间调度问题(附C++代码)

    [优化算法]遗传算法GA求解混合流水车间调度问题(附C++代码) 00 前言 各位读者大家好,好久没有介绍算法的推文了,感觉愧对了读者们热爱学习的心灵.于是,今天我们带来了一个神奇的优化算法--遗传算 ...

  4. 30篇强化学习求解车间调度文章(中文)大全

    国内使用强化学习求解车间调度问题的研究起步较晚,基本是在在2000年以后,而深度强化学习求解车间调度问题更是在2019.2020年左右开始流行.今天在上一篇文章的基础上((吐血整理)118篇强化学习求 ...

  5. 流水调度问题c语言,基于遗传算法的流水车间调度问题汇总.doc

    基于遗传算法的流水车间调度问题汇总,车间调度及其遗传算法,遗传算法车间调度,流水车间调度问题,置换流水车间调度问题,流水车间调度,流水车间调度问题代码,流水车间调度算法,任务调度遗传算法源码,遗传算法 ...

  6. 车间调度-灰狼算法的应用:以算例MK01为例

    车间调度系列文章: 1.车间调度的编码.解码,调度方案可视化的探讨 2.多目标优化:浅谈pareto寻优和非支配排序遗传算法-NSGAII的非支配排序及拥挤度 3.柔性车间调度问题:以算例MK01初探 ...

  7. 流水车间调度问题混合整数规划模型

    流水车间调度问题(FSP)描述为:有n个独立的工件按照相同的工艺路线在m台机器伤加工,每个工件需要经过m道工序,这些工序分别要求不同的机器,并且各工序的加工过程不能中断. 以最大完工时间为目标的流水车 ...

  8. 复现一篇分布式装配混合零空闲置换流水车间调度问题的代码

    复现一篇分布式装配混合零空闲置换流水车间调度问题的代码 摘要 说明 代码 测试类 算法主体 启发式H11 计算Cmax 读取测试集文件 结果 测试集 参考文献 摘要 In this paper, we ...

  9. 多目标柔性车间调度丨mogv算法:以算例MK01为例

    车间调度系列文章: 1.车间调度的编码.解码,调度方案可视化的探讨 2.多目标优化:浅谈pareto寻优和非支配排序遗传算法-NSGAII的非支配排序及拥挤度 3.柔性车间调度问题:以算例MK01初探 ...

最新文章

  1. MySQL创建触发器(CREATE TRIGGER)
  2. payment on barclays
  3. ”System.Configuration.ConfigurationSettings.AppSettings“ 已过时----解决方案
  4. 终于有人把幸存者偏差讲明白了
  5. 新网数十万域名管理密码泄露
  6. CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法
  7. android 混淆移除log,关于安卓代码混淆和Release版本中去除Debug信息
  8. Java多个PDF合成一个PDF的方法
  9. Pyts入门之时间序列的分解---奇异谱分析(七)
  10. c语言url下载文件,C/C++轻松实现文件下载
  11. 逃离一线!从上海举家回成都七年,现在怎么样了?
  12. 【2022考石开正攵★氵台】思维导图
  13. python中encode用法_Python中encode()方法的使用简介
  14. PG系列1-postgresql的源码编译安装(CentOS7.8)
  15. Elasticsearch基于DSL搜索语法进行复杂查询
  16. 【网络基础】DDNS - 动态DNS
  17. 2020年每个Web开发人员必须知道的9种Web技术
  18. 区块链报错3 | truffle unbox 报错 | downloading失败 | unbox failed
  19. 用数组+链表实现哈希表
  20. SLAM静态编译中动态链接库问题

热门文章

  1. i++和 ++i的区别
  2. SQL SERVER 2005镜像配置(包含见证服务器)
  3. 【效率至上】如何才能有效提高工作效率
  4. windows无法配置此无线连接_用Windows 10上网时无法连接无线网怎么办?5种方案帮你解决...
  5. 商业计划书中该如何做产品介绍?
  6. nginx基于docker安装及主页修改
  7. 经济专业转计算机,经济/金融/社科等背景转偏计算机方向的经验分享
  8. 定制带有模拟器且支持ActiveSync调试的WINCE5.0 SDK
  9. 【毕业设计】时间序列天气预测系统 - LSTM
  10. 如何在个人博客上添加自己的备案信息