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

出自  [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博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值