5.4 Algorytmy alokacji buforów dla problemu terminowej realizacji kamieni
5.4.3 Algorytm iteracyjny, w którym wstawiane są bufory czasowe dla zadań
Następnym opracowanym przez autora algorytmem jest BufK, częściowo zbliżony w działaniu do procedury FRD.
Podczas inicjalizacji BufK szukany harmonogram odporny S0 to uszeregowanie no-minalne nie zawierające buforów czasowych.
Alokacja buforów jest wykonywana dla wszystkich, kolejno rozpatrywanych kamie-ni milowych. Bufory czasowe wstawiane są po czynnościach (bufory B). Przy roz-mieszczaniu buforów dla k-tego etapu projektu, analizowane jest zwiększanie buforów czasowych dla wszystkich zadań należących do zbioru Mk.
Dla kolejnych kamieni milowych początkowo pomocniczy parametr χ wynosi 0. W każdej następnej iteracji parametr χ jest zwiększany o 0.01 (można przyjąć inną war-tość niż 0.01, ale eksperymenty obliczeniowe wskazują, że przyjęcie mniejszej wartości
0.005 nie poprawia uzyskiwanych rozwiązań, natomiast przyjęcie większej wartości 0.02 prowadzi do przeciętnie gorszych alokacji buforów) i obliczane są korekty bufo-rów czasowych po poszczególnych zadaniach ΔBi według wzoru ΔBi = χ ∙ di - Bi, gdzie
Bi to aktualny rozmiar bufora po zadaniu i. W jednym kroku, przy jednej wartości χ, mogą być zwiększone bufory czasowe dla więcej niż jednej czynności. Jeśli w danej iteracji zwiększono bufor czasowy po co najmniej jednej czynności tzn. istnieje zadanie
i, dla którego ΔBi ≥ 1, generowany jest nowy harmonogram w oparciu o zmodyfikowane czasy trwania. Dla analizowanego k-tego kamienia milowego zadania nie są już bufo-rowane, gdy aktualna rezerwa czasowa rezk przekracza lub jest równa przyjętemu zapa-sowi czasowemu dla tego kamienia milowego bmk (bmk – bufor czasowy k-tego kamie-nia milowego).
Przebieg algorytmu BufK przedstawiony jest na rysunku 20.
//Krok 1: Inicjalizacja
S0 = Snom
//Alokacja buforów dla kolejnych kamieni milowych for k:= 1 to m
χ := 0 repeat
χ := χ + 0.01
foreach zadanie i ze zbioru Mk
ΔBi := χ · di - Bi
If(w danym kroku zwiększono B dla co najmniej jednego zadania: istnieje zadanie i, dla którego ΔBi ≥ 1) Modyfikuj czasy rozpoczęcia czynności
until (rezk - bmk <= 0)
Rysunek 20. Schemat działania algorytmu alokacji buforów BufK
Algorytm BufK działa „lokalnie” dla zadań z kolejno rozpatrywanych, poszczegól-nych etapów projektu. Przy zabezpieczaniu kamieni milowych należy ustalić odpo-wiednie wartości buforów bmk. Zapasy bmk decydują o możliwości buforowania zadań z k-tego etapu projektu.
5.5 Podsumowanie
Alokacja buforów jest kolejnym etapem, po alokacji zasobów, w którym uodparnia-ny jest harmonogram nominaluodparnia-ny. Alokacja buforów jest wykouodparnia-nywana dla harmonogra-mu nominalnego z wyznaczoną alokacją zasobów.
Odporna alokacja buforów jest istotna z punktu widzenia m.in. minimalizacji kosztu realizacji projektu. W rozdziale analizowano problem proaktywnego rozmieszczenia buforów czasowych dla projektu ze zdefiniowanymi terminami realizacji etapów pro-jektu (kamieniami milowymi). Przydział buforów czasowych ma doprowadzić do mi-nimalizacji wpływu nieprzewidywalnych wahań czasów trwania czynności na realizację poszczególnych zadań i wszystkich etapów projektu.
W niniejszym rozdziale na początku zaprezentowano zasady estymacji czasów zadań projektowych. Następnie przedstawiono miary odporności stosowane w badaniach do-tyczących RCPSP. Analiza mierników odporności wskazała na potrzebę zaprojektowa-nia nowych mierników dla zagadniezaprojektowa-nia alokacji buforów z kamiezaprojektowa-niami milowymi. Do oceny proaktywnych uszeregowań zaproponowano wskaźnik stabilności, wyznaczany
symulacyjnie, określający wpływ zakłóceń na dotrzymanie terminów realizacji zadań i harmonogramu. Opracowano także pomocniczo statyczne miary odporności, które mogą być wykorzystywane przez procedury rozmieszczenia buforów, w których rozpa-trywanych jest wiele alokacji buforów.
Następnie opisano wybrane algorytmy odpornej alokacji buforów. Część koncepcji stosowanych w tych algorytmach wykorzystano w zaproponowanych przez autora pro-cedurach rozmieszczania buforów BufP1, BufP2, BufP3, BufK, BufR dla zagadnienia
RCPSP z terminową realizacją kamieni milowych. W algorytmach tych bufory
wsta-wiane są przed czynnościami, zabezpieczając terminowe rozpoczęcie tych zadań, lub po czynnościach, zabezpieczając terminowe rozpoczęcie następników zadania. Poszcze-gólne zadania są buforowane do momentu, w którym wstawienie bufora jest niemożli-we ze względu na przyjęte rozmiary zapasów czasowych bmi dla poszczególnych eta-pów projektu.
W algorytmach BufP1, BufP2, BufP3 kolejne bufory jednostkowe są rozmieszczane w kolejności wynikającej z listy priorytetowej zadań. Stosowanie reguł priorytetowych to nowe podejście do problemu alokacji buforów.
Z kolei w procedurze BufR stosowane jest podejście, w którym iteracyjnie poprawia-ny jest aktualpoprawia-ny przydział buforów czasowych w celu optymalizacji (maksymalizacji) statycznych miar odporności R (R1, R2, R3 lub R4). Miary R opracowano biorąc pod uwagę różne kryteria wpływające na stabilność systemu produkcyjnego.
W algorytmie BufK wstawiane są bufory po czynnościach. Zabezpieczana przez rozmieszczenie buforów jest realizacja etapów projektu (i zadań realizowanych w tym etapie) w kolejności ich terminów realizacji. W kolejnych iteracjach procedury BufK bufory czasowe są wstawiane w pierwszej kolejności po czynnościach o największym planowanym czasie trwania.
Wszystkie algorytmy alokacji buforów porównywane są podczas analizy oblicze-niowej wykonanej w rozdziale 6.3. Do oceny rozmieszczenia buforów wykorzystywany jest symulacyjnie wyznaczany wskaźnik stabilności systemu produkcyjnego przy zasto-sowaniu odpowiedniej metody reharmonogramowania zadań. Kryterium oceny są funk-cje celu harmonogramowania reaktywnego określone wzorami (18, 19).
6 Harmonogramowanie reaktywne
W rozdziale tym autor koncentruje się na strategii reaktywnego harmonogramowania w zastosowaniu do realizacji projektu. Wykorzystywane są pojęcia związane z rehar-monogramowaniem zadań opisane w rozdziale 1.6.
W fazie harmonogramowania predyktywnego ustalone są czasy rozpoczęcia zadań (uwzględniające rozmieszczenie buforów czasowych) oraz przydział zasobów do zadań. W trakcie produkcji w rzeczywistych systemach produkcyjnych, często występują jed-nak problemy z planową realizacją harmonogramu proaktywnego (odpornego). Zdol-ność do absorpcji zaburzeń produkcyjnych harmonogramu powstałego w fazie plano-wania jest ograniczona. Odporna alokacja buforów i zasobów nie są w stanie zabezpie-czyć przed wszystkimi możliwymi zakłóceniami. Konieczne jest wprowadzanie zmian w uszeregowaniu na bieżąco w trakcie produkcji, w fazie zwanej harmonogramowa-niem reaktywnym. Zmiany te pozwalają rozwiązać problemy wynikające m.in. z błęd-nych oszacowań czasów trwania czynności, z czasowej niedostępności zasobów (awa-rie) itp. W rozpatrywanym zagadnieniu celem harmonogramowania reaktywnego jest zachowanie stabilności systemu produkcyjnego i dotrzymanie umownych terminów realizacji kamieni milowych.
Harmonogramowanie reaktywne to dynamiczny proces decyzyjny, w którym w każ-dym punkcie decyzyjnym t (analizowany przedział czasowy <0 ... zn+1>) podejmowana jest reakcja na zakłócenia, tak aby faktycznie zrealizowany harmonogram SR jak naj-mniej odbiegał od harmonogramu początkowego S0. Wykorzystywane są wszystkie informacje dostępne w chwili t, aby zoptymalizować funkcję celu harmonogramowania reaktywnego. Jeśli w analizowanym momencie t nie ma nowych zakłóceń realizowany jest harmonogram ustalony w chwili t-1: St = St-1.
Ustal S0 //Harm. reaktywne dla harmonogramu predyktywnego S0 t = 0
repeat
Rozpocznij czynności z czasem rozpoczęcia sit t
t = t + 1
Sprawdź czy są jakieś zakłócenia (nowe, istotne informacje) If (nie ma zakłóceń) then
St = St-1
//realizowany jest harmonogram ustalony w momencie t-1 else
Znajdź i zapamiętaj harmonogram o minimalnym koszcie niestabilności
//stosowane są różne algorytmy reharmonogramowania
//optymalizujące funkcję celu harmonogramowania reaktywnego until (zrealizowano cały projekt – wszystkie zadania zakończone)
Rysunek 21. Procedura harmonogramowania reaktywnego
Stosując powyższą procedurę, w przypadku braku zakłóceń produkcyjnych, harmo-nogram zrealizowany SR jest identyczny z harmonogramem początkowym S0. Każde zakłócenie (np. wzrost czasu trwania zadania, awaria) może spowodować zmiany
w harmonogramie. Gdy wystąpi zakłócenie, następuje ponowne harmonogramowanie, które ma doprowadzić do minimalizacji funkcji celu harmonogramowania reaktywnego.
Harmonogram St zwany jest harmonogramem projektowanym (ang. projected
sche-dule). Tworzony jest po każdym zakłóceniu produkcyjnym, które powoduje konflikt
czasowy lub zasobowy. Generowanie nowego harmonogramu (lub zmiana istniejącego) w odpowiedzi na każde zakłócenie może spowodować znaczny wzrost czasu obliczeń wraz ze zwiększaniem się liczby pojawiających się zaburzeń produkcyjnych. Z tego powodu w badaniach opracowywane są algorytmy charakteryzujące się niewielkim cza-sem obliczeń. W każdym punkcie decyzyjnym t dąży się do planowego rozpoczynania każdego zadania i monitoruje się terminowość realizacji całego projektu.
Przy ustaleniu rzeczywistego momentu rozpoczęcia poszczególnych zadań w harmo-nogramie SR stosowane są różne podejścia wynikające ze specyfiki środowisk produk-cyjnych. Rozpatrywane są m.in. następujące dwa przypadki:
1) Możliwe jest rozpoczynanie zadań przed planowanym terminem rozpoczęcia. Przy-padek użyteczny dla systemów produkcyjnych, w których rozpoczęcie zadania nie jest zależne od dostarczenia dodatkowych materiałów lub komponentów. Dla tego przypadku podejście predyktywno-reaktywne może być porównywane z harmono-gramowaniem dynamicznym.
2) Harmonogramowanie kolejowe (ang. railway scheduling) – rozpoczynanie zadań przed planowanym terminem nie jest możliwe. Założenie to wynika z faktu, że roz-poczęcie zadania jest możliwe, gdy dostarczone są materiały niezbędne do jego re-alizacji, które dostarczane są w systemie dokładnie na czas (ang. JIT- Just In Time). Z tych dwóch przypadków autor w rozprawie ogranicza się do harmonogramowania kolejowego. Założenie, że zadania projektowe rozpoczynane są nie wcześniej niż to planowano ma uzasadnienie podczas realizacji wielu rzeczywistych przedsięwzięć i jest przyjmowane w wielu teoretycznych pracach z predyktywno-reaktywnego harmono-gramowania projektu[105][106][108][155][156][157][158][159][160][161][162]. Har-monogramowanie kolejowe jest często wykorzystywane przy sterowaniu produkcją z wykorzystaniem harmonogramów. Prowadzi to do lepszej organizacji pracy. Możliwe jest zastowanie dostaw dokładnie na czas, które niwelują koszty magazynowania mate-riałów itp.
W niniejszym rozdziale opisane są wybrane algorytmy wykorzystywane w harmono-gramowaniu reaktywnym dla problemu RCPSP. Następnie zaprezentowane są założe-nia, metody i algorytmy reaktywne stosowane dla rozważanego problemu harmonogra-mowania projektu ze zdefiniowanymi terminami realizacji kamieni milowych. Na ko-niec przeanalizowana jest efektywność proponowanych algorytmów predyktywno-reaktywnego harmonogramowania przy użyciu opracowanych zadań testowych z różną konfiguracją zmienności środowisk produkcyjnych.