如果作業i和j滿足,則稱作業i和j滿足johnson不等式。如果作業i和j不滿足johnson不等式,則交換作業i和j的加工次序後,作業i和j滿足johnson不等式。
流水作業排程的johnson 演算法:
};bool compare(jobtype a, jobtype b) // sort使用
// 按照johnson法則執行流水作業排程
/*流水作業排程問題的johnson演算法:
1. 令m=
2. 將m中任務以mi非遞減排序,將n中作業依ni非遞增排序
3. m中任務接n中任務即為johnson法則的最優排程
*/int flowshop(int n, int a, int b, int c)
sort(d, d + n, compare); // 按d中作業時間增序排序
int j = 0, k = n -1;
for(int i = 0; i < n; i++)
else
}j = a[c[0]]; // 計算最優排程序列下的消耗總時間
k = j + b[c[0]];
for (int i = 1; i < n; i++)
delete d;
return k;
}int main()
; // 第一台機器的加工時間
int b = ; // 第二台機器的加工時間
int n = sizeof(a) / sizeof(int); // 作業數
int* c = new int[n]; // 最優排程序列
int result = flowshop(n, a, b, c); // 最優排程時間的總數
cout << result << endl;
for (int i = 0; i < n; i++) // 輸出最優排程序列
cout << endl;
return 0;
}
流水作業排程johnson法則
問題描述 n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為ai和bi。流水作業排程問題要求確定這n個作業的最優加工順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時...
流水作業排程
流水作業排程問題 描述 n個作業要在由兩台機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為ai和bi,1 i n。流水作業高度問題要求確定這n個作業的最優加工順序,使得從第乙個作業在 機器m1上開始加工,到最後乙個作業...
流水作業排程
流水作業排程問題 描述 n個作業要在由兩台機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為ai和bi,1 i n。流水作業高度問題要求確定這n個作業的最優加工順序,使得從第乙個作業在 機器m1上開始加工,到最後乙個作業...