• Nie Znaleziono Wyników

1.1 Tezy pracy

N/A
N/A
Protected

Academic year: 2021

Share "1.1 Tezy pracy"

Copied!
203
0
0

Pełen tekst

(1)

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

(2)

„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 cierpli- wość, wyrozumiałość oraz stworzenie sprzyjających do pracy warunków.

(3)

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

(4)

4 Problemy gniazdowe z operacjami wielomaszynowymi. Mo-

dele grafowe 43

4.1 Nieprzesuwalne czynności asynchroniczne – jeden sposób wy-

konywania . . . 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 gra- fach 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 asyn- chronicznymi 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

(5)

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 asyn- chronicznymi 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 nieprzesu- walnymi czynnościami synchronicznymi . . . 174

7.5 Wnioski i uwagi . . . 178

8 Zastosowania praktyczne 179

9 Wnioski końcowe 183

Literatura 185

(6)
(7)

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 pro- dukcyjnymi). Generowane przez praktykę zagadnienia, dla przypadku de- terministycznego, 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 prze- mysłowych charakteryzujących się dyskretnym przepływem zadań. Są to przede wszystkim zagadnienia optymalizacji przydziału dostępnych zaso- bów (maszyn, personelu, energii) do zadań oraz ustalenia harmonogramu wykonywania tych zadań, w taki sposób aby optymalizować żądane kryte- rium (minimalizować czas wykonania zlecenia, minimalizować zużycie ener- gii itp.).

Po wtóre, zdecydowana większość problemów optymalizacji kombinato- rycznej należy do klasy problemów N P-trudnych, zatem najprawdopodob- niej nie będzie można skonstruować dla nich algorytmów czasowo efektyw- nych (jeśli P6=N P). Istniejące algorytmy dokładne o złożoności wykładni- czej, rozwiązują w sensownym czasie tylko problemy o niewielkim, z prak- tycznego punktu widzenia, rozmiarze. Te dwa powody (praktyczne zasto- sowanie 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

(8)

Jednym z istotniejszych zagadnień w teorii harmonogramowania zadań produkcyjnych jest problem gniazdowy z kryterium będącym terminem za- kończenia wykonania wszystkich zadań. Znaczenie tego zagadnienia wynika z faktu, że już jego „klasyczne” sformułowanie modeluje szereg rzeczywi- stych 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 ob- szar jego stosowania staje się jeszcze większy. Jednym z ważnych kierun- ków uogólnień jest wprowadzenie operacji wielomaszynowych modelujących procesy, w których do wykonywania poszczególnych operacji zaangażowa- na 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 wie- lomaszynowych, 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 matematycz- nego opisywanych procesów, a co za tym idzie pogorszenie własności nu- merycznych algorytmów rozwiązywania. W tym kontekście wysuwam na- stępujące tezy:

• możliwa jest budowa bardziej precyzyjnych modeli operacji wieloma- szynowych 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 charak- terystyczne dla formułowanych zagadnień,

• efektywność algorytmów przybliżonych można znacząco poprawić po- przez 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 szyb- kimi algorytmami popraw, problemu precyzyjnie modelującego proces prze- mysłowy, mogą okazać się istotnie lepsze (w sensie danego kryterium) niż,

(9)

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 pro- blemów szeregowania (na przykładzie problemu gniazdowego) z zasto- sowaniem 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 oblicze- niowych,

• ocenę jakości proponowanych algorytmów oraz przedstawienie wnio- sków wynikających z przeprowadzonych badań.

Organizacja przedstawianej pracy została dostosowana odpowiednio do za- planowanych 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 wykonywa- na 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ól- nych 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.

(10)

W rozdziale 4 prezentuję sposób tworzenia modeli permutacyjno–grafo- wych na przykładzie gniazdowego problemu z operacjami wielomaszynowy- mi. 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 proble- mowi graf jest wyjątkowo trudnym do tego typu analizy, a istniejące proce- dury 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 nieprzesu- walnymi czynnościami asynchronicznymi. Najpierw dowodzę szeregu bar- dzo użytecznych z praktycznego punktu widzenia własności pozwalających na efektywne konstruowanie algorytmów. Następnie na ich podstawie pro- ponuję szereg algorytmów konstrukcyjnych oraz algorytmy popraw. Zwra- cam 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 odpo- wiednika. Rozdziałowi temu towarzyszą także obszerne badania ekspery- mentalne 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, oce- niam z teoretycznego punktu jakość oraz z praktycznego punktu stosowal- ność 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.

(11)

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ępu- jący w literaturze pod nazwą problemu gniazdowego (ang. job-shop pro- blem). 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 cha- rakterystyka (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

(12)

2.1 Problem gniazdowy

Klasyczny problem gniazdowy modeluje szeroką klasę praktycznych pro- cesów produkcyjnych oraz stanowi bazę wyjściową do opisu działania bar- dziej skomplikowanych systemów wytwarzania opartych na przepływie za- dań. 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ń sze- regowania zadań produkcyjnych, często traktowany jest przez badaczy jako problem do testowania efektywności nowo powstających metod optymali- zacji 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 J1, J2, . . . , Jr odpowiadających poszczególnym za- daniom. Zadanie k, k ∈ J utożsamia się z zadaną sekwencją ok operacji ze zbioru Jk, gdzie |Jk| = ok oraz Pk∈Jok = 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ć: jk+1, jk+2, . . . , jk+ok, gdzie jk = Pk−1i=1oi jest liczbą operacji w zadaniach 1, 2, . . . , k − 1 oraz j1 = 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 pj > 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 maszy- nie 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 znale- zieniu 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 maxj∈OC(j), gdzie C(j) = S(j) + pj.

Istnieje kilka różnych technik modelowania opisanego problemu. Należą do nich m.in (i) model dysjunktywny, (ii) model PLC, (iii) model dual- ny. Jednakże najlepsze algorytmy dla tego problemu (i jego różnorodnych uogólnień) bazują na (iv) modelu permutacyjno-grafowym [77], przytoczo- nym poniżej.

(13)

W modelu tym rozwiązanie reprezentowane jest w postaci zestawu per- mutacji 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 O1, O2, . . . , Om takich, że zbiór Ol = {j ∈ O : µ(j) = l}

(o liczności oznaczanej przez nl) określa operacje wykonywane na maszynie l, l ∈ M ; Pl∈Mnl= n. Niech π = (π1, . . . , πm) oznacza zestaw permutacji taki, że πl = (πl(1), . . . , πl(nl)) jest pewną permutacją operacji ze zbioru Ol, l ∈ M; zbiór wszystkich takich zestawów będziemy oznaczać przez Π.

Dla zestawu permutacji π ∈ Π definiujemy skierowany graf

G(π) =O, ET ∪ EK(π) (2.1) ze zbiorem wierzchołków O oraz zbiorem łuków ET ∪ EK(π). Wierzchołek j ∈ O reprezentuje operacje j i obciążony jest wartością pj. Łuki

ET = [

k∈J jk+ok

[

j=jk+2

n(j − 1, j)o (2.2)

określają kolejność wynikającą z technologii, zaś

EK(π) = [

l∈M nl

[

i=2

nl(i − 1), πl(i))o (2.3)

wybraną kolejność wykonywania operacji. Ze sposobu konstrukcji grafu G(π) wynika, że jest on acykliczny wtedy i tylko wtedy gdy rozwiązanie re- prezentowane 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 Cmax (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ą Cmaxoraz co najwyżej dwoma operacjami w każdym zadaniu, znany jest wielomianowy algorytm dokładny [46]. Podobnie dla dwumaszynowe- go problemu gniazdowego z jednostkowymi czasami wykonywania operacji

(14)

znane są algorytmy wielomianowe [109, 53]. Te dwa problemy wytaczają granicę pomiędzy problemami klasy P a problemami N P-trudnymi. Pro- blem z trzema maszynami i z trzema operacjami w zadaniu jest już pro- blemem N P-trudnym co zostało udowodnione w pracy [106]. Podobnie, jeżeli zrezygnujemy z ograniczenia na ilość operacji w zadaniu, to już dwu- maszynowy problem gniazdowy, ograniczony do sytuacji jednostkowych i dwujednostkowych czasów wykonywania wszystkich operacji lub trójma- szynowy 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 schema- tów aproksymacyjnych. Podobnie jak dla większości problemów szeregowa- nia, 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 nieste- ty 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 bli- skich w pewnym sensie rozwiązań) w celu wyznaczenia nowego rozwiązania bazowego. Najczęściej jako nowe rozwiązanie bazowe wybiera się najlep- sze 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 wyni- ku ustalonego kryterium zatrzymania. Z reguły dłuższe działanie takiego algorytmu, oznacza znalezienie lepszego w sensie wartości funkcji celu roz- wią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ń.

(15)

Algorytmy konstrukcyjne

Dla problemu gniazdowego algorytmy konstrukcyjne możemy podzielić na dwie zasadnicze grupy (i) algorytmy priorytetowe, (ii) algorytmy ty- pu 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 proces- sing 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 pra- cy [39]. Znane są też w literaturze [5, 42, 93], algorytmy z tzw. dynamicz- nymi 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 wsta- wień. 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 proble- mu zależą od danych pierwotnego problemu gniazdowego. W dalszej części iteracji przeprowadza się określoną liczbę cykli popraw.

(16)

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 pod- stawowych metodach. Poniżej zostały one wymienione, dodatkowo lista ta została uzupełniona o najnowsze algorytmy bazujące na wspomnianych me- todach:

• 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 al- gorytmem TSAB. Algorytm ten jest w dalszym ciągu rozwijany, w tym także przez jego twórców. W pracy [89] zaproponowano nową metodę dy- wersyfikacji 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ść magazyno- wania zadań (iii) zerowe lub pomijalne czasy transportu, (iv) zerowe lub pomijalne czasy przezbrojeń maszyn, (v) nieograniczona pojemność bufo- rów, (vi) nieograniczona liczba palet. Utrzymanie tych założeń w modelu matematycznym często prowadzi do modeli nieadekwatnych do rzeczywi- stości. Przeciwnie, uwzględnienie tych realnych ograniczeń generuje nowe klasy problemów szeregowania.

Bez czekania

Ograniczenie „bez czekania” jest szczególnym przypadkiem ogólniejsze- go ograniczenia „czasu oczekiwania”. Przy ograniczeniu tego typu dla każ-

(17)

dej pary kolejnych operacji (j, j + 1) tego samego zadania określony jest minimalny αj oraz maksymalny βj czas zwłoki pomiędzy momentem za- koń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 proce- sach, 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] propo- nowany jest pseudo-wielomianowy algorytmy dla dwumaszynowego proble- mu 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 bazu- jących na zróżnicowanych technikach) dla tego problemu były podejmo- wane 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 meto- dzie symulowanego wyżarzania. Algorytmy poszukiwania z zabronieniami przedstawiony jest w pracy [63], natomiast prace [13, 103] prezentują algo- rytmy 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.

(18)

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 do- datkowym ograniczeniu pojemności buforów (bufory mają co najwyżej jed- nostkową 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ń po- między poszczególnymi maszynami. Ponieważ czas transportu może być zależny od drogi dzielącej poszczególne maszyny, w problemach gniazdo- wych 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 pra- cy 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 kierun- ku 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 do- datkowych 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 przezbroje- niami 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ś algo- rytmy popraw bazujące na technice poszukiwania z zabronieniami przed- stawione są w pracach [44, 45, 81].

(19)

Palety

Na początku zaznaczę, że palety często odgrywają istotną rolę w pro- cesie produkcyjnym jako platforma do przenoszenia obrabianych detali [101, 19, 112]. Wykorzystanie palet w rzeczywistym procesie produkcyj- nym polega na tym, że w gnieździe załadowczym na paletę ładowana jest część bazowa danego zadania i następnie paleta jest transportowana po- między odpowiednimi gniazdami. Przez cały proces wykonywania danego zadania przyporządkowana jest mu jedna paleta, tzn czynności technolo- giczne 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 mo- del permutacyjno-grafowy [80] lub konkurencyjny model paleto-zadaniowy opisany w pracy [97]. Algorytm tabu dla problemu przepływowego z pale- tami zaproponowano w pracy [78].

2.3 Problemy ogólniejsze

Pomimo iż, klasyczne sformułowanie problemu gniazdowego, modelu- je szereg praktycznych procesów produkcyjnych, wprowadza się jego dalsze uogólnienia, które rozszerzają obszar stosowalności na bardziej złożone pro- cesy przemysłowe. Do najczęściej stosowanych uogólnień problemu gniazdo- wego należy wprowadzenie modelu operacji wielomaszynowych (ang. multi- procesor task) oraz uwzględnienie alternatywnych sposobów wykonania operacji (ang. multi-purpose machines). Problem, w którym występują rów- nocześ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 mode- luje sytuacje, gdy w procesie przemysłowym istnieją pewne operacje mogące być wykonane na różnych maszynach. Słowo „różnych” należy rozumieć za- ró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

(20)

konkretną jedną maszyną µ(j) ∈ M. W rozważanym problemie dla operacji j ∈ O zdany jest zbiór Mj alternatywnych maszyn. Realizacja operacji j wymaga użycia jednej, dowolnie wybranej maszyny i ∈ Mj, z tego zbio- ru przez zadany czas pi,j (ogólnie różny dla różnych maszyn). Ponadto w problemie tym obowiązują wszystkie inne ograniczenia występujące w kla- sycznym problemie gniazdowym.

Pewnym, często spotykanym, przypadkiem szczególnym opisanego pro- blemu, 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 dedyko- wane [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 li- teraturze 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 po- praw 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]. Pro- blem 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 stano- wisk 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 Mj. Tym razem do realizacji operacji j ∈ O należy użyć jednocześnie wszystkich maszyn Mj przez czas pj. 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-

(21)

nywania) przypadków rozważanego problemu. Podobnie w pracy [29] ana- lizuje się różne uproszczenia rozważanego problemu (np. zakłada się po- dzielność 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 prak- tyczna 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, realiza- cja operacji j odbywa się pewnym (dowolnie wybranym) sposobem f nale- żącym do zbioru Fj wszystkich sposobów jakimi można wykonać tę opera- cję. Natomiast każdy sposób realizacji definiuje precyzyjnie zbiór wykorzy- stywanych maszyn oraz czas pj,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 algoryt- mów literaturowych jest bardzo słaba, np. algorytm prezentowany w pracy [17] generuje rozwiązania średnio o 100% gorsze (w sensie wartości funk- cji celu) niż rozwiązania referencyjne otrzymane algorytmami typu prze- szukiwania z zabronieniami. W pracy [12] proponowany jest algorytm na pograniczu, algorytmu priorytetowego i algorytmu popraw (cyklicznie do- konuje: przydziału wszystkim operacją sposobu i szeregowania wybranych sposobów). Jakość dostarczanych rozwiązań jest na poziomie 50% (w sen- sie odległości wartości funkcji celu od rozwiązań referencyjnych.) W grupie algorytmów konstrukcyjnych najlepszym jest algorytm typu wstaw zapro- ponowany 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ęk- szych przykładów wykonuje on około jedną iterację na minutę (na kom- puterze o prędkości odpowiadającej komputerowi klasy PC z procesorem Pentium 120). Kolejny algorytm typu tabu opisany w pracy [77] jest znacz- nie lepszy zarówno pod względem prędkości jak i jakości dostarczanych

(22)

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 optymal- nego 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. Pro- ponowane dla tej klasy problemów algorytmy dokładne o złożoności po- nadwielomianowej, oparte najczęściej o schemat podziału i ograniczeń, po- trafią rozwiązać (w sensownym czasie) tylko problemy o niewielkich rozmia- rach. Fakt ten przyczynił się do powstania algorytmów rozwiązujący dany problem w sposób przybliżony. Algorytmy te zwane przybliżonymi, z defi- nicji 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 roz- wiązania były jednakowo dobre (optymalne)), miarą efektywności algoryt- mó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 optyma- lizacyjnego zapisanego w formie

x = arg min

x∈XF (x) (2.5)

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

(23)

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 John- son’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. al- gorytm Gilmora-Gomory’ego, [31]

• metody programowania liniowego binarnego (PLB), np. algorytm Ba- lasa,

• metody subgradientowe.

2.4.2 Metody przybliżone

Metod przybliżonych, rozwiązujących problemy optymalizacji dyskret- nej jest bardzo dużo. Wiele z nich naśladuje Naturę, np. algorytmy ewolu- cyjne, 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 bioche- micznym wykrywającym szukaną cząsteczkę DNA. Kolejne, np. eksperto- we bazują na zgromadzonej wiedzy ludzi zawodowo zajmujących się danym problemem. Jeszcze inne metody, np. oparte na sieciach neuronowych wy- magają do poprawnego funkcjonowania procesu uczenia. Lista metod przy- bliż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 algori- thms)

• obcięte B&B (ang. truncated B&B)

poszukiwanie adaptacyjne (ang. adaptation algorithms)

• metody AI (ang. artificial inteligence)

(24)

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 memo- ry 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ładniej- sze algorytmy popraw.

(25)

Moim zdaniem odpowiedź na pytanie, który z algorytmów jest efek- tywniejszy, 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 tyl- ko 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 naj- lepsze rezultaty osiągane są przez algorytmy typu wstaw, natomiast wśród algorytmów popraw najlepiej spisuje się algorytm typu poszukiwania z za- bronieniami oraz algorytm typu symulowanego wyżarzania. Ponieważ w swojej pracy będę korzystać z tych trzech wymienionych schematów, przej- dę do dokładniejszego ich opisania.

2.4.3 Algorytmy typu wstaw

Algorytmy typu wstaw dedykowane są tylko tym problemom optymali- zacji 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 permu- tacji operacji wykonywanych na poszczególnych maszynach.

Prekursorem algorytmów typu wstaw był algorytm NEH, [74], zapropo- nowany 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 uszeregowa- niem (lub inaczej - częściową kolejnością), wstawia się próbnie na wszyst- kie 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ę osta- tecznie 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 ope- racji nieuszeregowanych, rozwiązuje się przez ustalenie w fazie początkowej algorytmu pewnej kolejności, najczęściej według nierosnących czasów wy- konywania. Schemat algorytmu typu wstaw przedstawiony jest na rys. 2.1.

(26)

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 po- zycje w uszeregowaniu częściowym x, dla każdego powstałe- go dopuszczalnego uszeregowania wyznacz dolne ogranicze- nie wartość funkcji celu.

Krok 4. Z powstałych częściowych uszeregowań wybierz uszeregowa- nie x0najlepsze w sensie dolnego ograniczenia wartości funk- cji celu.

Krok 5. Podstaw x := x0.

Rysunek 2.1: Schemat algorytmu typu wstaw

2.4.4 Algorytmy typu symulowanego wyżarzania

Metoda symulowanego wyżarzania została zaprezentowana po raz pierw- szy w pracy [49]. Nazwa metody wynika z faktu iż metoda ta nawiązu- je 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 roz- wią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 – zbiór wszystkich rozwiązań rozważanego problemu, x ∈ X – bieżące rozwiązanie problemu,

F (x) – wartość funkcji celu dla rozwiązania x,

(27)

Algorytmu symulowanego wyżarzania (x, Tstart, Tstop, n, η)

Krok 1. Podstaw x := x, T := Tstart, na podstawie parametrów Tstart, Tstop), η oblicz λ zgodnie zgodnie z przyjętym sche- matem chłodzenia,

Krok 2. Zwiększ licznik iteracji i := i + 1,

Wybierz losowo rozwiązanie x0 z sąsiedztwa Nx, oraz liczbę R z przedziału [0, 1).

Krok 3. Jeżeli F (x0) < F (x) wtedy połóż x := x0.

Krok 4. Oblicz wartość ∆ = F (x0)−F (x) i jeżeli R < e−∆/T to połóż x := x0

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

Nx ⊂ N – sąsiedztwo rozwiązania x czyli zbiór rozwiązań bliskich w pew- nym sensie rozwiązaniu x,

x0 ∈ Nx – pewne wylosowane rozwiązanie z sąsiedztwa Nx.

Jeżeli wartość funkcji celu wylosowanego rozwiązania jest mniejsza (w przypadku minimalizacji) niż rozwiązania bazowego, F (x0) < F (x), przej- ście do tego rozwiązania jest bezwarunkowe x := x0. W przeciwnym wy- padku prawdopodobieństwo P (x, x0) przejścia do wylosowanego rozwiąza- nia zależy od jakości rozwiązań F (x0) i F (x) oraz parametru T zwane- go temperaturą. Najczęściej stosowana postać funkcji prawdopodobieństwa akceptacji przejścia z rozwiązania x do rozwiązania x0 ma postać:

P (x, x0) = min(1, e−∆/T) (2.6) gdzie ∆ = F (x0) − F (x). Co pewien etap algorytmu (najczęściej po usta- lonej 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 oblicza- nym na początku algorytmu na podstawie temperatury początkowej Tstart,

(28)

temperatury końcowej Tstop oraz ilości η wykonywanych zmian temperatu- ry. Dla schematu logarytmicznego λ = (Tstart− Tstop)/(η · Tstart· Tstop), dla geometrycznego (Tstop/Tstart)1/η. Istnieją jednak algorytmy symulowanego wyżarzania, w których parametr λ zmienia się podczas pracy algorytmu, np. na podstawie odchylenia standardowego wartości funkcji celu przeglą- danych rozwiązań.

W schemacie algorytmu symulowanego wyżarzania przedstawionym na rys. 2.2 parametr n oznacza liczbę iteracji wykonywanych przy jednej tem- peraturze, η jest liczbą faz algorytmu (fazą nazywamy iteracje algorytmu wykonane przy tej samej temperaturze).

2.4.5 Algorytmy typu poszukiwania z zabronieniami

Metoda poszukiwania z zakazami została zaprezentowana po raz pierw- szy w pracach [32, 33], a następnie była rozwijana przez jej twórcę w pracach [34, 35, 36]. Metoda ta w pewnym stopniu naśladuje naturalne zachowanie się szukającego człowieka. Ogólna idea algorytmu polega na systematycz- nym przechodzenia z rozwiązania bieżącego x do rozwiązania najlepszego w sąsiedztwie x0 = arg minx∈NxF (x)1 (przy założeniu minimalizacji funk- cji kryterialnej F ). W celu wymuszenia opuszczania ekstremów lokalnych algorytm wyposażony jest w pamięć historii poszukiwań, zapisującej odwie- dzane rozwiązania, atrybuty rozwiązań, lub atrybuty ruchów prowadzących do tych rozwiązań. Dwie ostatnie techniki zmniejszają znacznie pracochłon- ność metody. Algorytm pamiętając pewne atrybuty ostatnio przeglądanych rozwiązań (lub atrybuty ruchów do nich prowadzących) unika ich w ko- lejnych krokach. Zazwyczaj w algorytmach poszukiwania z zabronieniami stosuje się pamięć krótko terminową (pamięta się atrybuty rozwiązań i/lub atrybuty ruchów od kilku do kilkunastu iteracji wstecz). Dobrze dobrane atrybutu, pamiętane na liście tabu gwarantują nie tylko odrzucanie roz- wiązań ostatnio przeglądanych, ale także zabraniają zbliżania się do tych rozwiązań, odrzucają rozwiązania w pewnym sensie bliskie tym pierwszym.

Praktycznie działanie algorytmu można zatrzymać w dowolnym momen- cie. Umożliwia to swobodne kształtowanie kompromisu pomiędzy czasem obliczeń a jakością produkowanych rozwiązań. Najczęściej spotykane kry- teria stopu to: wykonanie pewnej liczby iteracji bez poprawy najlepszego znalezionego rozwiązania, wykonanie określonej liczy iteracji, przekroczenie limitu czasu przeznaczonego na pracę algorytmu.

Algorytmy typu przeszukiwania należą do najefektywniejszych algoryt- mów dla problemów szeregowania zadań. Wyniki porównawcze algorytmów

1Wielkości Nx, x, F (x) opisano w rozdziale 2.4.4.

(29)

Algorytmu poszukiwania z zabronieniami

Krok 1. Podstaw x:= x.

Krok 2. Wybierz najlepsze niezabronione przez listę tabu LT roz- wiązanie x0 z sąsiedztwa Nx.

Krok 3. Jeżeli F (x0) < F (x) wtedy połóż x := x0. Krok 4. Umieść atrybuty rozwiązania x0 na liście LT .

Podstaw x := x0.

Krok 5. Jeżeli na nachodzi warunek STOP’u to idź do kroku 2.

Rysunek 2.3: Schemat algorytmu poszukiwania z zabronieniami

bazujących na różnych metodach dla dwóch najbardziej sztandarowych pro- blemów szeregowania (problem przepływowy i problem gniazdowy) zawarte są w pracach [2, 114]. Duża liczba artykułów np. [4, 60, 62, 51, 86, 87, 104, 108, 113, 115, 117] prezentujących algorytmy oparte na metodzie poszuki- wania z zabronieniami świadczy o ciągłym zainteresowaniu tą metodą.

Pomimo dość prostego ogólnego schematu algorytmu poszukiwania z zabronieniami rys. 2.3, wymaga on dobrze przemyślanego wyboru atrybu- tów zapisywanych na liście tabu, opracowania dobrego sąsiedztwa (tzn. nie za duże, ze stosunkowo dobrymi rozwiązaniami), bardzo szybkich metod obliczania wartości funkcji kryterialnej F (x), x ∈ X oraz łatwego wyzna- czania statusu rozwiązania (zabronione, nie zabronione). Włożona praca w dopracowanie algorytmu typu poszukiwania z zabronieniami, może jednak zaowocować algorytmem o efektywności znacznie przewyższającej algoryt- my oparte na innych metodach.

(30)
(31)

Operacje wielomaszynowe.

Klasyfikacja, modele grafowe

Powszechnie stosowane modele matematyczne operacji wielomaszyno- wych zakładają użycie wszystkich potrzebnych maszyn przez cały czas wy- konywania określonej operacji. W praktyce tego typu założenie jest jednak nadmiarowe. Często występują sytuacje, w których niektóre maszyny wy- korzystywane są tylko w pewnych przedziałach czasowych, a nie w całym okresie wykonywania danej operacji. Długość tych przedziałów z reguły jest istotnie mniejsza niż czas wykonywania całej operacji. Co więcej, położenia tych przedziałów są względem siebie ustalone lub też mogą być zmienia- ne. Zastosowanie dla tego typu sytuacji, literaturowych modeli z jednocze- snym użyciem wszystkich maszyn powoduje nałożenie dodatkowych dość silnych (fikcyjnych) ograniczeń na rozwiązania dopuszczalne. Ograniczenia te, powodują sztuczne zapotrzebowanie na daną maszynę przez cały okres wykonywania danej operacji. Oznacza to, że podczas wykonywania ope- racji, maszyna teoretycznie potrzebna do jej realizacji w danej chwili nie jest wykorzystywana, a nie może być użyta do wykonania operacji innego zadania. W konsekwencji dodatkowe fikcyjne ograniczenia, wynikające tyl- ko z zastosowanego modelu, a nie z sytuacji rzeczywistej, przyczyniają się bezpośrednio do wydłużenia harmonogramu, niezależnie od zastosowanych metod rozwiązywania poszczególnych problemów. W rzeczywistości jednak opisany czas przestoju maszyny można zagospodarować.

W rozdziale tym przedstawiam klasyfikację operacji wielomaszynowych, która pozwoliła mi wyspecyfikować cztery grupy operacji. Następnie dla każdej grupy podaję odpowiedni model grafowy, który jest szczególnie przy- dany przy konstrukcji algorytmów popraw oraz uzasadniam jego popraw- ność. Model dla jednej z tych grup jest już znany w literaturze, zaś trzy

25

(32)

pozostałe są moim dorobkiem. Dodatkowo podaję sposoby uwzględnienia ograniczeń technologicznych i kolejnościowych występujących pomiędzy po- szczególnymi operacjami. Rozważania ilustruję odpowiednimi przykładami.

Oprócz modelu klasycznego, w którym operacja jest wykonywana jed- nocześnie na wszystkich maszynach, rozpatruję trzy dodatkowe modele cha- rakteryzujące się kolejno tym, że (i) położenia przedziałów czasowych, w których operacja jest wykonywana na wymaganych maszynach są wzglę- dem siebie ustalone, (ii) położenia tych przedziałów nie są względem siebie ustalone, ale muszą mieścić się w pewnym przedziale czasowym o zada- nej długości oraz (iii) tak jak w przypadku (ii) z tym, że na położenie tych przedziałów nałożone są dodatkowe ograniczenia. Niestety efektem ubocznym bardziej precyzyjnego modelowania rzeczywistości jest wzrost rozmiaru oraz złożoności modelu. Wydaje się jednak, że zniesienie ogra- niczeń narzuconych przez model klasyczny, umożliwi generowanie lepszych rozwiązań w stosunku do zaawansowanych algorytmów pracujących na mo- delu klasycznym, nawet przez mało dokładne, ale szybkie algorytmy kon- strukcyjne, nie mówiąc już o algorytmach popraw.

3.1 Parametry operacji wielomaszynowych

Operacja wielomaszynowa j jest częściowo określona przez maksymalny czas tj przeznaczony do jej wykonania oraz mj elementowy zbiór maszyn Mj, na których jest ona wykonywana. Proces wykonywania operacji j na maszynie l będziemy nazywać czynnością i notować jako parę u = (j, l).

Wszystkie czynności operacji j tworzą zbiór Nj = {(j, l) : l ∈ Mj}, mj =

|Mj| = |Nj|.

Czynność u ∈ Nj scharakteryzowana jest przez trzy wielkości: głowę rau­ 0, ciało pu > 0 i ogon qau ­ 0, które spełniają następujące zależności:

rau+ pu+ qau¬ tj, u ∈ Nj (3.1) oraz

u∈Nj rau = 0, ∃u∈Nj qau= 0. (3.2) Warunek (3.1) oznacza, że suma głowy, ciała i ogona każdej czynności da- nej operacji nie może być większa niż jej maksymalny czas wykonywania.

Z kolei warunek (3.2) mówi, że dla danej operacji istnieje co najmniej jed- na czynność z zerową głową oraz co najmniej jedna czynność z zerowym ogonem.

Niech s(u) określa moment rozpoczęcia wykonywania czynności u ∈ Nj. Wtedy moment rozpoczęcia S(j) wykonywania operacji j definiujemy

(33)

czas l

pu

rau

tj

C ( j ) Maszyny

Mj

s ( u ) S ( j )

qau

u

Rysunek 3.1: Dopuszczalny harmonogram wykonywania operacji wieloma- szynowej j

następująco:

S(j) = minns(u) − rau: u ∈ Njo, (3.3) zaś moment zakończenia

C(j) = maxns(u) + pu+ qau : u ∈ Njo. (3.4) Ciało pu oznacza czas wykonywania czynności u ∈ Nj operacji j. Gło- wa rau określa minimalne opóźnienie momentu s(u) rozpoczęcia wykony- wania czynności u w stosunku do momentu S(j) rozpoczęcia wykonywania operacji j, tzn. s(u) ­ S(j) + rau. Symetrycznie, ogon qau określa mini- malne przyśpieszenie momentu c(u) = s(u) + pu zakończenia wykonywania czynności u w stosunku do momentu C(j) zakończenia operacji j, tzn.

c(u) ¬ C(j) − qau, rys. 3.1.

Uszeregowanie czynności u ∈ Nj, określone przez zestaw s(u), u ∈ Nj, jest dopuszczalne wtedy i tylko wtedy, gdy spełniony jest następujący wa- runek:

C(j) − S(j) ¬ tj, czyli

maxns(u) + pu+ qau : u ∈ Nj

o− minns(u) − rau: u ∈ Nj

o¬ tj, (3.5) zwany dalej ograniczeniem operacyjnym 1. Warunek ten narzuca ograni- czenia na momenty s(u) rozpoczęcia wykonywania się czynności u ∈ Nj,

1Spełnienie warunków s(u)­ S(j) + rau, c(u)¬ C(j) − qauwynika bezpośrednio z definicji S(j) oraz C(j).

Cytaty

Powiązane dokumenty

• wie w jaki sposób skonstruować schemat blokowy w taki sposób aby program zapisany na podstawie utworzonego algorytmu poprawnie działał,.. • zna sposoby analizy gotowych

Uczniowie w parach, przy swoich stanowiskach, tworzą algorytm na podstawie schematu blokowego zapisanego na tablicy.... Wybrany uczeń zapisuje na tablicy schemat blokowy do

Po skończonej próbie uczniowie dzielą się swoimi wrażeniami. Nauczyciel rozdaje uczniom kartki i ołówki. Prosi, aby uczniowie, trzymając oburącz kartki, włożyli do ust przybory

Okres badań (od 29 listopada 2020 do 31 grud- nia 2020 roku) obejmował dwie fazy: 1) zamknięcia wszystkich instytucji kultury i możliwości poruszania się po mieście

W takim to ujęciu technika przestaje funkcjonować jako neutralna, stając się formą techniki autorytarnej 11 , która przez procesy centralizacji władzy i kontroli staje się

Wręcz przeciwnie, wydaje się, że równie ważne jak prace nad usprawniającymi wiele procesów algorytmami czy sztuczną inteligencją jest kształtowanie tego, co filozof

Drzewo algorytmu pozwala wyznaczyć wszystkie uporządkowania danych oraz określić czasochłonność tego algorytmu czyli jego złożoność obliczeniową:. 

Wskaż błędny wiersz (zakreśl) i obok napisz jak powinien wyglądać poprawnie, tak aby funkcja poprawnie obliczyła wartość silni z przekazanej jej liczby...