流水作業排程的Johnson 演算法

2021-06-16 10:08:26 字數 1208 閱讀 1411

如果作業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上開始加工,到最後乙個作業...