流水作業排程問題

2021-07-30 02:58:02 字數 904 閱讀 6092

n個作業在2臺機器上m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,後在m2上加工。在兩台機器上加工的時間分別為ai和bi。

目標:確定這n個作業的加工順序,使得從第一台作業開始加工,到最後乙個作業完成加工所需要的時間最少。

假設要對集合s中的作業進行加工,當m1開始加工時,假設m2正在工作,還需要時間t後才能使用。將這種情況下完成加工的時間記為t(s,t)。則流水作業排程的最優值為t(n,0)。

#include#define n 4

int a[n]=; //m1

int b[n]=; //m2

int index[n]=;//方便全排列

int work(int i,int t)else

} int minvalue;

int tempvalue,temp;

int tt;

int j;

tt = (t - a[index[i]]) > 0 ? (t - a[index[i]]) : 0;

minvalue = a[index[i]] + work(i + 1,tt + b[index[i]]);

for(j = i + 1;j < n;j ++)

temp = index[i]; index[i] = index[j]; index[j] = temp;

} return minvalue;

}int main()

假設先加工第i個作業,則需要的時間為:

ai+t(n-,bi)

作業排程問題的最優解為:

t(n,0) = min,b[i])}

1<=i<=n

t(s,t) = min,b[i] + max - a[i])}

1<=i<=n

流水作業排程問題

流水作業排程問題 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上加工。m1和m2加工作業i所需的時間分別為a i 和b i 流水作業排程問題要求確定這n個作業的最優加工順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最...

流水作業排程問題

有n個作業要在兩台機器m1和m2組成的流水線上完成加工。每個作業i 都必須先花時間ai 在m1上加工,然後花時間bi 在m2上加工。求解n個作業的加工順序,使得總的加工時間最短。最優排程 讓m1沒有空閒,m2的空閒時間盡量短。設s1 為 a b的作業集合,s2為 a b 的作業集合,將s1的作業按a...