1

我正在开发一个项目来实施和测试一个 NP-Hard/Complete 问题。我有一个大致的想法来做一些关于调度的事情,并且已经阅读了很多关于 Job Shop 问题的内容。我知道 OR 库中有著名的测试用例/基准可供使用。我有适当的代码(Java)来读取测试实例并存储其数据。现在我感觉陷入了一个循环,试图找到一种算法/方法来创建一个时间表,然后提出一个最佳时间表。我读了很多学术论文,但我通常会迷失在其中,尤其是复杂的集合符号。我希望我能找到更多伪代码的例子。我知道这是一个经典问题,我想知道是否有人对作业车间的直接经典解决方案提出建议——尤其是任何有伪代码示例的解决方案。我不需要为这个项目做原创研究。我只需要学习如何应用已知技术来解决 NP-Hard 问题、编写代码、运行测试、展示实验结果并对其进行评论。任何建议或帮助将不胜感激。

“必须完成许多工作,每项工作都包括在一定时间内使用多台机器。问题是要找到在最短的时间内在所有不同机器上完成所有工作的最佳计划。”

示例问题实例:

datalines 部分中的每一行通过 10 对连续数字指定一个作业。每对数字定义了作业的一个任务,代表了作业在机器上的处理。对于每一对,第一个数字标识它执行的机器,第二个数字是持续时间。10 对的顺序定义了作业的任务顺序。

“劳伦斯 10x10 实例”(表 6,实例 4);也称为 (seta4) 或 (A4)(Applegate 和 Cook; 1991) -10 机器编号 0-9 -10 行 = 10 个工作 -- 最佳:842

2 44 3 5 5 58 4 97 0 9 7 84 8 77 9 96 1 58 6 89

4 15 7 31 1 87 8 57 0 77 3 85 2 81 5 39 9 73 6 21

9 82 6 22 4 10 3 70 1 49 0 40 8 34 2 48 7 80 5 71

1 91 2 17 7 62 5 75 8 47 4 11 3 7 6 72 9 35 0 55

6 71 1 90 3 75 0 64 2 94 8 15 4 12 7 67 9 20 5 50

7 70 5 93 8 77 2 29 4 58 6 93 3 68 1 57 9 7 0 52

6 87 1 63 4 26 5 6 2 82 3 27 7 56 8 48 9 36 0 95

0 36 5 15 8 41 9 78 3 76 6 84 4 30 7 76 2 36 1 8

5 88 2 81 3 13 6 82 4 54 7 13 8 29 9 40 1 78 0 75

9 88 4 54 6 64 7 32 0 52 2 6 8 54 5 82 3 6 1 26

4

1 回答 1

1

看看Drools Planner(一个用于调度此类问题的开源 Java 框架)中使用的算法,它们在手册中有详细解释。

于 2012-11-26T08:26:10.083 回答