出自 [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++源码见: