流水作業排程

2021-09-22 13:40:50 字數 1250 閱讀 8833

流水作業排程問題

描述:

n個作業要在由兩台機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。

m1和m2加工作業i所需的時間分別為ai和bi,1≤i≤n。流水作業高度問題要求確定這n個作業的最優加工順序,使得從第乙個作業在

機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。

可以假定任何任務一旦開始加工,就不允許被中斷,直到該任務被完成,即非優先排程。

輸入:

輸入包含若干個用例,第一行為乙個正整數k(1<=k<=1000),表示用例個數,接下來k個用例,每個用例第乙個為作業數n(1<=n<=1000),

接下來n行,每行兩個非負整數,分別表示在第一台機器和第二台機器上加工時間。

輸出:

每個用例用一行輸出採用最優排程所用的總時間,即從第一台機器開始到第二台機器結束的時間。

樣例輸入:14

5 612 2

4 14

8 7樣例輸出:33

演算法描述:

1 令n1=,n2=

2 將n1中作業按ai的非減排序,n2 作業按bi非增排序

3 構成滿足johnson法則的最優排程

#include #include 

using

namespace

std;

class

job;

bool

cmp(job a,job b)

int func(int n,int a,int b,int

c)

else

d[i].index=i;

}sort(d,n+d,cmp);

j=0,k=n-1

;

for(i=0;i)

j=a[c[0

]]; k=j+b[c[0

]];

for(i=1;i)

delete d;

returnk;}

intmain()

cout

}return0;

}

執行結果:

流水作業排程

流水作業排程問題 描述 n個作業要在由兩台機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為ai和bi,1 i n。流水作業高度問題要求確定這n個作業的最優加工順序,使得從第乙個作業在 機器m1上開始加工,到最後乙個作業...

流水作業排程問題

流水作業排程問題 n個作業在2 臺機器上m1和 m2組成的流水線上完成加工。每個作業加工的順序都是先在 m1上加工,後在 m2上加工。在兩台機器上加工的時間分別為ai和 bi。解 流水作業排程 根據johnson法則 使用結構體陣列f1 j 存放a i 使用結構體陣列f2 k 存放a i b i 的...

流水作業排程問題

n個作業在2臺機器上m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,後在m2上加工。在兩台機器上加工的時間分別為ai和bi。目標 確定這n個作業的加工順序,使得從第一台作業開始加工,到最後乙個作業完成加工所需要的時間最少。假設要對集合s中的作業進行加工,當m1開始加工時,假設...