Algorithm 约翰逊算法给出最优序列的原因
jobshop调度的Johnson算法解决了2台机器和N个作业的情况 作业Pi有两个操作,持续时间为Pi1,Pi2,在机器M1,M2上按该顺序进行Algorithm 约翰逊算法给出最优序列的原因,algorithm,optimization,Algorithm,Optimization,jobshop调度的Johnson算法解决了2台机器和N个作业的情况 作业Pi有两个操作,持续时间为Pi1,Pi2,在机器M1,M2上按该顺序进行 Step 1. List A = { 1, 2, …, N }, List L1 = {}, List L2 = {}. Step 2. From all available operation durations, pick the minimum. If the minimum belongs to Pk1, Remove K from list
Step 1. List A = { 1, 2, …, N }, List L1 = {}, List L2 = {}.
Step 2. From all available operation durations, pick the minimum.
If the minimum belongs to Pk1,
Remove K from list A; Add K to end of List L1.
If minimum belongs to Pk2,
Remove K from list A; Add K to beginning of List L2.
Step 3. Repeat Step 2 until List A is empty.
Step 4. Join List L1, List L2. This is the optimum sequence.
我不明白为什么这会给出“最佳”答案。这是你的电话号码
我认为这是一个反例:
作业集:
(2,3);(4,5);(6,7)
算法给出的最终答案是机器1上的J1、J2、J3(2,4,6),而机器2一直处于空闲状态。相反,如果我们在机器1上安排J1、J2,在机器2上安排J3,那么我们可以更早地完成
谁能解释我做错了什么
算法给出的最终答案是机器1上的J1、J2、J3(2,4,6),而机器2一直处于空闲状态。相反,如果我们在机器1上安排J1、J2,在机器2上安排J3,那么我们可以更早地完成
不是。关键是作业由两部分组成,第一部分必须在机器1上完成,第二部分必须在第一部分完成后在第二台机器上完成
因此,在您的示例中,您将获得序列{J1,J2,J3}
,这是正确的,它将被执行
J2[1]
和M2上的J1[2]
同时启动;4分钟3分钟2+4+6+7=19
分钟,这是最快的方式
目标是最大化M1和M2上的活动重叠。所以,如果你有第一个零件很短的工作,那么先做这些工作,让机器2尽快被占用。如果可能的话,让第二部分较短的作业排在最后,这样当机器1已经完成时,机器2可以工作的时间很短。@downvoter:我怀疑我问过这个问题。我举了一个反例,所以我做了一些家庭作业。我知道我可能错了。如果您有信心,请提供答案。我不喜欢我的坏习惯。把它当作我可以在任何一台机器上执行并完成的工作。