Algorytm NEH dla F
∗||C
maxMariusz Makuchowski
4 kwietnia 2019
Sformułowanie problemu: F ||C
max.
Mamy do wykonania zbiór zadań J = (1, ..., n) na zbiorze maszyn M = (1, ..., m).
Każde zadanie przechodzi kolejno przez wszystkie maszyny od 1 do m.
Dane są pi ,k 0 czasy trwania zadania i ∈ J na maszynie k ∈ M.
Analizujemy werję permutacyjną
Przykład:
Dane: n = 4, m = 3
p1,1= 1 p2,1 = 4 p3,1 = 3 p4,1 = 2 p1,2= 1 p2,2 = 1 p3,2 = 4 p4,2 = 4 p1,3= 3 p2,3 = 2 p3,3 = 3 p4,3 = 1
kolejność π = (1, 2, 3, 4) m1 J1 J2 J3 J4
m2 J1 J2 J3 J4
m3 J1 J2 J3 J4
Cmax= 17
Przykład:
Dane: n = 4, m = 3
p1,1= 1 p2,1 = 4 p3,1 = 3 p4,1 = 2 p1,2= 1 p2,2 = 1 p3,2 = 4 p4,2 = 4 p1,3= 3 p2,3 = 2 p3,3 = 3 p4,3 = 1
kolejność π = (1, 3, 2, 4) m1 J1 J3 J2 J4
m2 J1 J3 J2 J4
m3 J1 J3 J2 J4
Cmax= 15
Sformułowanie problemu: F ||C
maxCi ,k(π) - moment zakończenia zadania i na maszynie k, dla kolejności π.
Cmax(π) - długość uszeregowania π.
Cmax(π) = max
i ∈J max
k∈MCi ,k(π) = Cπ(n),m(π) Problem polega na wyznaczniu uszeregowania o najmniejszej długości
π∗ ∈ arg min
π∈ΠCmax(π)
Obliczenie C
max(π)
Cπ(i ),k(π) = max{Cπ(i −1),k(π), Cπ(i ),k−1(π)} + pπ(i ),k
gdzie: π(0) = 0, C0,j(π) = Cπ(i ),0(π) = 0
kolejność π = (1, 3, 2, 4) m1 J1 J3 J2 J4
m2 J1 J3 J2 J4
m1 J1 J3 J2 J4
Cπ(1),1(π) = C1,1(π) = max{C0,1(π), C1,0(π)} + p1,1= max{0, 0} + 1 = 1 Cπ(1),2(π) = C1,2(π) = max{C0,2(π), C1,1(π)} + p1,2= max{0, 1} + 1 = 2 Cπ(1),3(π) = C1,3(π) = max{C0,3(π), C1,2(π)} + p1,3= max{0, 2} + 3 = 5 Cπ(2),1(π) = C3,1(π) = max{C1,1(π), C3,0(π)} + p3,1= max{1, 0} + 3 = 4 Cπ(2),2(π) = C3,2(π) = max{C1,2(π), C3,1(π)} + p3,2= max{2, 4} + 4 = 8 Cπ(2),3(π) = C3,3(π) = max{C1,3(π), C3,2(π)} + p3,3= max{5, 8} + 3 = 11 ...
Cπ(4),3(π) = C4,3(π) = max{C2,3(π), C4,2(π)} + p4,3= max{13, 14} + 1 = 15
Obliczenie C
max(π)
kolejność π = (1, 3, 2, 4) m1 J1 J3 J2 J4
m2 J1 J3 J2 J4
m3 J1 J3 J2 J4
J1 J3 J2 J4
m1 1/1 3/4 4/8 2/10 m2 1/2 4/8 1/9 4/14 m3 3/5 3/11 2/13 1/15
Algorytm NEH
Nawaz M., Enscore Jr. E.E., Ham I.: A heuristic algorithm for the m-machine, n-job flow-shop sequencing problem. OMEGA International Journal of Management Science, 11, 1983, str.
91-95.
Algorytm NEH
Algorytm buduje rozwiązanie poprzez dokładanie jeszcze nieuszeregowanych zadań do bieżącej kolejności.
Przykład: J = {1, 2, 3, 4}
krok 1: π = (3) krok 2: π = (3, 2) krok 3: π = (3, 4, 2) krok 4: π = (1, 3, 4, 2)
Algorytm NEH
Które zadanie szeregować ?
Wybrać zadanie największe z nieuszeregowanych o największej wadze wi =Pk∈Mpi ,k
Na którą pozycję położyć ?
Wybrać pozycję najlepszą, czyli o najmniejszym Cmax w i tym kroku należy sprawdzić i próbnych rozwiązań i wybrać z nich najlepsze.
NEH: przykład
Dane: n = 4, m = 3
p1,1= 1 p2,1 = 4 p3,1 = 3 p4,1 = 2 p1,2= 1 p2,2 = 1 p3,2 = 4 p4,2 = 4 p1,3= 3 p2,3 = 2 p3,3 = 3 p4,3 = 1 w1 = 5 w2 = 7 w3 = 10 w4 = 7
π = (3)
NEH: przykład krok 2
π = (2, 3)
π = (3, 2)
NEH: przykład krok 3
π = (4, 3, 2)
π = (3, 4, 2)
π = (3, 2, 4)
NEH: przykład krok 4
π = (1, 3, 4, 2)
π = (3, 1, 4, 2)
π = (3, 4, 1, 2)
π = (3, 4, 2, 1)