Praktyka Optymalizacji
@Krzysztof Platis
@Artur Rosa
J={1,2,...,n} – zbiór zadań
M={1,2,...,m} – zbiór maszyn
O={1,2,...,o} – zbiór operacji
Zadanie to ciąg operacji występujących zgodnie z porządkiem technologicznym. Zbiór operacji O można więc rozbić na ciągi odpowiadające zadaniom.
Operacja może być wykonywana na pewnym podzbiorze maszyn. Musi natomiast być wykonana bez przerywania na jednej z nich, a czas jej wykonania zależy od wydajności przydzielonej maszyny.
Mi∈M (i∈O) – zbiór maszyn na których można wykonać operację i
μi∈Mi (i∈O) – maszyna przydzielona do operacji i
Ol={i∈O:μi=l} – zbiór operacji przydzielonych do maszyny l
πl – pewna permutacja elementów ze zbioru Ol
Πl – zbiór wszystkich permutacji elementów Ol
π=(π1,π2,...,πm) – kolejność wykonywania operacji na maszynach (konkatenacja ciągów πi∈Πi dla i∈M)
Φ – zbiór wszystkich takich π
π∈Φ jednoznacznie określa przydział operacji do maszyn, a także kolejność wykonywania operacji.
Rozwiązanie π∈Φ może być reprezentowane przez graf skierowany H(π)=(V,E(π)).
Wierzchołkami grafu H(π) są operacje (V=O). Waga wierzchołka i jest równa pv,μi, czyli czasowi wykonania operacji v na maszynie μi.
Zbiór łuków grafu jest sumą zbiorów E(π)=R∪K(π).
R=n⋃j=1oj−1⋃i=1{ ( ˆji, ˆji+1 ) }
gdzie oj jest liczbą operacji zadania j, a ˆj jest ciągiem operacji zadania j w porządku technologicznym. Zawiera łuki reprezentujące porządek technologiczny.
K(π)=m⋃k=1|Ok|−1⋃i=1{ ( πk(i), πk(i+1) ) }
Zawiera łuki łączące operacje wykonywane na tej samej maszynie, a zatem reprezentujące kolejność πk operacji na maszynie k (dla k∈M)
Ustalony zbiór zadań MPS (ang. minimal part set) jest wykonywany wielokrotnie. Zakładamy, że w każdym z MPS-ów, na każdej maszynie operacje są wykonywane w takiej samej kolejności, zatem kolejność wykonywania operacji może być reprezentowana przez π∈Φ dla pierwszego MPS-a.
Harmonogram nazywiemy cyklicznym jeśli każda operacja jest kolejno wykonywana po upływie czasu cyklu.
Dla ustalonego π∈Φ, niech Ski oznacza termin rozpoczęcia wykonywania operacji i na maszynie μi w k-tym cyklu. Jeśli harmonogram jest cykliczny, wtedy
Skπ(i)=S1π(i)+(k−1)⋅T(π),
gdzie T(π) jest czasem cyklu i zależy od π.
Dla ustalonego rozwiązania π∈Φ niech H(π)=(V,E(π)) będzie grafem reprezentującym to rozwiązanie.
Niech Hl(π)=(Vl,El(π)) będzie grafem reprezentującym rozwiązanie π dla l-tego MPS-a (l=1,2,...,m+1).
Zbiór wierzchołków
Vl={v+(l−1)⋅o:v∈V}.
Zbiór łuków
El={(v,u):(u+(l−1)⋅o,v+(l−1)⋅o)∈E}.
Zdefiniujemy jeszcze pomocnicze podzbiory zbioru Vl:
Al={v∈Vl:v=πj(1)+(l−1)⋅o∧j∈M},
który zawiera pierwsze operacje wykonywane przez poszczególne maszyny w l-tym MPS-ie oraz
Bl={v∈Vl:v=πj(nj)+(l−1)⋅o∧j∈M},
który zawiera ostatnie operacje.
Grafem cyklicznym, dla ustalonej permutacji π∈Φ, nazwiemy graf G⊕=(V⊕,E⊕(π)).
Zbiór wierzchołków grafu G⊕ definiujemy jako
V⊕=V1 ∪ V2 ∪ ... ∪ Vm+1
Zbiór łuków grafu G⊕ definiujemy jako
E⊕(π)=E1(π)∪E2(π)∪ ... ∪Em+1(π)∪W,
gdzie zbiór W zawiera łuki łączące ostatnią operację określonego MPS-a z pierwszą operacją kolejnego MPS-a wykonywaną na tej samej maszynie:
W={(u,v)∈Bl×Al+1:μu=μv, l=1,2,...,m}.
Zadanie polega na wyznaczeniu minimalnego czasu cyklu dla ustalonej kolejności wykonywania operacji na maszynach (π∈Φ).
Niech a∈A1 będzię wierzchołkiem odpowiadającym pierwszej operacji wykonywanej na pewnej maszynie w pierwszym MPS-ie. Poprzez al oznaczmy wierzchołek odpowiadający tej samej operacji wykonywaną w l-tym MPS-ie. Zatem z definicji grafu cyklicznego al=a+(l−1)⋅o.
Niech Ll(a,al) będzie długością najdłuższej drogi w grafie G⊕(π) z wierzchołka a do wierzchołka al (dla l=2,3,...,m+1).
Niech λ będzie macierzą o wymiarach m×m. Elementy tej macierzy definiujemy następująco:
λa,l=Ll+1(a,al+1) / l,
gdzie, a∈A1, oraz l=1,2,...,m.
Wartość maksymalnego elementu macierzy λ oznaczmy:
Λ∗(π)=maxυ∈A1max2≤l≤η{λυ,l}.
Dla ustalonej permutacji π∈Φ wartość Λ∗(π) jest szukanym minimalnym czasem cyklu.