5.5 Wnioski i uwagi
6.1.2 Ocena ruchu
Jakość ruchu v = (j, z) wykonanego dla kolejności π oceniamy na pod-stawie relacji pomiędzy Cmax(π) a Cmax(β), gdzie β = π(v). Ocena ruchu poprzez bezpośrednie wyliczenie wartości Cmax(π(v)) wydaje się oczywista i nie będzie dalej rozważana, ze względu na duży nakład obliczeń. Zamiast tego będziemy oceniać ruch poprzez analizę specyficznych dróg w grafie G(α). Wartość Cmax(β) jest ściśle związana z długością najdłuższej drogi przechodzącej przez operację j w grafie G(β). Mówimy, że droga w grafie
2Formalnie zbiór ZP (j) powinien być indeksowany przez π. Jednakże dla uproszczenia notacji indeks ten będzie pomijany.
3Kolejność ta na maszynie 1 ma n1= 7 elementów, na maszynie 2 – n2= 5 elementów, a na maszynie 3 – n3= 6 elementów.
G(β) przechodzi przez operację j ∈ O jeśli przechodzi przez co najmniej jeden z wierzchołków odpowiadających czynnościom operacji j. Dalej po-każę, że wyliczenie długości tej drogi można przeprowadzić całkowicie na bazie rα(u), qα(u), u ∈ N (tzn. nie trzeba wyliczać wartości rβ(u), qβ(u), u ∈ N ), co przyśpiesza znacząco proces oceny ruchu 4. W tym celu wpro-wadzę dodatkowe oznaczenia oraz udowodnię pewną własności. Niech
ˆrα(αl(i)) = rα(αl(i)) − ra(j,l), i = 1, . . . , nl− 1, l ∈ Mj, (6.6) ˆqα(αl(i)) = qα(αl(i)) − qa(j,l), i = 1, . . . , nl− 1, l ∈ Mj (6.7) oznaczają odpowiednio długość najdłuższej drogi w grafie G(α) dochodzą-cej do (wychodządochodzą-cej z) wierzchołka αl(i) łącznie z wagą tego wierzchoł-ka, pomniejszoną o głowę (ogon) wstawianej czynności (j, l)5; qa(j,l) = tj − ra(j,l) − p(j,l), gdzie tj = max{rax + px : x ∈ Nj}, patrz rozdział 3.3.26. Niech j+ (j−) oznacza operację będącą bezpośrednim następnikiem (poprzednikiem) technologicznym operacji j; jeżeli operacja j nie ma na-stępnika (poprzednika) technologicznego, to przyjmujemy j+= 0 (j−= 0).
Dla każdego zestawu pozycji z = (z1, . . . , zm) ∈ ZP (j) definiujemy wielkość
h(z) = R(z) + tj + Q(z) (6.8)
gdzie
R(z) = maxnrα(u+j−), max
l∈Mj
ˆrα(αl(zl− 1))o, (6.9)
Q(z) = maxnqα(u−j+), max
l∈Mj
ˆqα(αl(zl))o; (6.10) przyjmujemy, że αl(0) = (0, 0), αl(nl) = (0, 1), l ∈ Mj, ˆrα((0, 0)) = ˆqα((0, 1)) = −∞, ˆrα((0, 1)) = ˆqα((0, 0)) = ∞, u+0 = (0, 0), u−0 = (0, 0) oraz rα((0, 0)) = qα((0, 0)) = 0. Przypominamy, że u+t (u−t ) jest czynno-ścią operacji t ∈ O, która kończy się najpóźniej (rozpoczyna się najwcze-śniej), patrz także rozdział 3.3.2, 3.4.1. Stąd u+j− oznacza czynność operacji j− (będącej poprzednikiem technologicznym operacji j), która kończy się
4Przypominam, że rγ(u), (qγ(u)) oznacza wartość najdłuższej drogi w grafie G(γ) dochodzącej do (wychodzącej z) wierzchołka u, łącznie z wagą tego wierzchołka; patrz rozdział 4.1.2.
5Jest to czynność operacji j, wykonywana na maszynie l, która będzie wstawiana na pozycję zlw permutacji αl.
6Formalnie wielkości ˆrα(αl(i)), ˆqα(αl(i)) powinny być indeksowane przez zestaw z pozycji, na które w kolejności α są wstawiane czynności operacji j. Jednakże dla uprosz-czenia notacji indeks ten pomijamy.
najpóźniej. Symetrycznie u−j+ oznacza czynność operacji j+ (będącej na-stępnikiem technologicznym operacji j), która rozpoczyna się najwcześniej.
Poniższa własność „wiąże” wielkość h(z) z wartością najdłuższej drogi (w grafie G(π(v))) przechodzącej przez operację j, której wszystkie czynności zostały umieszczone na pozycjach zestawu z ∈ ZP (j) w kolejności określo-nej przez α.
Własność 6.1 Niech π ∈ Π jest kolejnością dopuszczalną. Jeżeli ruch v = (j, z), z = (z1, . . . , zm) ∈ ZP (j), j ∈ O generuje dopuszczalną kolejność β = π(v), to długość najdłuższej drogi w grafie G(β), przechodzącej przez operację j wynosi h(z).
Dowód. Niech Dz oznacza najdłuższą drogę przechodzącą przez operację j w grafie G(β), β = π(v), v = (j, z). Dalej podamy odpowiedni wzór okre-ślający długość d(Dz) tej drogi7. Na początek zauważmy, że długość d(Da,b) drogi Da,b = ((j, x1), (j, x2), . . . , (j, xk)) z wierzchołka (j, a) = (j, x1) do (j, b) = (j, xk), przechodzącej tylko przez wierzchołki czynności operacji j, wynosi8 Rozważmy najpierw przypadek, gdy operacja j nie posiada następnika i poprzednika technologicznego; j+ = 0 i j− = 0. Wtedy długość drogi Dz
jest określona przez powyższy wzór redukuje się do postaci
d(Dz) = max
b∈Mj
nmax
a∈Mj
nrβ(αa(za− 1)) − ra(j,a)+ tj− qa(j,b)o+ qβ(αb(zb))o
7Przypominamy, że przez d(w) oznaczamy długość pewnej drogi w traktowanej jako ciąg pewnej liczby k wierzchołków w = (w1, . . . , wk).
8Obciążenie łuku operacyjnego (x, y) jest równe wx,y = ray− rax− px, patrz 3.16.
j
j + j,a
j,b αb(zb) αa(za-1)
u+ j –
u j – + j –
Rysunek 6.2: Fragment grafu G(β) z zaznaczonymi ciemnym kolorem czyn-nościami operacji j; czynności operacji j są wstawiane na pozycje w kolej-ności α określone przez zestaw z ∈ ZP (j)
= max
b∈Mj
nmax
a∈Mj
nrβ(αa(za− 1)) − ra(j,a)o+ tj+ qβ(αb(zb)) − qa(j,b)o
= max
l∈Mj
nrβ(αl(zl− 1)) − ra(j,l)o+ tj+ max
l∈Mj
nqβ(αl(zl)) − qa(j,l)o.
Uwzględnimy teraz dodatkowo łuki technologiczne. Zauważmy naj-pierw, że łuk technologiczny (u+j−, u−j ) łączący poprzednika technologiczne-go z operacją j, dochodzi do wierzchołka, który ma zerową głowę rau−
j = 0.
Podobnie, łuk technologiczny (u+j , u−j+) łączący operację j z następnikiem technologicznym wychodzi z wierzchołka, który ma zerowy ogon qau+
j = 0.
Spostrzeżenie to, wraz z rozumowaniem analogicznym do rozumowania przeprowadzonego na początku dowodu doprowadza nas do ostatecznej po-staci wzoru na długość d(Dz) najdłuższej drogi Dz przechodzącej przez
operację j,
d(Dz) = maxnrβ(u+j−), max
l∈Mj
nrβ(αl(zl− 1)) − ra(j,l)oo+ tj + maxnqβ(u−j+), max
l∈Mj
nqβ(αl(zl)) − qa(j,l)oo (6.12)
Jednak powyższa postać wzoru na d(Dz) różni się od wartości h(z) (patrz (6.8)) tym, że w (6.12) używa się wartości rβ i qβ, zamiast rα i qα. Dalej pokażę jednak następujące równości:
maxnrβ(u+j−), max
l∈Mj
nrβ(αl(zl− 1)) − ra(j,l)oo= R(z), (6.13)
maxnqβ(u−j+), max
l∈Mj
nqβ(αl(zl)) − qa(j,l)oo= Q(z), (6.14) z których jednoznacznie wynika, że d(Dz) = h(z).
Dowód równości (6.13), (6.14) rozpoczynamy od spostrzeżenia, że jeżeli graf G(β) nie zawiera cyklu o dodatniej długości, to dla każdego wierzchołka w grafie G(α) zachodzi
rα(u) ¬ rβ(u), u ∈ N, (6.15) qα(u) ¬ qβ(u), u ∈ N; (6.16) graf G(β) został otrzymany z grafu G(α) przez wykonanie pewnej liczby następujących czynności: zastąp nieobciążony łuk, sekwencją: łuk nieobcią-żony, wierzchołek dodatnio obciąnieobcią-żony, łuk nieobciążony.
Dalej ograniczę się do pokazania równości (6.13), dowód równości (6.14) ze względu na symetrię można przeprowadzić analogicznie. Rozważmy jesz-cze raz (analizowaną na samym początku przeprowadzanego dowodu) naj-dłuższą drogę Dz przechodzącą przez operację j w grafie G(β). Nie zmniej-szając ogólności przyjmujemy, że droga Dz pierwszy raz przechodzi przez czynności operacji j wchodząc na wierzchołek (czynność) (j, a) i wycho-dząc z wierzchołka (j, b). Oznacza to, że można ją rozbić na trzy fragmenty Dz = (A, Da,b, B) takie, że A jest fragmentem dochodzącym do bezpośred-niego poprzednika wierzchołka (j, a), Da,b – fragmentem wychodzącym z wierzchołka (j, a) i dochodzącym do wierzchołka (j, b), zaś B – pozostałą częścią drogi Dz. Z definicji wierzchołka (j, a) wynika, że fragment A nie za-wiera żadnego wierzchołka związanego z czynnościami operacji j. Ponadto droga (A, Da,b) jest jedną z najdłuższych dróg dochodzących do wierzchoł-ka (j, b). Przeprowadzając takie same rozumowanie jak początku dowodu
zauważmy, że długość najdłuższej drogi dochodzącej do wierzchołka (j, b) łącznie z obciążeniem tego wierzchołka wyraża się wzorem:
rβ(j, b) = maxnrβ(u+j−), max
l∈Mj
{rβ(αl(zl− 1)) − ra(j,l)}o+ ra(j,b)+ p(j,b). (6.17) Dalej rozpatrzymy trzy przypadki: ostatni wierzchołek fragmentu A dro-gi Dz jest połączony w wierzchołkiem (j, a) (i) łukiem technologicznym (u+j−, (j, a)) lub (ii) łukiem kolejnościowym (αa(za− 1), (j, a)) oraz przy-padek (iii) w którym fragment A nie zawiera żadnego wierzchołka (wierz-chołek (j, a) jest pierwszym wierzchołkiem w drodze Dz).
Rozpatrzymy teraz przypadek (i). Jak już zauważyliśmy, droga A (któ-rej ostatnim wierzchołkiem jest wierzchołek u+j−) nie przechodzi przez żadną z czynności operacji j, co oznacza, że istniała ona także w grafie G(α). Wy-nika stąd jednak, że najdłuższa droga w grafie G(α) dochodząca do wierz-chołka u+j− jest nie krótsza niż długość drogi A czyli rα(u+j−) rβ(u+j−). Ta nierówność, łącznie z (6.15) dla u = u+j− dowodzi, że:
rβ(u+j−) = rα(u+j−). (6.18) Z faktu, że droga A jest fragmentem najdłuższej drogi Dzwynika, iż d(A) = rβ(u+j−). Podobnie droga (A, Da,b) jest fragmentem najdłuższej drogi Dz. Co więcej obciążenie łuku (u+j−, (j, a)) jest zerowe oraz ra(j,a) = 0 (do wierzchołka (j, a) dochodzi łuk technologiczny (u+j−, (j, a))). Stąd wartość najdłuższej drogi dochodzącej do wierzchołka (j, b) w grafie G(β), łącznie z obciążeniem tego wierzchołka wyraża się wzorem
rβ(j, b) = d(A) + d(Da,b) = rβ(u+j−) + ra(j,b)+ p(j,b), co w porównaniu z (6.17) dowodzi nierówności
rβ(u+j−) max
l∈Mj
nrβ(αl(zl− 1)) − ra(j,l)o. (6.19) Ostatecznie z zależności (6.15), (6.18) oraz (6.19) wynika prawdziwość rów-ności (6.13), co kończy dowód w przypadku (i).
Przejdziemy teraz do analizy przypadku (ii). Wykorzystujemy znowu fakt, iż droga A (której ostatnim wierzchołkiem jest teraz wierzchołek αl(zl− 1)) nie przechodzi przez żadną z czynności operacji j, co oznacza, że istniała ona także w grafie G(α). Stąd oraz z rozumowania analogicznego do przeprowadzonego w przypadku (i) wnioskujemy, iż
rβ(αa(za− 1)) = rα(αa(za− 1)). (6.20)
Dalej, rozumując podobnie jak w przypadku (i), dostajemy równość d(A) = rβ(αa(za− 1)). Co więcej wykorzystując fakt, iż obciążenie łuku (αa(za− 1), (j, a)) jest zerowe, wartość najdłuższej drogi dochodzącej do wierzchołka (j, b) w grafie G(β), łącznie z obciążeniem tego wierzchołka wyraża się teraz wzorem
rβ(j, b) = d(A) + d(Da,b) = rβ(αa(za− 1)) − ra(j,a)+ ra(j,b)+ p(j,b). Zależność ta w połączeniu z (6.17) dowodzi nierówności
rβ(u+j−) ¬ max
l∈Mj
nrβ(αl(zl− 1)) − ra(j,l)o. (6.21) Z zależności (6.15), (6.20) oraz (6.21) wynika prawdziwość równości (6.13), co kończy dowód w przypadku (ii).
Na koniec przejdźmy do analizy przypadku (iii). Z faktu, że droga A jest pusta oraz Da,b jest początkowym fragmentem najdłuższej drogi Dz
wynika natychmiast, że
rβ(j, b) = d(Da,b).
Oczywiste jest, że skoro droga Da,b jest najdłuższą drogą dochodzącą do wierzchołka (j, b), to zachodzi
d(Dl,b) ¬ d(Da,b), l ∈ Mj.
Korzystając z powyższych zależności oraz z faktu, że głowa przynajmniej jednej czynności każdej operacji jest równa zero (patrz 3.3.2), długość naj-dłuższej drogi dochodzącej do (j, b) możemy przedstawić w postaci
rβ(j, b) = max
l∈Mj
d(Dl,b) = max
l∈Mj
n− ra(j,l)+ ra(j,b)+ p(j,b)o
= ra(j,b)+ p(j,b). (6.22)
Porównując teraz (6.18) z (6.22) otrzymujemy maxnrβ(u+j−), max
l∈Mj
nrβ(αl(zl− 1)) − ra(j,l)oo= 0 (6.23)
Z własności rα(u+j−) 0, u ∈ N oraz własności (6.15) zachodzi R(z) = 0, czyli spełniona jest równość (6.13). Tym samym dowód własności został zakończony.
Przejdę teraz do określenia wartości Cmax(β) dla kolejności β = π(v) otrzymanej po wykonaniu ruchu v = (j, z) na kolejności π.
Własność 6.2 Niech π ∈ Π jest kolejnością dopuszczalną. Jeżeli ruch v = (j, z), z = (z1, . . . , zm) ∈ ZP (j), j ∈ O generuje dopuszczalną kolejność β = π(v), to
Cmax(β) = maxnCmax(α), h(z)o. (6.24) Dowód. Rozważmy pewną ścieżkę krytyczną w grafie G(β). Ścieżka ta:
(i) zawiera pewne wierzchołki u, u ∈ Nj reprezentujące czynności operacji j lub (ii) nie zawiera żadnego z nich.
W przypadku (i) z własności 6.1 wynika, że długość ścieżki jest równa h(z), czyli Cmax(β) = h(z). Ponadto oczywiste jest, że Cmax(α) ¬ Cmax(β);
graf Cmax(β) został otrzymany z grafu Cmax(α) przez dodatnie pewnej licz-by łuków. Tym samym prawdziwa jest równość (6.24).
W przypadku (ii) ze sposobu konstrukcji grafu G(β) z grafu G(α) wnosimy, iż ścieżka sc jest także ścieżką krytyczną w grafie G(α), czyli Cmax(β) = Cmax(α). Co więcej z definicji h(z) (długość pewnej ścieżki w grafie G(β)) dostajemy h(z) ¬ Cmax(β), co ostatecznie dowodzi prawdzi-wości równości (6.24).
Udowodnione powyżej dwie własności stanowią bardzo silne narzędzie umożliwiające określenie jakości ruchów v = (j, z) wykonanych dla kolejno-ści π, przy ustalonej operacji j oraz różnych zestawach pozycji z ∈ ZP (j).
Zauważmy tutaj tylko, że wielkość
LB(z) = maxnCmax(α), h(z)o (6.25) jest dolnym ograniczeniem długości Cmax(π(v)) ścieżki krytycznej w grafie G(π(v)); jeżeli kolejność (π(v)) jest dopuszczalna to Cmax(π(v)) = LB(z), w przeciwnym wypadku Cmax(π(v)) = ∞. W celu wyliczenia LB(z) dla k różnych zestawów pozycji z ∈ ZP (j) należy tylko jeden raz wyznaczyć wiel-kości Cmax(α), ˆrα(u), ˆqα(u), u ∈ N oraz k-razy wielkość h(z). Zakładając, że wyznaczenie Cmax(α) wymaga O(f(n)) czasu, do wyliczenia k odpowied-nich wartości LB(z) potrzeba tylko O(f(n)) + O(k · mj) czasu. Dysponując już tymi wielkościami oraz dodatkowo wartością Cmax(π(v0)) dla takiego ruchu v0 = (j, z0), że kolejność π(v0) jest dopuszczalna można łatwo wyeli-minować pewne inne ruchy v = (j, z). Są to ruchy (j, z), z ∈ ZP (j) takie, że Cmax(π(v0)) ¬ LB(z); ruchy te generują graf G(π(v)) zawierający cykl o dodatniej długości lub długość ścieżki krytycznej w tym grafie nie jest mniejsza niż wcześniej znaleziona dla grafu G(π(v0)). Postępując „tradycyj-nie” należało by wyznaczyć Cmax(π(v)), v = (j, z) dla k zestawów pozycji z ∈ ZP (j), co wymagało by aż O(k · f (n)) czasu.