Problemy gniazdowe z operacjami wielomaszynowymi. Własności i algorytmy (praca doktorska) Mariusz MAKUCHOWSKI. Na prawach rękopisu

Podobne dokumenty
Metody optymalizacji dyskretnej

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI

9.9 Algorytmy przeglądu

Optymalizacja. Wybrane algorytmy

NIETYPOWE WŁASNOŚCI PERMUTACYJNEGO PROBLEMU PRZEPŁYWOWEGO Z OGRANICZENIEM BEZ PRZESTOJÓW

9.4 Czasy przygotowania i dostarczenia

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Algorytm. Krótka historia algorytmów

Harmonogramowanie produkcji

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Wybrane podstawowe rodzaje algorytmów

PROBLEMY HAROMONOGRAMOWANIA PRODUKCJI

Algorytmy metaheurystyczne podsumowanie

Harmonogramowanie produkcji

Plan. Zakres badań teorii optymalizacji. Teoria optymalizacji. Teoria optymalizacji a badania operacyjne. Badania operacyjne i teoria optymalizacji

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Harmonogramowanie produkcji

Techniki optymalizacji

SYLABUS/KARTA PRZEDMIOTU

Schemat programowania dynamicznego (ang. dynamic programming)

Metody Optymalizacji: Przeszukiwanie z listą tabu

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Optymalizacja ciągła

Priorytetyzacja przypadków testowych za pomocą macierzy

Jacek Skorupski pok. 251 tel konsultacje: poniedziałek , sobota zjazdowa

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Algorytm genetyczny (genetic algorithm)-

ALGORYTM PERTURBACYJNY DLA PROBLEMU PRZEPŁYWOWEGO

Wstęp do Techniki Cyfrowej... Teoria automatów

ALHE. prof. Jarosław Arabas semestr 15Z

Przegląd metod optymalizacji wielowymiarowej. Funkcja testowa. Funkcja testowa. Notes. Notes. Notes. Notes. Tomasz M. Gwizdałła

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Obliczenia inspirowane Naturą

Aproksymacja funkcji a regresja symboliczna

Planowanie przedsięwzięć

Wykład z modelowania matematycznego. Zagadnienie transportowe.

Zadania laboratoryjne i projektowe - wersja β

Optymalizacja. Przeszukiwanie lokalne

Matematyka dyskretna dla informatyków

K.Pieńkosz Badania Operacyjne Wprowadzenie 1. Badania Operacyjne. dr inż. Krzysztof Pieńkosz

Sterowanie procesami dyskretnymi

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Zadanie transportowe i problem komiwojażera. Tadeusz Trzaskalik

OPTYMALIZACJA DYSKRETNA

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Wprowadzenie Metoda bisekcji Metoda regula falsi Metoda siecznych Metoda stycznych RÓWNANIA NIELINIOWE

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

Zarządzanie projektami

ALGORYTM PERTURBACYJNY DLA PROBLEMU PRZEPŁYWOWEGO

TEORETYCZNE PODSTAWY INFORMATYKI

ZAGADNIENIE TRANSPORTOWE

Informatyka 1. Złożoność obliczeniowa

OPTYMALIZACJA DYSKRETNA I ROBOTYCE W INFORMATYCE, AUTOMATYCE. Wojciecha Bozejki i Jaroslawa Pempery

dr inż. Jarosław Forenc

Praca Dyplomowa Magisterska. Zastosowanie algorytmów genetycznych w zagadnieniach optymalizacji produkcji

Techniki optymalizacji

AiSD zadanie trzecie

Harmonogramowanie przedsięwzięć

Instrukcja. Laboratorium Metod i Systemów Sterowania Produkcją.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

AUTOMATYZACJA PROCESÓW DYSKRETNYCH 2014 PROBLEM PRZEPŁYWOWY: PERMUTACYJNY, BEZ CZEKANIA, BEZ PRZESTOJÓW

1 Równania nieliniowe

Programowanie celowe #1

AUTOMATYZACJA PROCESÓW DYSKRETNYCH 2016

Teoria obliczeń i złożoność obliczeniowa

Weryfikacja hipotez statystycznych. KG (CC) Statystyka 26 V / 1

Programowanie dynamiczne i algorytmy zachłanne

Programowanie liniowe. Tadeusz Trzaskalik

Uniwersytet im. Adama Mickiewicza w Poznaniu Wydział Matematyki i Informatyki. Marek Dębczyński

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Optymalizacja systemów

Tomasz M. Gwizdałła 2012/13

WYKŁAD 9 METODY ZMIENNEJ METRYKI

Przeszukiwanie lokalne

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

Wprowadzenie w tematykę zarządzania projektami/przedsięwzięciami

UNIKANIE IMPASÓW W SYSTEMACH PROCESÓW WSPÓŁBIEŻNYCH

Zaawansowane algorytmy i struktury danych

Wykład 2. Poprawność algorytmów

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik

Technologia informacyjna Algorytm Janusz Uriasz

Metody numeryczne w przykładach

Układy równań i nierówności liniowych

doc. dr Beata Pułska-Turyna Zarządzanie B506 mail: mgr Piotr J. Gadecki Zakład Badań Operacyjnych Zarządzania B 505.

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Podstawy Sztucznej Inteligencji (PSZT)

Opinia o pracy doktorskiej pt. On active disturbance rejection in robotic motion control autorstwa mgr inż. Rafała Madońskiego

NOWE WARIANTY OPERATORÓW GENETYCZNYCH DLA PROBLEMÓW Z KRYTERIUM SUMACYJNYM

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Efektywność Procedur Obliczeniowych. wykład 5

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Heurystyki. Strategie poszukiwań

Metody przeszukiwania

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

Transkrypt:

Na prawach rękopisu INSTYTUT CYBERNETYKI TECHNICZNEJ POLITECHNIKI WROCŁAWSKIEJ Raport serii: PREPRINTY nr 37/2004 Problemy gniazdowe z operacjami wielomaszynowymi. Własności i algorytmy (praca doktorska) Mariusz MAKUCHOWSKI PROMOTOR: Prof. dr hab. inż. Czesław Smutnicki Słowa kluczowe: optymalizacja algorytm szeregowanie operacje wielomaszynowe problem gniazdowy WROCŁAW czerwiec 2004

Motto: Nie dane by mi było tyle osiągnąć, gdybym nie stał na ramionach herosów. Albert Einstein Tą drogą pragnę podziękować Ś.p. profesorowi Eugeniuszowi Nowickiemu za cenne sugestie i rady, rzetelne wprowadzenie do tematu oraz moralne wsparcie podczas przewodu doktorskiego. Nie dane mu było doczekać mojej obrony, jednak na kartach tej pracy przetrwa cząstka jego osobowości i wiedzy. Dziękuję mu serdecznie za poświęcony mi czas. Dziękuję również profesorowi Czesławowi Smutnickiemu za wskazówki merytoryczne, zaangażowanie oraz stworzenie przyjaznej atmosfery, która ułatwiła mi funkcjonowanie w tym trudnym dla mnie okresie. Wszystkim pracownikom Zakładu Systemów Dyskretnych, Politechniki Wrocławskiej dziękuję za atmosferę życzliwości. Gorąco dziękuję także mojej żonie Renacie i córce Agnieszce za cierpliwość, wyrozumiałość oraz stworzenie sprzyjających do pracy warunków.

Spis treści 1 Wprowadzenie 1 1.1 Tezy pracy........................... 2 1.2 Cel i zakres pracy........................ 3 2 Problemy szeregowania w praktyce 5 2.1 Problem gniazdowy....................... 6 2.2 Ograniczenia technologiczne.................. 10 2.3 Problemy ogólniejsze...................... 13 2.3.1 Wiele sposobów wykonywania............. 13 2.3.2 Operacje wielomaszynowe............... 14 2.3.3 Wielosposobowe operacje wielomaszynowe...... 15 2.4 Metody rozwiązywania..................... 16 2.4.1 Metody dokładne.................... 16 2.4.2 Metody przybliżone.................. 17 2.4.3 Algorytmy typu wstaw................. 19 2.4.4 Algorytmy typu symulowanego wyżarzania..... 20 2.4.5 Algorytmy typu poszukiwania z zabronieniami... 22 3 Operacje wielomaszynowe. Klasyfikacja, modele grafowe 25 3.1 Parametry operacji wielomaszynowych............ 26 3.2 Klasyfikacja operacji wielomaszynowych........... 28 3.3 Modele grafowe operacji wielomaszynowych......... 30 3.3.1 Nieprzesuwalne czynności synchroniczne....... 31 3.3.2 Nieprzesuwalne czynności asynchroniczne...... 31 3.3.3 Przesuwalne czynności bez dodatkowych ograniczeń 35 3.3.4 Przesuwalne czynności z dodatkowymi ograniczeniami 38 3.4 Modele ograniczeń występujących pomiędzy operacjami.. 40 3.4.1 Ograniczenia technologiczne.............. 40 3.4.2 Ograniczenia kolejnościowe.............. 41 i

ii Spis treści 4 Problemy gniazdowe z operacjami wielomaszynowymi. Modele grafowe 43 4.1 Nieprzesuwalne czynności asynchroniczne jeden sposób wykonywania............................ 44 4.1.1 Sformułowanie problemu................ 44 4.1.2 Model matematyczny i reprezentacja grafowa.... 45 4.1.3 Ścieżka krytyczna.................... 51 4.2 Nieprzesuwalne czynności asynchroniczne wiele sposobów wykonywania.......................... 53 4.2.1 Sformułowanie problemu................ 54 4.2.2 Model matematyczny i reprezentacja grafowa.... 55 4.3 Czynności przesuwalne..................... 56 4.3.1 Czynności bez dodatkowych ograniczeń....... 57 4.3.2 Czynności z dodatkowymi ograniczeniami...... 62 4.4 Porównanie modeli....................... 66 5 Algorytmy wyznaczania wartości najdłuższej drogi w grafach cyklicznych 71 5.1 Przegląd algorytmów literaturowych............. 72 5.2 Detektory cykli w algorytmach MB, MBEP......... 74 5.3 Algorytm MDSP........................ 78 5.3.1 Opis algorytm MDSP................. 79 5.3.2 Detektor cykli w algorytmie MDSP.......... 84 5.4 Analiza eksperymentalna................... 87 5.4.1 Sposób generowania przykładów........... 87 5.4.2 Wyniki testów..................... 88 5.5 Wnioski i uwagi......................... 92 6 Jednosposobowy problem gniazdowy z czynnościami asynchronicznymi 93 6.1 Własności problemu w kontekście metod LS......... 94 6.1.1 Ruch........................... 95 6.1.2 Ocena ruchu...................... 98 6.2 Eliminacyjne własności ścieżki krytycznej.......... 106 6.3 Sąsiedztwa............................ 107 6.3.1 Sąsiedztwo pełne.................... 107 6.3.2 Sąsiedztwo zredukowane................ 107 6.3.3 Dominacje ruchów................... 111 6.3.4 Sąsiedztwo bazowe................... 114 6.3.5 Zredukowane sąsiedztwo bazowe........... 117 6.3.6 Relacje między sąsiedztwami............. 120

SPIS TREŚCI iii 6.4 Algorytmy konstrukcyjne................... 122 6.4.1 Permutacyjne algorytmy konstrukcyjne....... 124 6.4.2 Niepermutacyjne algorytmy konstrukcyjne...... 131 6.5 Algorytm typu tabu...................... 136 6.5.1 Sąsiedztwo....................... 136 6.5.2 Akceleratory wyboru reprezentanta.......... 137 6.5.3 Postać listy tabu.................... 138 6.5.4 Techniki wspierające.................. 139 6.5.5 Rozwiązanie początkowe................ 139 6.6 Algorytm symulowanego wyżarzania............. 140 6.6.1 Sąsiedztwo....................... 141 6.6.2 Rozwiązanie startowe................. 141 6.6.3 Techniki wspierające.................. 141 6.7 Badania testowe........................ 141 6.7.1 Przykłady testowe................... 142 6.7.2 Algorytmy konstrukcyjne............... 143 6.7.3 Algorytmy popraw................... 147 6.7.4 Problem gniazdowy bez czekania........... 149 6.8 Wnioski i uwagi......................... 154 7 Wielosposobowy problem gniazdowy z czynnościami asynchronicznymi 155 7.1 Własności problemu...................... 156 7.2 Algorytmy konstrukcyjne................... 164 7.3 Algorytm M-MTS typu tabu................. 167 7.3.1 Sąsiedztwo....................... 167 7.3.2 Lista tabu........................ 168 7.3.3 Techniki wspierające.................. 169 7.4 Badania testowe........................ 170 7.4.1 Przykłady testowe................... 170 7.4.2 Algorytmy konstrukcyjne............... 171 7.4.3 Algorytmy popraw................... 171 7.4.4 Wielosposobowy problem gniazdowego z nieprzesuwalnymi czynnościami synchronicznymi....... 174 7.5 Wnioski i uwagi......................... 178 8 Zastosowania praktyczne 179 9 Wnioski końcowe 183 Literatura 185

iv Spis treści

Rozdział 1 Wprowadzenie Teoria szeregowania zadań stanowi bazę dla rozwiązania problemów optymalizacji, planowania i sterowania w konwencjonalnych i elastycznych systemach wytwórczych (nazywanych także dyskretnymi systemami produkcyjnymi). Generowane przez praktykę zagadnienia, dla przypadku deterministycznego, należą do obszaru badań operacyjnych, programowania dyskretnego i kombinatorycznego. Zagadnienia te są intensywnie badane od wielu lat, przy czym można wymienić co najmniej kilka powodów tak wielkiego nimi zainteresowania. Po pierwsze sformułowane problemy modelują wiele procesów przemysłowych charakteryzujących się dyskretnym przepływem zadań. Są to przede wszystkim zagadnienia optymalizacji przydziału dostępnych zasobów (maszyn, personelu, energii) do zadań oraz ustalenia harmonogramu wykonywania tych zadań, w taki sposób aby optymalizować żądane kryterium (minimalizować czas wykonania zlecenia, minimalizować zużycie energii itp.). Po wtóre, zdecydowana większość problemów optymalizacji kombinatorycznej należy do klasy problemów N P-trudnych, zatem najprawdopodobniej nie będzie można skonstruować dla nich algorytmów czasowo efektywnych (jeśli P N P). Istniejące algorytmy dokładne o złożoności wykładniczej, rozwiązują w sensownym czasie tylko problemy o niewielkim, z praktycznego punktu widzenia, rozmiarze. Te dwa powody (praktyczne zastosowanie problemów oraz trudność w znalezieniu rozwiązania optymalnego) skierowały w ostatnich latach badania w stronę poszukiwania efektywnych algorytmów przybliżonych. Miarą ich efektywności jest zarówno czas działania jak i dokładność określająca odległość wygenerowanego rozwiązania od rozwiązania optymalnego (w sensie różnicy wartości optymalizowanego kryterium). 1

2 Rozdział 1. Wprowadzenie Jednym z istotniejszych zagadnień w teorii harmonogramowania zadań produkcyjnych jest problem gniazdowy z kryterium będącym terminem zakończenia wykonania wszystkich zadań. Znaczenie tego zagadnienia wynika z faktu, że już jego klasyczne sformułowanie modeluje szereg rzeczywistych procesów produkcyjnych. Dodatkowo, różnorodne uogólnienia takie jak: wprowadzenie czasów przezbrojeń, ograniczonej pojemności buforów, ograniczonej liczby palet, uwzględnienie transportu, itp. powodują, że obszar jego stosowania staje się jeszcze większy. Jednym z ważnych kierunków uogólnień jest wprowadzenie operacji wielomaszynowych modelujących procesy, w których do wykonywania poszczególnych operacji zaangażowana jest nie jedna (tak jak w modelu klasycznym) lecz kilka maszyn. Tym właśnie problemom poświęcona jest moja praca. 1.1 Tezy pracy Oczywiste jest, że stosowanie bardziej precyzyjnych modeli operacji wielomaszynowych, generuje nową rodzinę problemów szeregowania, bliższych realiom produkcyjnym. Efektem ubocznym dokładniejszego modelowania jest zwykle znaczny wzrost rozmiaru oraz złożoności modelu matematycznego opisywanych procesów, a co za tym idzie pogorszenie własności numerycznych algorytmów rozwiązywania. W tym kontekście wysuwam następujące tezy: możliwa jest budowa bardziej precyzyjnych modeli operacji wielomaszynowych w systemach wytwórczych, poprzez umiejętne rozszerzenie klasycznych modeli znanych w teorii szeregowania, przy nieznacznym wzroście rozmiaru i stopniu skomplikowania modelu, w rozpatrywanej klasie problemów istnieją własności, analogiczne do tych znanych z problemów klasycznych oraz nowe własności charakterystyczne dla formułowanych zagadnień, efektywność algorytmów przybliżonych można znacząco poprawić poprzez wykorzystanie szczególnych własności problemu, w klasie metod lokalnego przeszukiwania (ang. local search) metoda przeszukiwania z zabronieniami (ang. tabu search) jest szczególnie polecana do rozwiązywania postawionych zagadnień. Bezpośrednią konsekwencją udowodnienia postawionych tez jest następująca, dość oczywista, własność: przybliżone rozwiązania otrzymane szybkimi algorytmami popraw, problemu precyzyjnie modelującego proces przemysłowy, mogą okazać się istotnie lepsze (w sensie danego kryterium) niż,

1.2. Cel i zakres pracy 3 rozwiązanie optymalne problemu modelującego w sposób przybliżony ten sam proces. 1.2 Cel i zakres pracy Zasadniczym celem pracy jest dowiedzenie postawionych tez. Cel ten zamierzam osiągnąć, poprzez: opracowanie nowych modeli operacji wielomaszynowych, opracowanie sposobu konstrukcji modeli permutacyjno-grafowych problemów szeregowania (na przykładzie problemu gniazdowego) z zastosowaniem prezentowanych modeli operacji wielomaszynowych, wykrycie i udowodnienie specyficznych własności badanego problemu, pozwalających na budowę efektywnych algorytmów konstrukcyjnych oraz algorytmów popraw, implementację algorytmów i przeprowadzenie eksperymentów obliczeniowych, ocenę jakości proponowanych algorytmów oraz przedstawienie wniosków wynikających z przeprowadzonych badań. Organizacja przedstawianej pracy została dostosowana odpowiednio do zaplanowanych badań. W rozdziale 2 podaję znane z literatury odpowiedniki prezentowanych problemów bazujące na klasycznych modelach operacji. Ponadto dokonuję przeglądu algorytmów literaturowych dedykowanych opisanym problemom. Kolejne rozdziały 3-7 stanowią w całości mój oryginalny dorobek. W rozdziale 3 opisuję uogólnione operacje wielomaszynowe. Rozważam i analizuję cztery niżej wymienione sytuacje: (i) operacja jest wykonywana jednocześnie na wszystkich maszynach, (ii) operacja wykonywana jest na poszczególnych maszynach, gdzie położenia przedziałów czasowych są względem siebie ustalone, (iii) operacja wykonywana jest na poszczególnych maszynach, gdzie położenia przedziałów czasowych nie są względem siebie ustalone jednak muszą się mieścić w ściśle określonym przedziale czasowym, (iv) operacja wykonywana jest tak jak w przypadku (iii), gdzie położenia poszczególnych przedziałów czasowych, nie są względem siebie ustalone z tym, że są nałożone na nie dodatkowe ograniczenia. Dla każdej z wymienionych sytuacji prezentuję opracowane modele grafowe, szczególnie wygodne przy analizie własności teoretycznych i konstrukcji algorytmów przybliżonych.

4 Rozdział 1. Wprowadzenie W rozdziale 4 prezentuję sposób tworzenia modeli permutacyjno grafowych na przykładzie gniazdowego problemu z operacjami wielomaszynowymi. Podaję modele permutacyjno-grafowe czterech problemów gniazdowych różniących się między sobą modelami operacji wielomaszynowych. W rozdziale 5 prezentuję, niezbędne do dalszej pracy narzędzie jakim jest szybka procedura wyznaczająca długość najdłuższej ścieżki w grafie modelującym rozważany problemy. Odpowiadający rozważanemu problemowi graf jest wyjątkowo trudnym do tego typu analizy, a istniejące procedury literaturowe działają zbyt wolno by na ich podstawie możliwe byłoby konstruowanie efektywnych algorytmów optymalizacyjnych. W rozdziale 6 badam jednosposobowy problem gniazdowy z nieprzesuwalnymi czynnościami asynchronicznymi. Najpierw dowodzę szeregu bardzo użytecznych z praktycznego punktu widzenia własności pozwalających na efektywne konstruowanie algorytmów. Następnie na ich podstawie proponuję szereg algorytmów konstrukcyjnych oraz algorytmy popraw. Zwracam szczególną uwagę na definicję sąsiedztwa, atrybuty zapisywane na liście tabu (dla algorytmu poszukiwania z zabronieniami) oraz zaawansowane techniki poprawiające efektywność algorytmów. Na zakończenie rozdziału, przeprowadzam wyczerpujące badania testowe prezentowanych algorytmów na odpowiednio zmodyfikowanych przykładach literaturowych. W rozdziale 7 badam wielosposobowy wariant zagadnienia z rozdziału 6. Wykazuję własności szczególne przez analogię do jego prostszego odpowiednika. Rozdziałowi temu towarzyszą także obszerne badania eksperymentalne proponowanych algorytmów. Rozdział 8 zawiera przykład rzeczywistego systemu produkcyjnego, w którym operacje przemysłowe można opisać przy pomocy prezentowanych w pracy nowych modeli operacji wielomaszynowych. W rozdziale 9 podsumowuję największe osiągnięcia mojej pracy, oceniam z teoretycznego punktu jakość oraz z praktycznego punktu stosowalność proponowanych modeli operacji wielomaszynowych, w stosunku do modeli klasycznych. Podsumowuję jakość proponowanych algorytmów dla badanych w pracy problemów gniazdowych. Na zakończenie tego rozdziału sugeruję kierunki dalszych badań naukowych związanych z zagadnieniami prezentowanymi w mojej pracy.

Rozdział 2 Problemy szeregowania w praktyce Praktyka szeregowania zadań (w zakresie modeli deterministycznych dla potrzeb konwencjonalnych i elastycznych systemów wytwórczych) uznaje za fundamentalne zagadnienie o praktycznej stosowalności problem występujący w literaturze pod nazwą problemu gniazdowego (ang. job-shop problem). Kolejne, bardziej zaawansowane modele problemów praktycznych powstają poprzez odpowiednie modyfikacje modelu bazowego, zmierzające w kilku wymienionych poniżej kierunkach: 1. uwzględnienie specyficznych ograniczeń, takich jak np. transport, przezbrojenia, pojemność systemu, ograniczenia czasu oczekiwania itp., 2. budowa modeli ogólniejszych, uwzględniających m.in. alternatywne marszruty zadań, złożone żądania zasobowe, dystrybucje zasobów itp., 3. wprowadzenie funkcji kryterialnych odzwierciedlające m.in. potrzeby ekonomiczne, 4. uwzględnienie niepewności, losowości, rozmytości danych. Ponieważ znaczące rezultaty dla problemu bazowego (ang. job-shop) osiągnięto zaledwie 2 8 lat temu, to kierunki (1) (4) są ciągle w fazie rozwoju, przy czym obszary (3) (4) w odniesieniu do problemów bardziej złożonych pozostają prawie niezbadane. W tym rozdziale zawarta jest krótka charakterystyka (wraz z referencjami do literatury) problemu bazowego oraz problemów w kierunkach (1) (2), ze szczególnym uwzględnieniem kierunku (2), stanowiącego centralny obszar badań zawartych w mojej rozprawie. 5

6 Rozdział 2. Problemy szeregowania w praktyce 2.1 Problem gniazdowy Klasyczny problem gniazdowy modeluje szeroką klasę praktycznych procesów produkcyjnych oraz stanowi bazę wyjściową do opisu działania bardziej skomplikowanych systemów wytwarzania opartych na przepływie zadań. Praktycznie każda nowa metoda jego rozwiązania może być w łatwy sposób zaadoptowana do rozwiązywania innych problemów szeregowania [39]. Ten N P-trudny problem jest jednym ze sztandarowych zagadnień szeregowania zadań produkcyjnych, często traktowany jest przez badaczy jako problem do testowania efektywności nowo powstających metod optymalizacji dyskretnej. Sformułowanie problemu W gniazdowym systemie produkcyjnym znajduje się określona liczba maszyn, na których należy wykonać, określoną liczbę zadań produkcyjnych. Niech J = {1,..., r} oznacza zbiór zadań, O = {1, 2,..., n} zbiór operacji oraz M = {1, 2,..., m} zbiór maszyn. Zbiór operacji jest podzielony na r rozłącznych podzbiorów J 1, J 2,..., J r odpowiadających poszczególnym zadaniom. Zadanie k, k J utożsamia się z zadaną sekwencją o k operacji ze zbioru J k, gdzie J k = o k oraz k J o k = n. Sekwencja ta określa wymaganą kolejność wykonywania operacji zadania k, bez straty ogólności przyjmuje się, że ma ona następująca postać: j k +1, j k +2,..., j k +o k, gdzie j k = k 1 i=1 o i jest liczbą operacji w zadaniach 1, 2,..., k 1 oraz j 1 = 0. Ponadto dla każdej operacji j O określona jest jedna maszyna µ(j) M, na której operacja ta ma być wykonywana w czasie p j > 0. Przyjmuje się, że: (i) każda maszyna może wykonywać w danej chwili nie więcej niż jedną operację, (ii) nie można jednocześnie wykonywać więcej niż jednej operacji danego zadania w danej chwili oraz (iii) wykonywanie operacji na maszynie nie może być przerywane. Uszeregowanie dopuszczalne jest definiowane przez momenty rozpoczęcia wykonywania S(j) 0 operacji j O takie, że wszystkie powyższe ograniczenia są spełnione. Problem polega na znalezieniu uszeregowania dopuszczalnego minimalizującego wybrane kryterium optymalności, będące niemalejącą funkcją terminów S(j), j O. Jednym z najczęściej stosowanych w literaturze kryteriów jest długość uszeregowania max j O C(j), gdzie C(j) = S(j) + p j. Istnieje kilka różnych technik modelowania opisanego problemu. Należą do nich m.in (i) model dysjunktywny, (ii) model PLC, (iii) model dualny. Jednakże najlepsze algorytmy dla tego problemu (i jego różnorodnych uogólnień) bazują na (iv) modelu permutacyjno-grafowym [77], przytoczonym poniżej.

2.1. Problem gniazdowy 7 W modelu tym rozwiązanie reprezentowane jest w postaci zestawu permutacji operacji wykonywanych na poszczególnych maszynach, a wartość funkcji celu wykorzystuje właściwości pewnego grafu skojarzonego z danym zestawem permutacji. Zbiór operacji O można podzielić na m rozłącznych podzbiorów O 1, O 2,..., O m takich, że zbiór O l = {j O : µ(j) = l} (o liczności oznaczanej przez n l ) określa operacje wykonywane na maszynie l, l M; l M nl = n. Niech π = (π 1,..., π m ) oznacza zestaw permutacji taki, że π l = (π l (1),..., π l (n l )) jest pewną permutacją operacji ze zbioru O l, l M; zbiór wszystkich takich zestawów będziemy oznaczać przez Π. Dla zestawu permutacji π Π definiujemy skierowany graf ( ) G(π) = O, E T E K (π) (2.1) ze zbiorem wierzchołków O oraz zbiorem łuków E T E K (π). Wierzchołek j O reprezentuje operacje j i obciążony jest wartością p j. Łuki E T = j k +o k k J j=j k +2 { } (j 1, j) (2.2) określają kolejność wynikającą z technologii, zaś E K (π) = n l l M i=2 { } (π l (i 1), π l (i)) (2.3) wybraną kolejność wykonywania operacji. Ze sposobu konstrukcji grafu G(π) wynika, że jest on acykliczny wtedy i tylko wtedy gdy rozwiązanie reprezentowane przez zestaw permutacji π jest dopuszczalne. Ponadto, wtedy wartości S(j) rozpoczęcia wykonywania operacji j O równe są długością najdłuższych dróg dochodzących do odpowiednich wierzchołków w grafie G(π) i ostatecznie na ich podstawie obliczana jest wartość funkcji celu. Problem gniazdowy pomimo stosunkowo prostego sformułowania należy do problemów trudnych obliczeniowo. Przegląd literatury Problem gniazdowy z kryterium C max (termin zakończenia wszystkich operacji) jest w ogólnym przypadku N P-trudny. Istnieją nieliczne, bardzo specyficzne przypadki szczególne, rozwiązywane w czasie wielomianowym. Przykładowo dla dwumaszynowego problemu gniazdowego z kryterialną funkcją C max oraz co najwyżej dwoma operacjami w każdym zadaniu, znany jest wielomianowy algorytm dokładny [46]. Podobnie dla dwumaszynowego problemu gniazdowego z jednostkowymi czasami wykonywania operacji

8 Rozdział 2. Problemy szeregowania w praktyce znane są algorytmy wielomianowe [109, 53]. Te dwa problemy wytaczają granicę pomiędzy problemami klasy P a problemami N P-trudnymi. Problem z trzema maszynami i z trzema operacjami w zadaniu jest już problemem N P-trudnym co zostało udowodnione w pracy [106]. Podobnie, jeżeli zrezygnujemy z ograniczenia na ilość operacji w zadaniu, to już dwumaszynowy problem gniazdowy, ograniczony do sytuacji jednostkowych i dwujednostkowych czasów wykonywania wszystkich operacji lub trójmaszynowy problem ograniczony tylko do jednostkowych czasów wykonywania operacji jest problemem N P-trudnym, co udowodniono w pracy [59]. Jeżeli ograniczymy się do problemów w których marszruta zadań przechodzi kolejno przez wszystkie maszyny (problem przepływowy, ang. flow-shop) to tylko dla dwumaszynowego problemu znany jest algorytm wielomianowy [47], natomiast problem trójmaszynowy jest już problemem N P-trudnym, co pokazano w pracy [58]. Negatywne doświadczenia z algorytmami dokładnymi w latach 90-tych skierowały poszukiwania w kierunku algorytmów przybliżonych i schematów aproksymacyjnych. Podobnie jak dla większości problemów szeregowania, algorytmy przybliżone dedykowane dla problemu gniazdowego dzielą się na dwie klasy: algorytmy konstrukcyjne oraz algorytmy popraw. Do pierwszej klasy należą algorytmy które konstruują rozwiązanie końcowe szeregując zadanie po zadaniu (operację po operacji). Działają one bardzo szybko, są stosunkowo proste w implementacji komputerowej lecz niestety dostarczają rozwiązań dość odległych (w sensie wartości funkcji celu) od rozwiązań optymalnych. Działanie algorytmów popraw popiera się na systematycznym poprawianiu pewnych rozwiązań. W tym celu w każdej iteracji algorytmu przeglądane jest otoczenie tego rozwiązania (zbiór bliskich w pewnym sensie rozwiązań) w celu wyznaczenia nowego rozwiązania bazowego. Najczęściej jako nowe rozwiązanie bazowe wybiera się najlepsze rozwiązanie z otoczenia. Ze szkicu algorytmu popraw przedstawionego powyżej wynika, że algorytmy te mogą przeglądać w trakcie pracy wiele rozwiązań kończąc swoje działanie na życzenie użytkownika lub w wyniku ustalonego kryterium zatrzymania. Z reguły dłuższe działanie takiego algorytmu, oznacza znalezienie lepszego w sensie wartości funkcji celu rozwiązania. Własność ta pozwala użytkownikowi na kreowanie rozsądnego do danej sytuacji praktycznej, kompromisu pomiędzy czasem obliczeń a jakością otrzymywanych rozwiązań.

2.1. Problem gniazdowy 9 Algorytmy konstrukcyjne Dla problemu gniazdowego algorytmy konstrukcyjne możemy podzielić na dwie zasadnicze grupy (i) algorytmy priorytetowe, (ii) algorytmy typu wstaw. Algorytmy priorytetowe ze zbioru operacji nieuszeregowanych wybierają według pewnej zasady (priorytetu) operację i wstawiają ją jako kolejną do realizacji na maszynę, na której ma być ona wykonywana. Do najczęściej stosowanych reguł priorytetowych należą: SPT operacja o najkrótszym czasie trwania (ang. shortest processing time), LPT operacja o najdłuższym czasie trwania (ang. longest processing time), LWR operacja o najkrótszym pozostałym czasie wykonania (ang. least work remaining), MWR operacja o najdłuższym pozostałym czasie wykonania (ang. most work remaining), Random operacja wybrana losowo. Szerszą listę reguł stosowanych w tym przypadku można znaleźć w pracy [39]. Znane są też w literaturze [5, 42, 93], algorytmy z tzw. dynamicznymi priorytetami. W przypadku tych algorytmów priorytety wszystkich nieuszeregowanych operacji uaktualniane są po każdej fazie algorytmu. Algorytmy z drugiej grupy, opierają się na tak zwane technice wstawień. Główna idea jej działania polega na tym, że szeregowana operacja nie jest umieszczana na końcu uszeregowania częściowego, tak jak to miało miejsce w przypadku algorytmów priorytetowych, lecz próbnie wstawiana jest na wszystkie pozycje i ostatecznie wstawiana na najlepszą pozycję spośród testowanych. W pracy [84] zaproponowano modyfikację polegającą na powtórnym szeregowaniu wcześniej już uszeregowanych operacji. Pozwoliło to na poprawienie efektywności metody o ponad 5% w sensie jakości produkowanych rozwiązań. Na pograniczu algorytmów popraw działa algorytm oparty na metodzie przesuwania wąskiego gardła SB (ang. shifting bottleneck algorithm) [3]. Algorytm w m krokach poprawia rozwiązanie startowe. W każdym kroku ze zbioru jeszcze nie wybranych maszyn, wyznaczona jest według pewnej reguły maszyna nazywana wąskim gardłem. Na tej maszynie szereguje się operacje, zgodnie z permutacją będącą rozwiązaniem jednomaszynowego problemu z czasami gotowości i dostarczania. Dane instancji tego problemu zależą od danych pierwotnego problemu gniazdowego. W dalszej części iteracji przeprowadza się określoną liczbę cykli popraw.

10 Rozdział 2. Problemy szeregowania w praktyce Algorytmy popraw W pracy [77], przedstawiono wyniki badań porównujących, szybkość działania oraz jakość generowanych rozwiązań 20 najlepszych algorytmów dedykowanych problemowi gniazdowemu. Opierają się one na czterech podstawowych metodach. Poniżej zostały one wymienione, dodatkowo lista ta została uzupełniona o najnowsze algorytmy bazujące na wspomnianych metodach: metodzie symulowanego wyżarzania Aarts i in. [1]; Matsuo i in. [72], Yamada i in. [118], metodzie tabu Barnes i Chambers [8], Dell Amico i Trubian [24], Nowicki i Smutnicki (TSAB) [86], metodzie genetycznej Dell Croce i in. [23], Dorndorf i Pesch [27], Pesch [98], Aarts i in. [1] metoda SB Adams i in. [3], Balas i Vazacopoulos [6]. Z przeprowadzonych testów wynika, że najlepsze rezultaty otrzymano algorytmem TSAB. Algorytm ten jest w dalszym ciągu rozwijany, w tym także przez jego twórców. W pracy [89] zaproponowano nową metodę dywersyfikacji przeszukiwań, wykorzystującą wiedzę o krajobrazie przestrzeni rozwiązań, która dla rozważanego problemu była rozważana w pracy [82]. Algorytm TSAB jest również inspiracją dla algorytmów prezentowanych w dalszej części pracy. 2.2 Ograniczenia technologiczne Jak już wspominałem klasyczne sformułowanie problemu patrz 2.1 przyjmuje wiele założeń upraszczających takich jak: (i) dowolnie długi czas oczekiwania zadania w kolejce pomiędzy zakończeniem danej operacji i przed rozpoczęciem następnej, (ii) nieograniczona możliwość magazynowania zadań (iii) zerowe lub pomijalne czasy transportu, (iv) zerowe lub pomijalne czasy przezbrojeń maszyn, (v) nieograniczona pojemność buforów, (vi) nieograniczona liczba palet. Utrzymanie tych założeń w modelu matematycznym często prowadzi do modeli nieadekwatnych do rzeczywistości. Przeciwnie, uwzględnienie tych realnych ograniczeń generuje nowe klasy problemów szeregowania. Bez czekania Ograniczenie bez czekania jest szczególnym przypadkiem ogólniejszego ograniczenia czasu oczekiwania. Przy ograniczeniu tego typu dla każ-

2.2. Ograniczenia technologiczne 11 dej pary kolejnych operacji (j, j + 1) tego samego zadania określony jest minimalny α j oraz maksymalny β j czas zwłoki pomiędzy momentem zakończenia operacji j a momentem rozpoczęcia wykonywania operacji j + 1; α j S(j + 1) C(j) β j. (2.4) Parametr α j często jest utożsamiany z opóźnieniem wynikającym np. z czasu transportu lub czasu schnięcia malowanego elementu. Parametr β j natomiast utożsamiany jest z czasem po jakim dany element traci swoje niezbędne do dalszej obróbki własności fizyczno-chemiczne, może to być np. czas stygnięcia obrabianego na gorąco elementu. Ograniczenie bez czekania należy rozumieć jako sytuację, w której czas oczekiwania musi wynosić dokładnie zero; α j = β j = 0. Oznacza to wymóg ciągłego wykonywania danego zadania, operacja po operacji, bez możliwości przestoju. Sytuacja tak zachodzi w wielu praktycznych procesach, w których wykonuje się operacje na materiałach zmieniających swoje własności fizyczno-chemiczne. Przykładem może być produkcja żywności [40] czy produkcja lekarstw [99]. W pracy [100] pokazano, że problem ten jest N P-trudny już dla przypadku dwumaszynowego. W pracy [54] proponowany jest pseudo-wielomianowy algorytmy dla dwumaszynowego problemu gniazdowego z ograniczeniem bez czekania przy dodatkowym założeniu jednostkowych czasów wykonywania operacji. Próby skonstruowania różnych algorytmów (dokładnych, popraw bazujących na zróżnicowanych technikach) dla tego problemu były podejmowane przez wielu badaczy. Dla małych przykładów rozważanego problemu zaproponowany jest w pracy [64] algorytm oparty na metodzie podziału i ograniczeń. W pracy [99] prezentuje się algorytmy popraw oparte na metodzie symulowanego wyżarzania. Algorytmy poszukiwania z zabronieniami przedstawiony jest w pracy [63], natomiast prace [13, 103] prezentują algorytmy genetyczne. Bufory Ograniczenie rozważane w tej sekcji odnosi się do skończonej pojemności buforów wejściowych maszyn. W praktyce ograniczona pojemność buforów maszyn występuje najczęściej w przepływowych systemach produkcyjnych, ponieważ obrabiane detale, przesuwają się np. przy pomocy taśmociągu, a fragment taśmociągu pomiędzy kolejnymi maszynami może pomieścić tylko niewielką liczbę obrabianych elementów. W jednej z pierwszych prac [94] pokazano, że już dla dwumaszynowego problemu przepływowego rozważany problem należy do klasy problemów N P-trudnych.

12 Rozdział 2. Problemy szeregowania w praktyce W monografii [104] zaprezentowano algorytm wykorzystujący technikę poszukiwania z zabronieniami dla problemu przepływowego z maszynami równoległymi (w stanowisku obsługi znajduje się kilka maszyn), przy dodatkowym ograniczeniu pojemności buforów (bufory mają co najwyżej jednostkową pojemność). Szczegółowe modele zasobów buforowych podane są w pracy [110] oraz [88]. Problemu przepływowego z buforami analizowany był w pracy [57], natomiast w pracy [79] zaproponowano dla niego algorytm oparty na metodzie poszukiwania z zabronieniami. Transport Ograniczenie te polega na uwzględnieniu czasów transportów zadań pomiędzy poszczególnymi maszynami. Ponieważ czas transportu może być zależny od drogi dzielącej poszczególne maszyny, w problemach gniazdowych z transportem konieczne jest również uwzględnienie geometrycznego układu maszyn. Najczęściej spotykane układy maszyn wymienia się m. in. w pracy [55]. Należą do nich układy typu linia, pętla i drabinka. Systemy transportowe o nieograniczonej przepustowości mogą być modelowane jako ograniczenia czasu oczekiwania. Inaczej jest z systemami transportowymi o ograniczonej liczbie środków przewozowych. Systemy o strukturze gniazdowej wykorzystujące ograniczoną liczbę wózków AGV możemy zróżnicować ze względu na liczbę oraz tryb pracy wózków. Wózki mogą pracować w dwóch trybach. Tryb pierwszy stój i jedź polega na tym, że dany środek transportu jest związany z konkretnym zadaniem przez cały czas pobytu zadania w systemie. W takim przypadku, po wykonaniu operacji załadowczej, wózek jedzie do zadanej maszyny, po czym staje i czeka aż operacja wykonywana przez maszynę zakończy się. Drugi tryb pracy zabierz i zostaw polega na tym, że po zostawieniu danej części buforze maszyny, wózek może wykonać tzw. przejazd pusty w kierunku innej maszyny i tam zabrać inną część z bufora wyjściowego maszyny, rozpoczynając kolejny transport. W problemach gniazdowych z transportem i ograniczoną liczbą wózków pracujących w trybie zabierz i zostaw, wózki traktuje się jak zbiór dodatkowych maszyn (transportowych) [44, 45, 90, 111]. W przypadku gdy przydział operacji do poszczególnych maszyn transportowych jest znany, problem można przetransformować do problemu gniazdowego z przezbrojeniami w przeciwnym wypadku, problem jest transformowalny do problemu gniazdowego z przezbrojeniami i maszynami wielofunkcyjnymi. Algorytmy konstrukcyjne dla tego problemu przedstawiono w pracy [7, 90] zaś algorytmy popraw bazujące na technice poszukiwania z zabronieniami przedstawione są w pracach [44, 45, 81].

2.3. Problemy ogólniejsze 13 Palety Na początku zaznaczę, że palety często odgrywają istotną rolę w procesie produkcyjnym jako platforma do przenoszenia obrabianych detali [101, 19, 112]. Wykorzystanie palet w rzeczywistym procesie produkcyjnym polega na tym, że w gnieździe załadowczym na paletę ładowana jest część bazowa danego zadania i następnie paleta jest transportowana pomiędzy odpowiednimi gniazdami. Przez cały proces wykonywania danego zadania przyporządkowana jest mu jedna paleta, tzn czynności technologiczne wykonywane są bez zdejmowania części bazowej z palety. Po zakończeniu procesu technologicznego, gotowe zadanie jest zdejmowane z palety w gnieździe wyładowczym i paleta może ponownie być wykorzystana dla potrzeb kolejnego zadania. Do modelowania tego ograniczenia można wykorzystać rozszerzony model permutacyjno-grafowy [80] lub konkurencyjny model paleto-zadaniowy opisany w pracy [97]. Algorytm tabu dla problemu przepływowego z paletami zaproponowano w pracy [78]. 2.3 Problemy ogólniejsze Pomimo iż, klasyczne sformułowanie problemu gniazdowego, modeluje szereg praktycznych procesów produkcyjnych, wprowadza się jego dalsze uogólnienia, które rozszerzają obszar stosowalności na bardziej złożone procesy przemysłowe. Do najczęściej stosowanych uogólnień problemu gniazdowego należy wprowadzenie modelu operacji wielomaszynowych (ang. multiprocesor task) oraz uwzględnienie alternatywnych sposobów wykonania operacji (ang. multi-purpose machines). Problem, w którym występują równocześnie dwa wyżej wymienione uogólnienia nazywany jest wielotrybowym (ang. multi-mode). 2.3.1 Wiele sposobów wykonywania Wielosposobowy problem gniazdowy spotykany jest także pod nazwą problemu gniazdowego z maszynami wielofunkcyjnymi. Problem ten modeluje sytuacje, gdy w procesie przemysłowym istnieją pewne operacje mogące być wykonane na różnych maszynach. Słowo różnych należy rozumieć zarówno jako różne egzemplarze takiej samej maszyny, (maszyny identyczne) jak i różne typy maszyn (np. robot uniwersalny i wiertarka). Ponieważ wielosposobowy problem gniazdowy, formułowany jest bardzo podobnie jak klasyczny problem gniazdowy, ograniczę się tylko do podania różnicy. W klasycznym problemie każda operacja j O była skojarzona z

14 Rozdział 2. Problemy szeregowania w praktyce konkretną jedną maszyną µ(j) M. W rozważanym problemie dla operacji j O zdany jest zbiór M j alternatywnych maszyn. Realizacja operacji j wymaga użycia jednej, dowolnie wybranej maszyny i M j, z tego zbioru przez zadany czas p i,j (ogólnie różny dla różnych maszyn). Ponadto w problemie tym obowiązują wszystkie inne ograniczenia występujące w klasycznym problemie gniazdowym. Pewnym, często spotykanym, przypadkiem szczególnym opisanego problemu, jest problem gniazdowy z maszynami równoległymi. Modeluje on proces przemysłowy, w którym zamiast jednej maszyny występuje gniazdo produkcyjne wyposażone w kilka identycznych maszyn (maszyny dedykowane [11]). Wtedy oczywiście dla każdej operacji przypisany jest indeks gniazda, a operacja realizowana jest na dowolnej maszynie z tego gniazda. Pomimo iż, problem należy dla klasy problemów N P-trudnych, w literaturze znane są algorytmy dokładne bazujące na metodzie podziału i ograniczeń. Niestety najlepszy algorytm tego typu zaproponowany w pracy [48] jest w stanie rozwiązać problem o rozmiarze kilku maszyn i kilkunastu operacji, co jest niewystarczające dla praktycznych zastosowań. Algorytmy konstrukcyjne zaproponowane zostały w pracach [43], [77], algorytmy popraw oparte na technice przeszukiwania z zabronieniami przedstawione są w pracach [43], [22], [76]. 2.3.2 Operacje wielomaszynowe Problem gniazdowy z operacjami wielomaszynowymi znany jest także jako problem gniazdowy z równoległym wykorzystaniem maszyn [37]. Problem ten modeluje procesy produkcyjne, w których występuje konieczność użycia kilku maszyn jednocześnie, np. w celu wymiany tłumika należy użyć podnośnika i spawarki. W pracy [41] pokazano, że już dwustanowiskowy problem (przepływowy) z maszynami równoległymi na jednym ze stanowisk jest problemem N P-trudnym. Ze względu na duże podobieństwo rozważanego problemu w stosunku do problemu klasycznego, poniższe sformułowanie ograniczę tylko do podania różnic względem problemu gniazdowego. Podobnie jak przy wcześniejszym uogólnieniu, dla każdej operacji j O zamiast jednej maszyny, dany jest zbiór maszyn M j. Tym razem do realizacji operacji j O należy użyć jednocześnie wszystkich maszyn M j przez czas p j. Wszystkie dodatkowe ograniczenia występujące w klasycznym problemie przenoszą się w całości na rozważany problem. Pierwsza prace [37] dotycząca operacji wielomaszynowych pochodzi z końca lat siedemdziesiątych. W pracy [52] rozważa się wiele specyficznych bardzo zredukowanych (np. do dwóch maszyn, jednostkowych czasów wyko-

2.3. Problemy ogólniejsze 15 nywania) przypadków rozważanego problemu. Podobnie w pracy [29] analizuje się różne uproszczenia rozważanego problemu (np. zakłada się podzielność operacji). W pracach tych przeprowadzona jest analiza złożoności obliczeniowej uproszczonych problemów, a co za tym idzie wytyczona jest granica pomiędzy problemami wielomianowymi a N P-trudnymi. Algorytm dokładny dla tego problemu został przedstawiony w pracy [52]. Bazuje on na ogólnej metodzie podziału i ograniczeń. Niestety praktyczna czasochłonność algorytmu jest na tyle duża, że można nim rozwiązać w sensownym czasie instancje przykładów zawierające maksymalnie do 40 operacji. 2.3.3 Wielosposobowe operacje wielomaszynowe Problem ten łączy w sobie dwa wcześniej opisane uogólnienia problemu gniazdowego. Modeluje on najszerszą klasę procesów produkcyjnych, lecz jest jednocześnie najbardziej złożonym z obliczeniowego punktu widzenia. W rozważanym problemie szeregowania zadań produkcyjnych, realizacja operacji j odbywa się pewnym (dowolnie wybranym) sposobem f należącym do zbioru F j wszystkich sposobów jakimi można wykonać tę operację. Natomiast każdy sposób realizacji definiuje precyzyjnie zbiór wykorzystywanych maszyn oraz czas p j,f realizacji operacji j sposobem f. Rozważany problem, jest na tyle trudnym problemem z praktycznego punktu widzenia, że wyklucza stosowanie jakichkolwiek metod dokładnych nawet dla niewielkich rozmiarów instancji. Jakość priorytetowych algorytmów literaturowych jest bardzo słaba, np. algorytm prezentowany w pracy [17] generuje rozwiązania średnio o 100% gorsze (w sensie wartości funkcji celu) niż rozwiązania referencyjne otrzymane algorytmami typu przeszukiwania z zabronieniami. W pracy [12] proponowany jest algorytm na pograniczu, algorytmu priorytetowego i algorytmu popraw (cyklicznie dokonuje: przydziału wszystkim operacją sposobu i szeregowania wybranych sposobów). Jakość dostarczanych rozwiązań jest na poziomie 50% (w sensie odległości wartości funkcji celu od rozwiązań referencyjnych.) W grupie algorytmów konstrukcyjnych najlepszym jest algorytm typu wstaw zaproponowany w monografii [77]. Analogiczna jakość generowanych rozwiązań jest na poziomie 25% od rozwiązań referencyjnych. Pierwszym algorytmem popraw jest algorytm typu przeszukiwania z zabronieniami opisany w pracy [17]. Niestety prędkość jego działania jest bardzo wolna tzn. dla największych przykładów wykonuje on około jedną iterację na minutę (na komputerze o prędkości odpowiadającej komputerowi klasy PC z procesorem Pentium 120). Kolejny algorytm typu tabu opisany w pracy [77] jest znacznie lepszy zarówno pod względem prędkości jak i jakości dostarczanych

16 Rozdział 2. Problemy szeregowania w praktyce rozwiązań. 2.4 Metody rozwiązywania Problemy optymalizacji dyskretnej charakteryzują się tym, że zmienne decyzyjne (wszystkie lub część) przyjmują wartości dyskretne, najczęściej całkowitoliczbowe lub binarne. Ze względu na to, że przestrzeń rozwiązań nie jest ciągła i różniczkowalna, zawiera ogromną liczbę ekstremów lokalnych oraz jej rozmiar jest ogromny, znalezienie rozwiązania optymalnego jest dość kłopotliwe (w wielu przypadkach praktycznie niemożliwe). Zdecydowania większość tych problemów należy do klasy problemów N P- trudnych, dlatego przy obecnym stanie wiedzy, nie będzie można ich rozwiązać dokładnie wykorzystując algorytmy o złożoności wielomianowej. Proponowane dla tej klasy problemów algorytmy dokładne o złożoności ponadwielomianowej, oparte najczęściej o schemat podziału i ograniczeń, potrafią rozwiązać (w sensownym czasie) tylko problemy o niewielkich rozmiarach. Fakt ten przyczynił się do powstania algorytmów rozwiązujący dany problem w sposób przybliżony. Algorytmy te zwane przybliżonymi, z definicji nie znajdują rozwiązań optymalnych, lecz tylko rozwiązania w miarę dobre w sensie wartości funkcji celu. Tak więc o ile algorytmy dokładne można porównywać ze sobą na podstawie czasu działania (dostarczane rozwiązania były jednakowo dobre (optymalne)), miarą efektywności algorytmów przybliżonych jest zarówno czas działania oraz dokładność (odległość otrzymanego rozwiązania od rozwiązania optymalnego w sensie wartości funkcji celu). Opisywane w dalszym ciągu metody, będą dotyczyły problemu optymalizacyjnego zapisanego w formie x = arg min F (x) (2.5) x X gdzie x jest rozwiązaniem optymalnym, x rozwiązaniem, X zbiorem rozwiązań dopuszczalnych, F funkcją celu. Jest powszechnie znane, że inne typy problemów optymalizacji można sprowadzić do postaci 2.5. 2.4.1 Metody dokładne Metody dokładne znajdują zastosowanie w rozwiązywaniu problemów klasy P, dla których istnieją różne specjalistyczne algorytmy dokładne o złożoności wielomianowej. W klasie problemów N P-trudnych zastosowanie metod dokładnych praktycznie jest ograniczone do instancji o niewielkich

2.4. Metody rozwiązywania 17 rozmiarach, ponieważ czas pracy tych algorytmów rośnie wykładniczo wraz z wzrostem rozmiaru problemu. Najbardziej znanymi metodami dokładnymi są: algorytmy dedykowany dla problemów klasy P, np. algorytm Johnson a [47] metody specjalizowane oparte na schemacie podziału i ograniczeń (ang. Branch and Bound), [16], np. algorytm Carlier a [18], schemat programowania dynamicznego (PD), metody programowania liniowego całkowitoliczbowego (PLC), np. algorytm Gilmora-Gomory ego, [31] metody programowania liniowego binarnego (PLB), np. algorytm Balasa, metody subgradientowe. 2.4.2 Metody przybliżone Metod przybliżonych, rozwiązujących problemy optymalizacji dyskretnej jest bardzo dużo. Wiele z nich naśladuje Naturę, np. algorytmy ewolucyjne, czy algorytmy mrówkowe. Inne używają komputerów biologicznych, tzn. problem matematyczny kodowany jest za pomocą sekwencji DNA w formie łańcuchów, które pasują do siebie w ściśle określony sposób. Rozwiązaniem jest sekwencja połączonych elementarnych łańcuchów. Stwierdzenie czy znaleziono wymagane rozwiązanie wykonywane jest w teście biochemicznym wykrywającym szukaną cząsteczkę DNA. Kolejne, np. ekspertowe bazują na zgromadzonej wiedzy ludzi zawodowo zajmujących się danym problemem. Jeszcze inne metody, np. oparte na sieciach neuronowych wymagają do poprawnego funkcjonowania procesu uczenia. Lista metod przybliżonych jest bardzo długa i w skróconej wersji przedstawiona jest poniżej: algorytmy konstrukcyjne (ang. constructive methods) reguły priorytetowe (ang. dispatching rules) algorytmy oparte na technice wstawiania (ang. insert algorithms) obcięte B&B (ang. truncated B&B) poszukiwanie adaptacyjne (ang. adaptation algorithms) metody AI (ang. artificial inteligence)

18 Rozdział 2. Problemy szeregowania w praktyce metody ekspertowe (ang. expert systems) metody wieloagentowe (ang. multi agents) metoda geometryczna (ang. geometric search) poszukiwania biochemiczne (ang. DNA method) sieci neuronowe (ang. neural networks) metody hybrydowe (ang. hybrid methods) algorytmy naśladujące (ang. memetic algorithms) spełnienie ograniczeń (ang. constraints satisfaction) poszukiwanie lokalne (ang. local search) zwane też metodami popraw (ang. improvement methods) poszukiwanie zstępujące (ang. descending search) sterowane poszukiwanie lokalne (ang. guided local search) poszukiwania ewolucyjne (ang. evolutionary, genetic search) ewolucja różnicowa (ang. differential evolution) algorytmy kulturowe (ang. cultural algorithms) poszukiwania ścieżkowe (ang. path search) ścieżki przejściowe (ang. path relinking) celowe ścieżki śledzące (ang. goal-oriented tracing paths) poszukiwanie mrówkowe (ang. ant search) poszukiwania rozproszone (ang. scatter search) poszukiwanie progowe (ang. threshold search) symulowane wyżarzanie (ang. simulated annealing) symulowane wstrząsanie (ang. simulated jumping) poszukiwanie losowe (ang. random search) poszukiwanie z zakazami (ang. taboo search) poszukiwanie z pamięcią adaptacyjną (ang. adaptive memory search) Krótki opis z każdej z wymienionej tu metody znajduje się w pracy [105]. Problemy optymalizacji dyskretnej którymi zajmuje się w pracy należą do obszaru szeregowania zadań produkcyjnych, dokładniej są to uogólnione problemy gniazdowe. Dla tych właśnie problemów najskuteczniejsze okazały się dwie klasy algorytmów przybliżonych. Są to szybkie i z reguły mniej dokładne algorytmy konstrukcyjne oraz wolniejsze i zazwyczaj dokładniejsze algorytmy popraw.

2.4. Metody rozwiązywania 19 Moim zdaniem odpowiedź na pytanie, który z algorytmów jest efektywniejszy, ten działający 1s i generujący rozwiązanie odległe o 20% czy ten działający 10h i dostarczający rozwiązanie odległe o 0,1%, zależy tylko od praktycznego zastosowania. W przypadku awarii, gdzie trzeba podjąć natychmiast decyzję, a uzyskane rozwiązanie będzie wykorzystywane tylko przez 1 dzień, zdecydowanie pierwszy algorytm jest lepszy. Jednak w planowaniu produkcji długo terminowej, np projektowanie parku maszyn w zakładach produkujących samochody, zdecydowanie lepszy jest algorytm dostarczający lepsze rozwiązanie nawet kosztem kilku-godzinnych obliczeń. Wśród algorytmów konstrukcyjnych dla problemów szeregowania najlepsze rezultaty osiągane są przez algorytmy typu wstaw, natomiast wśród algorytmów popraw najlepiej spisuje się algorytm typu poszukiwania z zabronieniami oraz algorytm typu symulowanego wyżarzania. Ponieważ w swojej pracy będę korzystać z tych trzech wymienionych schematów, przejdę do dokładniejszego ich opisania. 2.4.3 Algorytmy typu wstaw Algorytmy typu wstaw dedykowane są tylko tym problemom optymalizacji dyskretnej w których rozwiązanie może być reprezentowane w postaci permutacji bądź zestawu permutacji. Z tego powodu algorytm typu wstaw omówię na przykładzie problemu gniazdowego zdefiniowanego w rozdziale 2.1, w którym rozwiązanie reprezentowane jest w postaci zestawu permutacji operacji wykonywanych na poszczególnych maszynach. Prekursorem algorytmów typu wstaw był algorytm NEH, [74], zaproponowany dla klasycznego problemu przepływowego. Ogólna idea algorytmów konstrukcyjnych typu wstaw w klasycznym problemie gniazdowym (każda operacja jest wykonywana tylko na jednej określonej maszynie) polega na tym, że na danym kroku iteracyjnym, dysponując częściowym uszeregowaniem (lub inaczej - częściową kolejnością), wstawia się próbnie na wszystkie możliwe pozycje w permutacji częściowej na maszynie l jedną z jeszcze nieuszeregowanych operacji j, maszyna l oznacza tutaj maszynę, na której należy wykonać operację j. Dla każdej z takich pozycji wyznacza się dolne ograniczenie wartości funkcji celu i następnie wybiera się pozycję o najmniejszej wartości tego ograniczenia. Na tę pozycję wstawia się ostatecznie operację j. Tym samym zbiór nieuszeregowanych operacji zostaje pomniejszony o operację j. Postępowanie jest kontynuowane, aż wszystkie operacje zostaną uszeregowane. Problem wyboru operacji j ze zbioru operacji nieuszeregowanych, rozwiązuje się przez ustalenie w fazie początkowej algorytmu pewnej kolejności, najczęściej według nierosnących czasów wykonywania. Schemat algorytmu typu wstaw przedstawiony jest na rys. 2.1.

20 Rozdział 2. Problemy szeregowania w praktyce Algorytmu typu wstaw Krok 1. Podstaw za x częściowe puste uszeregowanie, oraz wyznacz permutację γ wszystkich operacji wg. nierosnących czasów wykonywania. Krok 2. Dla i = 1... o wykonaj kroki 3 5. Krok 3. Włóż próbnie operację j = γ(i) do na wszystkie możliwe pozycje w uszeregowaniu częściowym x, dla każdego powstałego dopuszczalnego uszeregowania wyznacz dolne ograniczenie wartość funkcji celu. Krok 4. Z powstałych częściowych uszeregowań wybierz uszeregowanie x najlepsze w sensie dolnego ograniczenia wartości funkcji celu. Krok 5. Podstaw x := x. Rysunek 2.1: Schemat algorytmu typu wstaw 2.4.4 Algorytmy typu symulowanego wyżarzania Metoda symulowanego wyżarzania została zaprezentowana po raz pierwszy w pracy [49]. Nazwa metody wynika z faktu iż metoda ta nawiązuje do termodynamicznego procesu studzenia (wyżarzania) ciała stałego. Metoda ta jest dość powszechnie stosowana ze względów na dość łatwą implementację oraz dobrą jakość generowanych rozwiązań. W literaturze [2, 21, 72, 56, 91, 92, 118] prezentowane są liczne algorytmy oparte na tej metodzie dla różnych problemów szeregowania. Ogólna idea algorytmu symulowanego wyżarzania polega na ciągłym losowym przechodzeniu z rozwiązania bieżącego do rozwiązania sąsiedniego, przy czym decyzja o przejściu do rozwiązania sąsiedniego zależy od jego jakości (w sensie wartości funkcji celu). Intuicyjne jest, że prawdopodobieństwo przejścia do rozwiązania zwiększa się z jakością tego rozwiązania. W miarę działania algorytmu prawdopodobieństwo akceptacji rozwiązań gorszych maleje. W celu precyzyjnego omówienia przyjmijmy następujące oznaczenia: X x X zbiór wszystkich rozwiązań rozważanego problemu, bieżące rozwiązanie problemu, F (x) wartość funkcji celu dla rozwiązania x,

2.4. Metody rozwiązywania 21 Algorytmu symulowanego wyżarzania (x, T start, T stop, n, η) Krok 1. Podstaw x := x, T := T start, na podstawie parametrów T start, T stop ), η oblicz λ zgodnie zgodnie z przyjętym schematem chłodzenia, Krok 2. Zwiększ licznik iteracji i := i + 1, Wybierz losowo rozwiązanie x z sąsiedztwa N x, oraz liczbę R z przedziału [0, 1). Krok 3. Jeżeli F (x ) < F (x ) wtedy połóż x := x. Krok 4. Oblicz wartość = F (x ) F (x) i jeżeli R < e /T to połóż x := x Krok 5. Jeżeli i mod n = 0 wtedy zmniejsz temperaturę T według przyjętego schematu chłodzenia Krok 6. Jeżeli i < n η) to idź do kroku 2. Rysunek 2.2: Schemat algorytmu symulowanego wyżarzania N x N sąsiedztwo rozwiązania x czyli zbiór rozwiązań bliskich w pewnym sensie rozwiązaniu x, x N x pewne wylosowane rozwiązanie z sąsiedztwa N x. Jeżeli wartość funkcji celu wylosowanego rozwiązania jest mniejsza (w przypadku minimalizacji) niż rozwiązania bazowego, F (x ) < F (x), przejście do tego rozwiązania jest bezwarunkowe x := x. W przeciwnym wypadku prawdopodobieństwo P (x, x ) przejścia do wylosowanego rozwiązania zależy od jakości rozwiązań F (x ) i F (x) oraz parametru T zwanego temperaturą. Najczęściej stosowana postać funkcji prawdopodobieństwa akceptacji przejścia z rozwiązania x do rozwiązania x ma postać: P (x, x ) = min(1, e /T ) (2.6) gdzie = F (x ) F (x). Co pewien etap algorytmu (najczęściej po ustalonej liczbie iteracji) parametr t jest zmniejszany. W literaturze znane jest kilka schematów chłodzenia (zmniejszania parametru T ) jednak najczęściej stosowane są dwa schematy: geometryczny T := λt i logarytmiczny T := T/(1 + λt ), gdzie λ jest pewnym parametrem najczęściej obliczanym na początku algorytmu na podstawie temperatury początkowej T start,