流水作業排程問題
描述:
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;
}
xingoo 閱讀(
...)
編輯收藏
流水作業排程
流水作業排程問題 描述 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開始加工時,假設...