systemy sterowania
Transkrypt
systemy sterowania
SYSTEMY STEROWANIA pod redakcją Włodzimierza Greblickiego i Czesława Smutnickiego 21 kwietnia 2006 Redakcja naukowa Włodzimierz Greblicki Czesław Smutnicki Instytut Cybernetyki Technicznej Politechniki Wrocławskiej http://www.ict.pwr.wroc.pl [email protected] [email protected] Recenzenci Zbigniew Banaszak, Politechnika Koszalińska Leszek Rutkowski, Politechnika Częstochowska Skład komputerowy Jarosław Pempera c Copyright by Instytut Cybernetyki Technicznej Politechniki Wrocławskiej ° Wrocław 2005 Utwór ani w całości, ani we fragmentach nie może być powielany bądź rozpowszechniany za pomocą urządzeń elektronicznych, mechanicznych, kopiujących, nagrywających i innych bez pisemnej zgody posiadacza praw autorskich. ISBN 83-206-1559-3 Wydawnictwa Komunikacji i Łączności sp. z o.o ul. Kazimierzowska 52, 02-546 Warszawa tel. +48 22 849-27-51; fax +48 22 849-23-22 Dział Handlowy tel./fax +48 (22) 849-23-45 tel. +48 (22) 849-27-51 w. 555 http://www.wkl.com.pl e-mail: [email protected] Wydanie pierwsze. Warszawa 2005 Spis treści I STEROWANIE I OPTYMALIZACJA 9 1 Zagadnienie kolejnościowe gniazdowe z ograniczeniami „bez-czekania”. Podejście genetyczne (GA) Mariusz Makuchowki 1.1 1.2 1.3 1.4 Opis problemu . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Model matematyczny . . . . . . . . . . . . . . . 1.1.2 Kodowanie rozwiązania . . . . . . . . . . . . . . 1.1.3 Przykłady testowe . . . . . . . . . . . . . . . . . Algorytm genetyczny . . . . . . . . . . . . . . . . . . . . 1.2.1 Poziom mutacji . . . . . . . . . . . . . . . . . . . 1.2.2 Wybór operatora mutacji . . . . . . . . . . . . . 1.2.3 Dobór prawdopodobieństwa mutacji . . . . . . . 1.2.4 Wybór operator krzyżowania . . . . . . . . . . . 1.2.5 Automatyczne skalowanie funkcji przystosowania 1.2.6 Weryfikacja numeryczna . . . . . . . . . . . . . . Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Problem przepływowy z ograniczeniami „bez czekania” Józef Grabowski, Jarosław Pempera 2.1 2.2 2.3 2.4 Sformułowanie problemu Algorytmy heurystyczne Wyniki obliczeniowe . . Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 . . . . . . . . . . . . . . . . . . . . 3 Analiza przestrzeni rozwiązań wybranych problemów przepływowych Jarosław Pempera 3.1 3.2 3.3 3.4 3.5 3.6 Problemy przepływowe . . . Analiza rozwiązań losowych Wielka dolina . . . . . . . . Szorstkość krajobrazu . . . Uwagi końcowe . . . . . . . Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 13 15 16 17 19 25 30 34 36 38 38 42 43 48 51 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 55 57 59 62 63 Przedmowa Monografia przedstawia wybrane problemy projektowania i realizacji systemów sterowania obiektami i/lub procesami. Stworzenie takiego systemu wymaga wykonania sekwencji typowych działań. Są to: (1) eksperyment na obiekcie, (2) akwizycja i przetwarzanie otrzymanych danych pomiarowych, (3) modelowanie i identyfikacja modelu matematycznego obiektu, (4) sformułowanie i rozwiązanie problemu sterowania obiektem (procesem), (5) rozwiązanie problemu sterowania optymalnego, (6) praktyczna realizacja układu (algorytmu) sterowania i/lub regulacji. Narzędzia matematyczne i techniczne używane do realizacji w/w działań zależą silnie od charakteru obiektu i procesu, zaś ich jakość jest przedmiotem nieustannej troski automatyków (naukowców i praktyków). Aktualnie, szybkie zmiany technologiczne wypierają sprzętowe rozwiązania systemów sterowania, zastępując je specjalizowanym oprogramowaniem sterowników urządzeń. Spowodowało to, między innymi, wzrost znaczenia badań dotyczących matematycznych metod rozwiązywania problemów sterowania i optymalizacji. W części pierwszej monografii, zatytułowanej “Sieci neuronowe i algorytmy ewolucyjne”, przedstawiono wyniki badań dotyczące najciekawszych współcześnie narzędzi, jakim są sieci neuronowe i sztuczna ewolucja. Badania te ukierunkowane są na określone obszary zastosowań praktycznych, a mianowicie: (a) zastosowanie sieci na bazie wielomianów Bernsteina do monitorowania jakości produkcji, (b) dedykowane modelowanie przy użyciu sieci neuronowych, (c) badanie różnych aspektów ewolucji dla potrzeb optymalizacji ciągłej, (d) modelowanie neuronowe procesów chemicznych. Część druga, “Identyfikacja systemów i rozpoznawanie”, omawia najnowsze wyniki badań teoretycznych w unikalnych obszarach identyfikacji systemów, w tym głównie w dziedzinach: (a) identyfikacja nieparametryczna, (b) identyfikacja za pomocą falek, (c) identyfikacja systemów stopnia ułamkowego, oraz (d) rozpoznawanie na bazie krzywych wypełniających. W części trzeciej, “Modelowanie i sterowanie w praktyce”, przedstawiamy wybrane dedykowane sterowania dla obiektów rzeczywistych. Są to, między innymi: (a) systemy ciepłownicze, (b) obiekty latające, (c) biologiczne oczyszczalnie ścieków, (d) systemy ogniw słonecznych zlokalizowanych w Plataforma Solar de Almería (przy współpracy z University of Almería, Hiszpania), (e) systemy medyczne, (f) systemy reprezentacji danych oraz ich selekcji do analizy ruchu postaci animowanych (przy współpracy z IBS PAN), (g) systemy z regulatorami adaptacyjnymi dla obiektów o parametrach zmiennych w czasie. Część czwarta monografii, nosząca tytuł “Sterowanie i optymalizacja”, przedstawia wyniki dotyczące modeli i problemów deterministycznych dla potrzeb sterowania. Obejmuje, takie działy jak deterministyczna teoria sterowania, teoria optymalizacji ciągłej i dyskretnej, deterministyczna teoria szeregowania zadań oraz ich zastosowania. W zakresie metodologii rozwiązywania ciągłych pro- blemów sterowania zaprezentowano najnowsze wyniki dla obiektów i procesów deterministycznych, cyklicznych i z opóźnieniami. Dziedzina optymalizacji jest traktowana nie tylko jako narzędzie pomocnicze do rozwiązywania problemów optymalnego sterowania, ale także jako samodzielna metodologia rozwiązywania problemów decyzyjnych występujących w praktyce. W zakresie bezpośrednich zastosowań optymalizacji ciągłej, liniowej i nieliniowej w monografii przedstawiono prace dotyczące: (a) metod projektowania optymalnych struktur sieci dystrybucyjnych i optymalizacji rozpływów, (b) metod optymalnego rozkroju i pakowania. Oddzielny obszar badawczy obejmuje zagadnienia optymalizacji i sterowania dyskretnymi procesami przemysłowymi, przy wykorzystaniu metod optymalizacji ciągłej i dyskretnej, realizowane obok programów rządowych, grantów KBN, także w ramach projektu pod auspicjami International Institute of Applied System Analysis (IIASA, Laxenburg, Austria), oraz umowy IIASA-PAN. Zapoczątkowane w latach 70-tych badania są obecnie wielokierunkowe i obejmują, między innymi: (a) metodologię rozwiązywania problemów optymalizacji kombinatorycznej oraz sterowania dyskretnymi procesami produkcyjnymi, (b) realizację algorytmów kombinatorycznych w równoległych środowiskach obliczeń, (c) modelowanie i rozwiązywanie złożonych problemów szeregowania, (d) optymalizację funkcjonowania automatycznego transportu w systemach wytwarzania, (e) modelowanie i optymalizację pracy systemów montażowych. Spoiwem wiążącym całość monografii jest nie tylko tematyka, lecz także wspólna platforma instytucjonalna oraz rodowód naukowy badaczy – Instytut Cybernetyki Technicznej1 Politechniki Wrocławskiej. Instytut powstał 35 lat temu, kontynując najlepsze tradycje pochodzącej z r. 1952 Katedry Telemechaniki i Automatyki, założonej i kierowanej przez prof. Zygmunta Szparkowskiego, oraz Katedry Konstrukcji Maszyn Cyfrowych (rok zał. 1963) prof. Jerzego Bromirskiego. Od początku powstania Instytutu kierunek automatyki i sterowania był jednym z najmocniejszych kierunków badawczych, skupiając kadrę o wysokiej aktywności naukowej i publikacyjnej. Doprowadziło to do osiągnięcia przez Instutut znaczącej pozycji naukowej w wymienionych dziedzinach, wyrażonej pośrednio znaczną liczbą publikacji w czasopismach z listy filadelfijskiej, liczbą cytowań tych prac na całym świecie, kontaktami międzynarodowymi, liczbą doktoratów i habilitacji, uprawnieniami naukowymi. Rezygnując świadomie z pełnego bilansu badań prowadzonych w Instytucie przez okres minionych 35 lat, zamieszczono w monografii jedynie najnowsze, znaczące wyniki w odpowiednich obszarach, grupując je w części odpowiadające najbardziej reprezentatywnym kierunkom prowadzonych obecnie prac badawczych. (Dla badań prowadzonych we współpracy z europejskimi i krajowymi ośrodkami naukowymi podano afiliację wyłącznie dla autorów pochodzacych spoza Instytutu.) Mamy nadzieję, że rozległość i poziom prezentowanej tematyki badań Instytutu, będzie świadectwem rangi polskich uczelni. Włodzimierz Greblicki, Czesław Smutnicki 1 Od r. 2004 występuje pod nazwą Instytut Informatyki, Automatyki i Robotyki PWr Część I STEROWANIE I OPTYMALIZACJA 1 Zagadnienie kolejnościowe gniazdowe z ograniczeniami „bez czekania”. Podejście genetyczne (GA) Mariusz Makuchowski Konstruktorzy systemów - inżynierskich, komputerowych jak też ekonomicznych - mogą tylko podziwiać odporność, wydajność i łatwość przystosowania się systemów biologicznych. Zdolność do regeneracji, samosterowania i reprodukcji, będącą regułą w świecie biologii, jest prawie nieobecna w świecie najbardziej nawet zaawansowanej techniki. David E. Goldberg Jednym z najdłużej i najintensywniej analizowanych problemów w teorii szeregowania jest problem gniazdowy z kryterium będącym momentem zakończenia wykonywania wszystkich zadań. Problem ten analizowany jest od lat siedemdziesiątych, aż po dzień dzisiejszy [6]. Waga tego zagadnienia wynika zarówno z jego praktycznych jak i teoretycznych własności. Z praktycznej strony modeluje on dużą klasę rzeczywistych procesów przemysłowych, natomiast z teoretycznego punktu widzenia należy on do klasy problemów NP-trudnych [14]. Uwzględnienie dodatkowych ograniczeń występujących w przemyśle takich jak czasy transportu, bufory między maszynami czy ograniczony czas czekania zadań w kolejkach pomiędzy stanowiskami, generuje nowe klasy problemów szeregowania. Jednym z takich problemów, analizowany w bieżącym rozdziale, jest problem gniazdowy z ograniczeniami bez czekania. Problem ten różni się od swego klasycznego odpowiednika (przez problem klasyczny rozumie się problem gniazdowy bez dodatkowych ograniczeń) wymogiem rozpoczęcia wykonywania operacji dokładnie w chwili zakończenia wykonywania się poprzednika technologicznego. Ograniczenie te najczęściej występują w gałęziach przemysłu w których przerabiany produkt zmienia szybko swoje własności fizyczno-chemiczne np. produkcja leków [9], żywności [4], wytop stali [16] czy wyrób elementów betonowych [3] choć także spotykane są w innych dziedzinach np. testowanie półprzewodników [13] czy systemach komputerowych [10]. W bieżącym rozdziale przedstawiony zostanie pewien samosterujący algorytm genetyczny, dedykowany problemowi gniazdowemu z dodatkowymi ograniczeniami „bez czekania”. Jako kryterium optymalizacji przyjmuje się moment zakończenia wykonywania wszystkich zadań. 12 1.1 Sterowanie i optymalizacja Opis problemu Rozważany problem, w trójpolowej notacji Graham’a [2], oznaczany jest przez J|no − wait|Cmax . Model matematyczny rozważanego problem jest bardzo dobrze znany w literaturze, jednakże ze względnu na jego bazowe znaczenie przedstawiony zostanie poniżej. 1.1.1 Model matematyczny Dany jest zbiór zadań J = {1, 2, . . . , n} które wykonywane są przy pomocy zbioru maszyn M = {1, 2, . . . , m}. Dodatkowo dla każdego zadania j ∈ J dany jest ciąg Ok = (o1k , o2k , . . . , orkk ) zawierający rk operacji P produkcyjnych. Ilość wszystkich operacji w procesie oznaczy przez o = k∈J rk . Operacja l l l ok ∈ Ok , l ∈ {1, 2, . . . , rk }, k ∈ J składa się z pary (mk , pk ) określającej kolejno wykorzystywaną maszynę oraz czas trwania operacji. Ponadto w rozważanym problemie obowiązują następujące trzy typy ograniczeń: (1) kolejnościowe: operacje zadania k należy wykonać w kolejności Ok , (2) synchroniczne: każda maszyna może wykonywać w danej chwili, co najwyżej jedną operację oraz nie można w tym samym czasie wykonywać więcej niż jednej operacji danego zadania, (3) „bez czekania”: każda nie pierwsza operacja danego zadania, musi rozpocząć się dokładnie w momencie zakończenia wykonywania operacji wcześniejszej tego samego zadania. Rozwiązanie klasycznego problemu gniazdowego zdefiniowane jest jako zestaw momentów Skl ≥ 0 rozpoczęcia wykonywania się operacji ok . Jednakże zauważmy, iż w przypadku dodatkowego ograniczenia „bez czekania”, zachodzi zawsze warunek Skl+1 = Skl + plk , l ∈ (1, 2, . . . , rk − 1). (1.1) Z powyższej równości wynika bezpośrednio, że jednoznaczne wyznaczenie terminu rozpoczęcia dowolnej operacji pewnego zadania może zostać dokonane na podstawie momentu rozpoczęcia dowolnej innej operacji tego samego zadania. Niech Sk oznacza moment rozpoczęcia zadania k z definicji równy momentowi rozpoczęcia pierwszej operacji tego zadania, Sk = Sk1 . Jako rozwiązanie problemu gniazdowego z ograniczeniem „bez czekania” przyjmuje się wektor nieujemnych terminów rozpoczęcia zadań, S = (S1 , S2 , . . . , Sn ). Na podstawie wektora S moment rozpoczęcia Skl wykonywania operacji olk można wyznaczyć ze wzoru: Skl = Sk + l−1 X i=1 pik . (1.2) Zagadnienie kolejnościowe gniazdowe ... 13 Rozwiązanie spełniające wszystkie powyższe ograniczenia nazywamy rozwiązaniem dopuszczalnym. Niech Ck oznacza moment zakończenia wykonywania się zadania k, (moment zakończenia wykonywania się wszystkich operacji danego zadania), rk X Ck = S k + pik . (1.3) i=1 Długością Cmax (S) uszeregowania S nazywamy termin wykonania wszystkich zadań: Cmax (S) = max Ck . (1.4) k∈J Problem polega na znalezieniu rozwiązania dopuszczalnego S ∗ o najmniejszej długości uszeregowania Cmax (S ∗ ). 1.1.2 Kodowanie rozwiązania Choć rozwiązaniem rozważanego problemu jest S wektor terminów rozpoczęcia zadań, wektor ten nie będzie zmienną decyzyjną w prezentowanych algorytmach. Wszystkie analizowane rozwiązania będą generowane przez algorytm pośredni zwany dalej procedurą upuchającą, natomiast zmienną decyzyjną będzie parametr sterujący tą procedurą zwany dalej permutacją ładującą. Niech π = (π(1), π(2), . . . , π(n)) oznacza permutację wszystkich n zadań zbioru J (permutacja ładująca). Zbiór wszystkich możliwych permutacji ładujących będziemy oznaczali symbolem Π. Procedura pakująca składa się z n identycznych kroków. W każdym z nich na podstawie uzyskanego już we wcześniejszych krokach rozwiązania częściowego szeregowane jest kolejne zadanie. Szeregowanie pojedynczego zadania k ∈ J oznacza wyznaczenie Sk momentu jego rozpoczęcia. W i-tym kroku szeregowane jest zadanie π(i), tzn. wyznaczana jest możliwie najmniejsza wartość Sπ(i) w taki sposób by tworzone częściowe (lub końcowe w ostatnim kroku) uszeregowanie było rozwiązaniem dopuszczalnym. Podczas tej czynności momenty rozpoczęcia zadań, wyznaczone w wcześniejszych krokach, nie podlegają już żadnym zmianom. Efektywna implementacja procedury upychającej, wymaga zastosowania specyficznego sposobu kodowania bieżącego harmonogramu. Jest nim zestaw m list. Pojedynczym elementem każdej z listy jest parą (początek oraz koniec) momentów określająca przedział czasowy ciągłego wykorzystywania maszyny. Lista l zawiera uporządkowane chronologicznie zestaw wszystkich przedziałów czasowych wykorzystywania maszyny l. Zauważmy teraz, że wyznaczany moment rozpoczęcia wykonywania szeregowanego zadania, jest równy zero lub pewna operacja szeregowanego zadania rozpoczyna się dokładnie w momencie zakończenia innej operacji na tej samej maszynie (zadnie dosunięte jest do lewej strony na osi czasu). Wynika z tego, że w celu znalezienia najmniejszego dopuszczalnego momentu Sk szeregowanego zadania k, należy sprawdzić moment zerowy oraz wszystkie momenty wynikające z rozpoczęcia operacji olk ∈ Ok we wszystkich mometach zwolnienia maszyny mlk . Zwróćmy uwagę na to, że rozpoczęcie 14 Sterowanie i optymalizacja zadania k w najpóźniejszym z analizowanych momentów tworzy zawsze (częściowe lub końcowe) rozwiązanie dopuszczalne. Nie istnieje więc niebezpieczeństwo braku możliwości utworzenia rozwiązania dopuszczalnego. Wynika z tego, że dla każdej możliwej permutacji ładującej odpowiada dokładnie jedno rozwiązanie i jest ono zawsze dopuszczalne. Niech N oznacza największą liczbę operacji w zadaniach danej instancji, N = maxk∈J rk ; o ≤ n · N . Zauważmy teraz że, liczba możliwych momentów rozpoczęcia zadania k wynosi nie więcej niż o · N . Dodatkowo w przypadku, gdy każda z operacji dokładanego zadania k wykonuje się na innej maszynie liczba ta nie przekracza wartość o. Sytuacja ta występuje we wszystkich testowanych przykładach, dlatego analiza złożoności obliczeniowej poszerzona zostanie o ten specyficzny przypadek, mak 6= mbk , 1 ≤ a < b ≤ rk , k ∈ J, (1.5) nazywany dalej przypadkiem szczególnym. Ponadto łatwo można zauważyć, iż w opisanej sytuacji wartość parametru N jest zawsze nie większa niż m; N ≤ m. Efektywny test dopuszczalności uszeregowania, zakłada analizę wszystkich badanych momentów w kolejności chronologicznej. Dla analizowanego momentu Sk i danej operacji olk „wykluczamy” wszystkie przedziały czasowe w liście mlk które kończą się przed Skl momentem rozpoczęcia tej operacji. W celu weryfikacji poprawnego (w sensie narzuconych ograniczeń synchronicznych) położenia czynności olk wystarczy sprawdzić czy pierwszy z pozostawionych przedziałów rozpoczyna się nie wcześniej niż momencie Skl + plk zakończenia wykonywania operacji olk . Podczas testu wszystkich analizowanych momentów przedziały zajętości maszyny (dla danej operacji) testowane są kolejno a ich liczba jest nie większa niż o. Tak więc, w najgorszym przypadku test wszystkich momentów rozpoczęcia zadania, wymaga nie więcej niż o · N analiz przedziałów (zarówno „wykluczanie” jak i sprawdzanie ograniczeń). Dodatkowo w przypadku szczególnym patrz wzór (1.5) liczba ta jest nie większa niż o. Złożoność obliczeniowa jednego kroku procedury upychającej w przypadku ogólnym wynosi zatem O(oN ) = O(nN 2 ). Dlatego cała procedura posiada złożoność O(n2 N 2 ). W przypadku szczególnym złożoność obliczeniowa jednego kroku wynosi O(o) = O(nm) a cała procedura ma złożoność O(n2 m). Przedstawione podejście bazujące na procedurze upychającej charakteryzuje się następującymi własnościami: (1) dla każdej permutacji ładującej, generowane jest zawsze jedno rozwiązanie dopuszczalne, (2) generowane rozwiązania charakteryzują się bardzo wysoką jakością w sensie wartości funkcji celu, (3) ilość różnych permutacji ładujących jest znacznie mniejsza niż liczba wszystkich rozwiązań aktywnych, (4) różne permutacje ładujące mogą generować te same rozwiązania, Zagadnienie kolejnościowe gniazdowe ... 15 Rysunek 1.1. Harmonogram zadań, a) najlepsze rozwiązanie uzyskane funkcją upychającą, b) rozwiązanie optymalne (5) możliwości opuszczenia rozwiązania optymalnego nawet w przypadku analizy wszystkich możliwych permutacji ładujących. Rysunek 1.1 przedstawia instancję dla której nie istnieje permutacja ładująca generująca (przy pomocy procedury upychającej) rozwiązanie optymalne. W części „a” rysunku 1.1 przedstawione jest najlepsze uszeregowanie generowane przez procedurę upychającą, natomiast w część „b” pokazuje uszeregowanie optymalne. Dodatkowe numeryczne badania oceniające przydatność procedury upychającej zawarte są w pracy [7]. Praca [7] proponuje ponadto stosowanie obok procedury upychającej także jej symetrycznego odpowiednika, co znacznie poprawia efektywność algorytmu. Spowodowane jest faktem iż niektóre z instancji, trudne do rozwiązania, stają się instancjami znacznie łatwiejszymi gdy przyjrzymy się ich symetrycznym lustrzanym odpowiednikom. Rozwiązania generowane oryginalną procedurą upychającą tworzą klasę rozwiązań lewoaktywnych, natomiast rozwiązania generowane symetryczną wersją tej procedury tworzą klasę rozwiązań prawo-aktywnych. Ponieważ zmienną decyzyjną jest permutacja ładująca, sterująca niebanalną procedurą upychającą, trudno jest na wyselekcjonowanie pewnych jej cech i własności decydujących o jakości rozwiązania końcowego (np. własności blokowych). Jest więc to idealny przykład problemu dla zastosowania algorytmu genetycznego, ponieważ algorytmy tego typu nie wykorzystują wcale (lub sporadycznie) specyficzne własności problemu i bazują głównie na wartości funkcji celu badanych rozwiązań. 1.1.3 Przykłady testowe Wszystkie eksperymenty numeryczne przedstawione w tej pracy przeprowadzone zostały na 40 literaturowych przykładach testowych la01-la40. Przykłady te de- 16 Sterowanie i optymalizacja dykowane są klasycznemu problemwi gniazdowemu i uważane są przez badaczy za wyjątkowo trudne. Oczywiście w literaturze występuje także wiele innych zestawów trudnych przykładów testowych, jednakże zestaw zaproponowany przez Lawrence’a wydaje się być wystarczająco duży i zróżnicowany. Jest on podzielony na osiem grupy po pięć instancji każda. W każdej grupie wszystkie przykłady charakteryzują się jednakowym rozmiarem a dokładniej jednakową liczbą zadań n, maszyn m i operacji o. Ponadto cechą charakterystyczną tych przykładów jest to, że liczba wszystkich operacji wynosi dokładnie o = n · m oraz każde zadanie składa się dokładnie z m operacji rk = m, k ∈ J, wykonywanych na różnych maszynach spełniając warunek (1.5). W dalszej części rozdziału poszczególne grupy oznaczane są poprzez podanie rozmiaru instancji w nich zawartych n × m. Prezentowane w tabelach wyniki odnoszące się do całych grup są wartościami średnimi odpowiednich wartości otrzymanych dla wszystkich przykładów z danej grupy. 1.2 Algorytm genetyczny Ogólna idea działania algorytmu genetycznego opisana jest w pracy [5] i naśladuje ona Darwinowską teorię ewolucji wstępującą w świecie biologii. Algorytm taki symuluje zarówno środowisko jak i życie wirtualnych osobników. Każdy z osobników identyfikowany jest z jednym rozwiązaniem, a jakość przystosowania oceniana się na podstawie wartości funkcji celu. Po zakończeniu symulacji danej liczby pokoleń algorytm kończy swe działanie, a jako rozwiązanie końcowe przyjmuje się rozwiązanie odpowiadające najlepszemu osobnikowi który pojawił się podczas całej symulacji. Właściwie dobrane parametry algorytmu genetycznego w szczególności odpowiednio dobrany mechanizm dziedziczenia wraz z selekcją promującą osobniki o żądanej cesze powodują iż w symulowanym świecie pojawia się ewolucja. Ewolucja rozumiana jest tutaj jako tendencja do generowania pokoleń z coraz lepiej przystosowanymi osobnikami. Zmieniając definicję przystosowania czyli sposobu oceny danego osobnika możemy dokonać wyboru kierunku ewolucji. W praktyce wartość przystosowania danego osobnika zależy od wartości optymalizowanej funkcji celu odpowiadającego mu rozwiązania. W życiu pojedynczego pokolenia, osobniki najsłabiej przystosowane giną zazwyczaj bezpotomnie, natomiast najlepiej przystosowane stają się rodzicami nowego pokolenia. Nowo powstałe osobniki dziedziczą geny (pewne atrybuty rozwiązań) swoich rodziców. Dzięki temu powstałe rozwiązania są kombinacją najlepszych rozwiązań pokolenia wcześniejszego. W celu uniknięcia zwyrodnienia pokolenia w którym wszystkie nowo generowane osobniki są do siebie bardzo podobne, stosuje się niewielką ich mutację. Dzięki mutacji algorytm bada coraz to nowe obszary przestrzeni rozwiązań co sprzyja opuszczaniu minimów lokalnych oraz umożliwia wygenerowanie osobnika o pewnej zatraconej w całej populacji cesze. W każdym algorytmie genetycznym możemy więc wyróżnić następujące bazowe elementy: (1) generacja populacji startowej: generacja osobników pierwszego pokolenia, Zagadnienie kolejnościowe gniazdowe ... 17 (2) selekcja: wybór rodziców z całego pokolenia (3) krzyżowanie: generowanie nowych osobników na podstawie materiału genetycznego rodziców (4) mutacja: wprowadzenie niewielkich zmian w materiale genetycznym nowo powstałych osobników (5) kryterium stopu: określa warunek zatrzymujący pracę algorytmu (najczęściej jest maksymalna liczba symulowanych pokoleń lub czas pracy algorytmu). Sprecyzowanie wymienionych elementów algorytmu GA, jest podstawowym problemem z jakim musi poradzić sobie projektant danej implementacji algorytmu ewolucyjnego. W dalszej części pracy proponuję uniwersalny sposób doboru najbardziej korzystnych wariantów poszczególnych elementów. 1.2.1 Poziom mutacji Zanim przejdę do omówienia poszczególnych metod samostrojenia algorytmu genetycznego wprowadzę najpierw pojęcie poziomu mutacji. Byt ten jest bezpośrednio powiązany z dobrze znanym z literatury prawdopodobieństwem mutacji. Różnice pomiędzy nimi mogą wydawać się subtelne jednakże są bardzo istotne ze względu na badania przeprowadzane w dalszej części rozdziału. Poziom mutacji L określa z definicji względną liczbę mutacji wykonywanych w całym pokoleniu, (liczba wszystkich mutacji = L · liczba wszystkich genów), natomiast prawdopodobieństwo mutacji P z definicji jest prawdopodobieństwem tego, że pojedynczy gen zostanie zmutowany. Zauważmy teraz, że w zależności od sposobu kodowania rozwiązania i stosowanego operatora mutacji, mutowany gen może zmieniać wartość w bardzo ograniczony sposób, podczas gdy w losowym rozwiązaniu wartość tego genu może przyjmować wartości z znacznie liczniejszego zbioru. W takim przypadku nawet dla P = 1 (każdy gen zostaje zmutowany) istnieje duże podobieństwo pomiędzy genotypem pierwotnym a zmutowanym. Przykładem powyższego zjawiska jest sytuacja w którym cały genotyp składa się z jednego chromosomu będącego permutacją. Jeżeli w takim przypadku mutacja polega na zamianie w permutacji miejscami dwóch sąsiednich elementów, wówczas nawet podczas mutacji każdego genu istnieje duże podobieństwo permutacji pierwotnej x i permutacji zmutowanej y. Dowodem tego jest odległość pomiędzy tymi permutacjami d(x, y), rozumiana jako najmniejsza liczba zamian sąsiednich potrzebna do przeprowadzenia permutacji x w permutację y. Z definicji odległości oraz ilości wykonanych mutacji równej ilości elementów w permutacji, maksymalna odległość pomiędzy x i y może wynosić co najwyżej n; d(x, y) ≤ n, podczas gdy średnia odległość pomiędzy losową permutacją z a permutacją x wynosi AV E(d(x, z)) = n · (n − 1)/4, przy czym największa możliwa odległość pomiędzy permutacjami jest dwa razy większa. Oznacza to, że permutacja x i otrzymana poprzez mutację każdego genu permutacja y są do siebie (w sensie odległości d) podobne. 18 Sterowanie i optymalizacja 1 P 0,8 0,6 g = 10 0,4 g = 10 9 0,2 L 0 0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2 Rysunek 1.2. Zależność wartości P w stosunku od poziomu mutacji L i ilości genów w pokoleniu g, dla k = 1 Z powyższej własności wynika bezpośrednio, że mutowanie zmutowanych już wcześniej genów, powoduje wprowadzanie jeszcze większych zakłóceń w genotypie osobnika. Fakt ten w żaden sposób nie jest uwzględniany przez parametr P który informuje o prawdopodobieństwie przynajmniej jednokrotnej mutacji genu. Przeciwnie poziom mutacji o wartości większej niż 1 świadczy, że statystycznie w jednym osobniku dokonuje się więcej mutacji niż posiada on genów. W praktyce jednak optymalny poziom mutacji L jest na poziomie do kilku procent i w przybliżeniu jest równy P , a rozważania dla wartości L zbliżających się do 1 i większych mają charakter tylko teoretyczny. Przy założeniu, iż każda mutacja zmienia dokładnie k genów, można napisać zależność prawdopodobieństwa mutacji P od ilości g wszystkich genów w pokoleniu i L poziomu mutacji, µ P (η, L) = 1 − g−k g ¶g·L . (1.6) Zależność tą dla k = 1 oraz wybranych wartości g (wyjątkowo małej g = 10 i wyjątkowo dużej g = 109 ) przedstawia rysunek 1.2. Z przedstawionego wykresu widać, iż przy ustalonym poziomie mutacji L, ilość genów w pokoleniu nie ma dużego wpływu na wartość P . Ponadto dla małego poziomu mutacji (takie poziomy stosowane są w poprawnie wysterowanych algorytmach) jego wartość odpowiada niemal dokładnie prawdopodobieństwu mutacji P ≈ L, L < 0, 1. Dodatkową subiektywną zaletą uzależnienia testowanych w dalszej części parametrów algorytmu od poziomu mutacji zamiast od prawdopodobieństwa jest duża większa przejrzystość generowanych charakterystyk. Zagadnienie kolejnościowe gniazdowe ... 1.2.2 19 Wybór operatora mutacji Na wstępnie chciałbym przypomnieć, że algorytmy genetyczne nie pracują bezpośrednio na rozwiązaniach tylko na ich zakodowanych reprezentacjach (kodach). Istnieje więc potencjalna możliwość w której osobniki różniące się kodem reprezentują dokładnie te same rozwiązanie. Tłumacząc to na język biologii można powiedzieć, że istnieją różne genotypy którym odpowiada dokładnie ten sam fenotyp. W takim przypadku możliwa jest mutacja w której zmutowany osobnik mimo zmiany kodu, generuje rozwiązanie dokładnie te samo co osobnik pierwotny. Taką mutację będę nazywał mutacją jałową. Ponadto, niech ξ oznacza efektywność operatora z definicji równą prawdopodobieństwu, że losowo wykonana mutacja nie będzie mutacją jałową. Pomimo, iż mutacja w algorytmach genetycznych zachodzi sporadycznie, ma ona ogromne znaczenie dla efektywności całego algorytmu. Podstawowe cele mutacji to: (1) tworzenie osobników różniących się częściowo ale w istotny sposób od rodziców, co umożliwia przeniesienie poszukiwań w coraz to nowe część przestrzeni rozwiązań, (2) utworzenie osobnika posiadającego cechę niewystępującą w pokoleniu, co umożliwia znalezienie rozwiązania lokalnie optymalnego nawet w przypadku zatracenia się w pokoleniu pewnej cechy tego rozwiązania, (3) przeciwdziałanie stagnacji obliczeń, to znaczy sytuacji w której całe pokolenie zdominowane jest przez jeden rodzaj mało różniących się między sobą osobników. Aby zmutowany osobnik miał dużą szansę zostania rodzicem (warunek niezbędny do osiągnięcia celu 1), wartość jego przystosowania nie może być dużo gorsza niż pozostałych rozwiązań w pokoleniu. Wynika z tego, że mutacja powinna generować osobniki istotnie różniące się od osobnika pierwotnego (w sensie kodu), jednocześnie wartość przystosowania zmutowanych osobników powinna być podobna do wartości przystosowania osobnika mutowanego. Zróżnicowanie funkcji przystosowania mutowanych osobników możemy zmierzyć tak zwaną autokorelacją przestrzeni rozwiązań [15]. Definiowana jest ona dla danej przestrzeni Π, funkcji celu C(π), π ∈ Π i miary odległości d(x, y), x, y ∈ Π, ³¡ ¢2 ´ AV E C(x) − C(y) d(x,y)=d ³¡ %(d) = 1 − , (1.7) ¢2 ´ AV E C(x) − C(y) gdzie AV E((C(x) − C(y))2 )d(x,y)=d oznacza wartość średnią (C(x) − C(y))2 wszystkich par x, y ∈ Π takich, że odległość d(x, y) wynosi dokładnie d, natomiast AV E((C(x) − C(y))2 ) oznacza wartość analogiczną dla wszystkich możliwych par. Wartość %(d) zmienia się od 0 do 1 i określa korelację rozwiązań oddalonych od siebie o d. 20 Sterowanie i optymalizacja Z naszego punktu widzenia para osobników x, y ∈ Π, x 6= y gdzie y powstał z mutacji osobnika x, oddalona jest od siebie o 1 w mierze odpowiadającej danej mutacji (miarę tę można zdefiniować jako minimalną liczbę mutacji transformującą osobnika x w osobnika y). Wynika z tego, że interesujące nas zróżnicowanie funkcji przystosowania mutowanych osobników jest ściśle związane z wartością %(1) odpowiedniej miary odległości. Wartość %(1) bliska 1 oznacza małe zróżnicowanie, w sensie wartości funkcji celu, mutowanych osobników względem osobnika pierwotnego. Przeciwnie wartość %(1) bliska 0 oznacza, brak relacji wartości funkcji celu pomiędzy zmutowanymi rozwiązaniami a rozwiązaniem pierwotnym. W celu wyznaczenia przybliżonej wartości %(1), oznaczanej dalej przez % proponuje się wyznaczyć zbiór X = {x1 , x2 , . . .} losowych osobników oraz zbiór Y = {y1 , y2 , . . .} mutantów, gdzie yi powstał porzez zmutowanie osobnika xi . Wartość % można teraz wyznaczyć poprzez: ³¡ ¢2 ´ AV E C(xi ) − C(yi ) %(1) ≈ % = 1 − ³ (1.8) ¡ ¢ ¡ ¢2 ´ . 2 AV E C(xi )2 − AV E C(xi ) Zauważmy, że mała efektywność skutecznie zmniejsza chropowatość przestrzeni rozwiązań (zwiększa współczynnik %). Jako jedno z kryterium wyboru operatora mutacji, proponuje się przyjąć zmodyfikowną szorstkość przestrzeni rozwiązań danego operatora zdefiniowaną jako %∗ . Oblicza ją się analogicznie jak wartość % z tą różnicą, że nie uwzględnia się sytuacji w których pary osobników xi i yi reprezentują te same rozwiązania (posiadają te same fenotypy). Operatory o dużej wartości %∗ mają dużą szansę na to, że stworzone przez nie osobniki (reprezentujące zupełnie nowe rozwiązania) zakwalifikują się do puli rodzicielskiej. Oznacza to, że operatory te skutecznie będą realizować powierzone im zadania. Podsumowując, z zestawu operatorów mutacji wśród operatorów o największych wartościach parametru ξ należy wybrać ten operator dla którego wartość %∗ jest największa. Dodatkową sugestią jest aby wyboru operatora dokonać jednorazowo przed uruchomieniem wysterowanego algorytmu. W przypadku przeciwnym, to jest zmiany operatora (on-line) w trakcie pracy algorytmu należy pamiętać także o zmianie wartość prawdopodobieństwa mutacji. Jest to potrzebne ze względu na to, iż dla różnych operatorów optymalna wartość prawdopodobieństwa mutacji jest różna. Pewnym ułatwieniem jest zastosowanie automatycznego doboru poziomu mutacji opisanego w dalszej części pracy. Badania numeryczne Wszystkie prezentowane testy przeprowadzone został na komputerze klasy PC wyposażonym w procesor Athlon 2000+ (1667MHz) w środowisku wielozadaniowym Windows XP. Wszystkie opisane algorytmy zostały zaprogramowanie w języku C++ i skompilowane przez Dev C++ w wersji 4.9.9.1. Ponieważ zmienną decyzyjną jest permutacja (konkretnie permutacja ładująca) do przetestowania wybrałem następujące cztery powszechnie stosowane (dla permutacji) operatory mutacji: Zagadnienie kolejnościowe gniazdowe ... 21 Tablica 1.1. Średnia wartości parametrów %, %∗ oraz ξ dla testowanych operatorów mutacji Grupa n×m 10 × 5 15 × 5 20 × 5 10 × 10 15 × 10 20 × 10 30 × 10 15 × 15 wszystkie % %∗ ξ SSw Swp Ins Inv SSw Swp Ins Inv SSw Swp Ins Inv 0.56 0.66 0.70 0.55 0.62 0.64 0.68 0.60 0.37 0.41 0.44 0.30 0.35 0.35 0.39 0.30 0.43 0.46 0.51 0.37 0.39 0.41 0.45 0.34 0.31 0.34 0.38 0.29 0.29 0.34 0.32 0.30 0.63 0.37 0.42 0.32 0.42 0.48 0.54 0.36 0.43 0.44 0.45 0.39 0.29 0.32 0.42 0.24 0.28 0.33 0.35 0.27 0.36 0.39 0.44 0.27 0.32 0.35 0.36 0.30 0.24 0.28 0.33 0.22 0.24 0.27 0.27 0.25 0.44 0.31 0.35 0.26 0.72 0.64 0.61 0.70 0.66 0.61 0.58 0.69 0.92 0.93 0.94 0.92 0.94 0.94 0.96 0.94 0.90 0.89 0.88 0.88 0.89 0.89 0.89 0.90 0.93 0.94 0.94 0.93 0.94 0.95 0.96 0.95 0.65 0.94 0.89 0.94 (1) small swap: polegający na zamianie losowych dwóch sąsiednich elementów permutacji, oznaczany dalej w skrócie przez SSw, (2) swap: polegający na zamianie miejscami dwóch różnych losowych elementów permutacji, oznaczany dalej w skrócie prze Swp, (3) insert: polegający na wyciągnięciu losowego elementu z permutacji i ponownym włożeniu go na losową pozycję (z wykluczeniem pierwotnej pozycji), oznaczany dalej w skrócie przez Ins, (4) invert: polegający na odwróceniu kolejności elementów losowej części permutacji, oznaczany dalej w skrócie przez Inv. Pierwszy z testów polega na zbadaniu chropowatości %, zmodyfikowanej chropowatości %∗ oraz efektywności ξ wymienionych operatorów mutacji. Średnie wartości otrzymanych parametrów dla poszczególnych grup przykładów przedstawiono w tabeli 1.1. Po dokładnej analizie danych można zauważyć szereg następujący prawidłowości. Wraz ze wzrostem n liczby zadań wartość % ma tendencję malejącą (dla wszystkich badanych operatorów). Dokładnie przeciwny wpływ na ten parametr wywiera m liczba maszyn w problemie, wraz z jej wzrostem wartość % także rośnie. Jednakże decydujący wpływ na parametr % ma rodzaj zastosowanego operatora mutacji. Najbardziej wyróżniającym się operatorem jest SSw dla którego generowana przestrzeń rozwiązań jest dużo bardziej gładka (duże %) niż w przypadku pozostałych operatorów. Spowodowane jest to dwoma czynnikami: (1) operator SSw często zmienia tylko genotyp osobnika nie zmieniając jego fenotypu (wskazuje na to mała wartość ξ), (2) operator SSw jest szczególnym przypadkiem (możliwie najmniejszą wersją) każdego z pozostałych trzech operatorów. Kolejność wszystkich operatorów względem chropowatości generowanej przestrzeni rozwiązań (według nierosnącego %) to SSw, Ins, Swp i Inv. 22 Sterowanie i optymalizacja SSw 10 Swp Ins Inv ρ [%] 5 0 L -5 0,0001 0,001 0,01 0,1 1 10 100 Rysunek 1.3. Zależność średniej jakość % w stosunku do poziomu mutacji L dla testowanych operatorów mutacji Analiza wartości zmodyfikowanych chropowatości %∗ pokazuje dużą dodatnią korelację z wartością %. Wszystkie własności zaobserwowane dla % odnoszą się także do wartości zmodyfikowanej %∗ . Jednakże tym razem, wpływ operatora mutacji ma nieco mniejsze znaczenie a wartość %∗ operatora SSw nie odbiega już tak bardzo od analogicznej wartości pozostałych operatorów. Tłumaczy to bezpośrednio z fakt, iż zmodyfikowana wartość chropowatości przestrzeni nie zależy (w przeciwieństwie do wartości niezmodyfikowanej) od efektywności operatora ξ. Analizując wartości efektywności poszczególnych operatorów można zauważyć, że wartość ξ mocno zależy od wybranego operatora. Operator SSw jest niezwykle mało efektywny, średnio aż 35% mutacji nie zmienia w najmniejszym stopniu rozwiązania (pomimo zmian w permutacji ładującej odpowiadające mu rozwiązanie nie ulega zmianie). Drugi z testów pokazuje wpływ wartości poziomu mutacji danego operatora na jakość generowanych rozwiązań. Jakość rozwiązania rozumiana jest tutaj jako błąd względny otrzymanego rozwiązania x względem rozwiązania referencyjnego x0 , Cmax (x) − Cmax (x0 ) · 100%. (1.9) ρ= Cmax (x0 ) Jako rozwiązanie referencyjne przyjmuje się rozwiązanie utrzymane algorytmem GASA opisanym w pracy [12]. Testowany algorytm uruchmiany był z następującymi parametrami: liczba symulowanych pokoleń - 1000, liczba osobników w pokoleniu - 50, operator krzyżowania - P M X, selekcja - metoda ruletki. Wykres na rysunku 1.3 przedstawia średnią wartość ρ jakości generowanych rozwiązań uzyskaną dla różnych wartości L poziomów mutacji wszystkich te- Zagadnienie kolejnościowe gniazdowe ... ρ[%] 23 grupa: 10 x 5 ρ[%] 10 10 0 0 grupa: 10 x 10 L L -10 -10 0,0001 0,01 1 100 0,0001 0,01 grupa: 15 x 5 1 100 grupa: 15 x 10 10 10 ρ[%] ρ[%] 0 0 L L -10 -10 0,0001 ρ[%] 0,01 1 100 0,0001 ρ[%] grupa: 20 x 5 10 10 0 0 0,0001 0,01 ρ[%] 1 1 grupa: 20 x 10 -10 100 0,0001 0,01 ρ[%] grupa: 15 x 15 10 10 0 0 1 100 grupa: 30 x 10 L L -10 -10 0,0001 100 L L -10 0,01 0,01 1 100 0,0001 0,01 1 100 Rysunek 1.4. Zależność średniej jakość % testowanych operatora torów w stosunku do poziomu mutacji L dla poszczególnych grup przykładów 24 Sterowanie i optymalizacja stowanych operatorów mutacji. Analogicznie na rysunku 1.4 przedstawiono przebieg wartości ρ uzyskany z kolejnych 8 grup. Oznaczenia na wszystkich wykresach w rysunku 1.4 są identyczne jak na wykresie 1.3 a pominięte zostały w celu zachowania większej przejrzystości obrazu. Ocena wyników Z wykresu zamieszczonego na rysunku 1.3 wynika, że szeregując operatory mutacji według średniej jakości ρ (przy optymalnym dla danego operatora poziomie mutacji) uzyskujemy następującą kolejność: SSw, Ins, Swp, Inv. Zauważmy, że sekwencja ta została już wcześniej wytypowana na podstawie parametru %∗ . Ponadto dla poszczególnych grup (rysunek 1.4) sytuacja ta ulega tylko niewielkim zaburzeniom. Drugim narzucającym się spostrzeżeniem jest fakt, iż dla przykładów w których n = 10 (przykłady te charakteryzują się stosunkowo małą przestrzenią rozwiązań) najmniejsza osiągana wartość ρ jest tylko nieznacznie mniejsze niż w przypadku wartości ρ odpowiadającej dużym wartością poziomu L. Spowodowane jest to bardzo małą przestrzenią rozwiązań, w której „algorytmy losowe” (sprawdzające stosunkowo dużą, zadaną, ilość rozwiązań losowych) radzą sobie całkiem nieźle oraz faktem iż algorytm genetyczny przy bardzo dużym poziomie mutacji staje się właśnie takim losowym algorytmem. Można więc powiedzieć, że zastosowanie w analizowanym problemie podejścia bazującego na algorytmie pakującym, tak silnie redukującego przestrzeń rozwiązań z (n!)m do n! spowodowało, iż tylko w grupach 20 × 5, 20 × 10, 15 × 15, 30 × 10, zawierających większe instancje dobrze uwidaczniają się wszystkie własności algorytmów genetycznych. Trzecim spostrzeżeniem jest fakt, iż rodzaj zastosowanego operatora mutacji nie ma decydującego wpływu na efektywność algorytmu. Z wykresów 1.3 i 1.4 wynika, że dla optymalnych poziomów mutacji (innego dla każdego operatora) jakość generowanych rozwiązań jest zbliżona. Jednocześnie zauważyć można, że źle dobrany poziom mutacji zdecydowanie obniża jakość znajdowanych rozwiązań. Dlatego w dalszej części pracy przedstawiony jest pewien sposób jego automatycznego doboru. Z przedstawionych tu spostrzeżeń, w szczególności oceny operatorów mutacji które są prawie niezależne od instancji oraz stosunkowo małego wpływu operatora mutacji na efektywność algorytmu wynika, iż nie ma potrzeby automatycznego doboru operatora metodą „on-line” (na bieżąco podczas pracy algorytmu). Ostatecznie dla konkretnego algorytmu genetycznego dedykowanego danemu problemowi proponuję przeprowadzenie jednego wstępnego badania „off-line” w wyniku którego na podstawie efektywności ξ oraz zmodyfikowanej chropowatości %∗ wybierze się jeden, potencjalnie najlepszy operator mutacji, niezmiennie stosowany przez cały przebieg algorytmu. Zagadnienie kolejnościowe gniazdowe ... L = 0,0002 5000 25 L = 0,0100 L = 0,5000 f. celu 4800 4600 4400 4200 nr. pokolenia 4000 0 100 200 300 400 500 600 700 800 900 1000 Rysunek 1.5. Przebieg przykładowego algorytmu genetycznego dla różnych wartości poziomu mutacji. Przykład LA31 1.2.3 Dobór prawdopodobieństwa mutacji Z badań przeprowadzonych w wcześniejszym punkcie, niektóre z spostrzeżeń dotyczą bezpośrednio poziomu mutacji. Najważniejszym z nich jest fakt, iż wartość poziomu mutacji ma decydujący wpływ na efektywność algorytmu. Poza tym, optymalna wartość poziomu mutacji zależy od stosowanego operatora jak i od danych problemu (patrz rysunek 1.4). Relacje optymalnych wartości poziomu mutacji różnych operatorów są proste do przewidzenia, to znaczy wraz z wzrostem efektywności stosowanego operatora, optymalny poziom mutacji spada oraz wraz z wzrostem chropowatości krajobrazu przestrzeni danego operatora (zmniejszaniem %) wartość optymalnego poziomu mutacji także nieznacznie spada. W celu dokładniejszego zrozumienia zjawisk zachodzących w algorytmie genetycznym na rysunku 1.5 przedstawiono przebieg takiego algorytmu o zbyt małym, względnie dobrym i zbyt dużym poziomie mutacji. Przy zbyt małej wartości poziomu mutacji w algorytmie GA następuje stagnacja obliczeń (patrz pierwszy przebieg na rys. 1.5). Dzieje się tak dlatego, ponieważ pokolenie zdominowane jest przez tak zwane super osobniki, dominujące zarówno jakościowo jak i ilościowo. Osobniki te są praktycznie identyczne, co najwyżej różnią między sobą w sposób nieistotny dla rozwiązania i kryterium funkcji celu. Super osobniki są na tyle dobre w sensie wartości funkcji przystosowania iż, często dochodzi do krzyżowania się ich między sobą, tworząc nowego super osobnika w następnym pokoleniu. Wszystkie pozostałe krzyżowania w pokoleniu generują potomstwo słabsze w sensie wartości funkcji przystosowania, w konsekwencji po selekcji naturalnej nowe pokolenie zdominowane jest znowu przez super osobniki identyczne jak w pokoleniu wcześniejszym. W tej sytuacji, 26 Sterowanie i optymalizacja możliwe są tylko trzy dalsze scenariusze symulowanego życia: (1) pewien zmutowany osobnik, będzie lepiej przestosowany niż super osobniki, (ze względu na to iż super osobniki charakteryzują się bardzo wysoką funkcją przystosowania oraz faktem nielicznych mutacji w pokoleniu wariant ten jest mało prawdopodobny), (2) w nowym pokoleniu nie pojawią się super osobniki (wariant ten jest także mało prawdopodobny, gdyż istnieje duża szansa wzięcia do krzyżowania dwóch super osobników), (3) nowo powstałe pokolenie będzie tak samo zdominowane przez super osobniki, jak pokolenie wcześniejsze (wariant najbardziej prawdopodobny). Nastąpiła więc stagnacja obliczeń, algorytm wpadł w pewien rodzaj optimum lokalnego z bardzo małymi szansami na jego opuszczenie. Przy zbyt wysokiej wartości poziomu mutacji, algorytm genetyczny wykazuje cechy algorytmu sprawdzającego losowe rozwiązania (patrz trzeci przebieg na rys. 1.5). Jest tak dlatego, iż w nowo powstających osobnikach zachodzi stosunkowo duża liczba mutacji co skutkuje tym, że zatraca się większość cechy przeniesionych z rodziców. Przestaje więc działać mechanizm dziedziczenia, a w jego miejscu pojawia się generowanie losowych rozwiązań. W tej sytuacji nowo powstające pokolenie nie jest coraz lepszą odmianą osobników z wcześniejszych pokoleń, lecz zbiorem losowych rozwiązań mających niewiele wspólnego z wcześniejszymi pokoleniami. Sytuację w której poziom mutacji jest prawidłowy, czyli na tyle duży by nie zaszło zjawisko stagnacji obliczeń oraz na tyle mały by nowo powstające osobniki dziedziczyły cechy swoich rodziców, przedstwiony jest w drugim przebiegu rysunku 1.5. Na wykresie tym widać podstawowe zjawiska zachodzące w poprawnie wysterowanym algorytmie genetycznym. Są nim szybkie „schodzenie” algorytmu do minimum lokalnego oraz efektywna dywersyfikacja obliczeń uwidaczniająca się opuszczaniem znalezionych minimów lokalnych. Ponieważ dokładne wyznaczenie optymalnej wartości poziomu mutacji w sposób analityczny na dzisiejszym poziomie wiedzy jest niemożliwe, jedyna metoda jego wyznaczenia to eksperymenty numeryczne. A ponieważ dla różnych instancji optymalna wartość poziomu mutacji jest różna, dobór właściwego poziomu należ dokonywać dla każdego przykładu z osobna lub zmieniać go na bieżąco podczas pracy (on-line) obserwując przebieg sterowanego algorytmu. Niemniej w niniejszej pracy proponowany sposób mutacji nieznacznie odbiega od jego klasycznego pierwowzoru. Dokładniej, zamiast dokonywać mutacji genów z ustalonym (na stałe lub dynamicznie zmienianym) prawdopodobieństwem, proponuje się wstępną analizę populacji a następnie na jej podstawie wyznaczonenie osobników które należy zmutować. Metoda ta nie tylko dobiera automatycznie ilość mutacji w pokoleniu, ale także wskazuje osobniki które należy poddać mutacji. Proponowana strategia bazuje na dwóch prostych spostrzeżeniach: (1) W przypadku, gdy cała populacja jest mocno zróżnicowana nie ma potrzeby mutowania jej osobników. Mutacja w takim przypadku pozbawia ich tylko odziedziczonych cech. (2) W przypadku, pojawienia się w pokoleniu kilku super osobników, należy dokonać ich mutacji. Taka mutacja zapewnia uniknięcia stagnacji obliczeń Zagadnienie kolejnościowe gniazdowe ... 27 poprzez eliminację identycznych osobników. Ponadto umożliwia szybkie dojście do optimum lokalnego (w przypadku gdy super osobnicy reprezentują rozwiązanie bliskie rozwiązaniu lokalnie optymalnemu. Ponadto umożliwia łatwe opuszczenie minimum lokalnego ponieważ to super osobnicy poddawani są mutacji. Strategia postępowania wydaje się więc oczywista. Należy zidentyfikować wszystkie klony, a następnie dokonać ich mutacji. Klonem nazywamy osobnika podobnego w pewnym sensie do innego osobnika istniejącego w danym pokoleniu. Takie podejście choć intuicyjne nie ma swojego odpowiednika w świecie przyrody. Przy implementacji proponowanej strategii, do rozstrzygnięcia pozostaje między innymi sposób detekcji klonów. W rozważanym problemie zastosowanie kodowania rozwiązania w postaci permutacji ładującej, skutecznie utrudnia efektywne porównanie rozwiązań (porównaie na podstawie permutacji ładującej bez wywoływania procedury upychającej). Dlatego do detekcji klonów zastosowano najprostrzą metodę to znaczy poprzez porównywanie wartości funkcji przystosowania osobników. Osobnicy o tej samej wartości funkcji przystosowania traktowani są jak klony. Ponadto klony wybrane do mutacji, powinny zostać zmutowane efektywnie, to znaczy w taki sposób by mutacja rzeczywiście zmieniła nie tylko genotyp ale także fenotyp osobnika. W tym celu można przykładowo kontrolować zmianę wartość funkcji przystosowania mutowanych osobników. Efektami ubocznym wynikającym z wykrywania klonów oraz testowaniem zmiany mutowanego osobnika na podstawie wartości funkcji celu odpowiadających im rozwiązań jest: możliwość stwierdzenia identyczności osobników mimo różnych fenotypów oraz dodatkowe bardzo czasochłonne obliczenia wyznaczające wartość funkcji celu zmutowanego klona. Pierwsze z wymienionych zjawisk zachodzi stosunkowo rzadko i nie powoduje żadnych poważnych zaburzeń w algorytmie, natomiast drugie zdecydowanie spowalnia jego pracę. Zaproponowana wcześniej strategia mutacji osobnika polegająca na jego mutacji, aż do zmiany wartości funkcji celu, jest bardzo wolna i zostaje nazwana strategią F U LL. Przyśpieszenie pracy algorytmu, można dokonać poprzez jej redukcję do strategii, nazwanej SIN GLE, polegającej na jednokrotnej mutacji i jednokrotnego obliczenia zmodyfikowanej wartości funkcji przystosowania (bez względu na to czy nastąpiła zmiana jej wartości czy też nie). Ostatnią strategią praktycznie niespowalniającą pracę algorytmu jest strategia BLIN D polegająca na jednokrotnej mutacji danego osobnika bez ponownego wyliczenia wartości funkcji przystosowania. Tak zmutowany osobnik podlega selekcji według pierwotnej wartości funkcji przystosowania. Badania numeryczne Pierwszy z testów polega na wygenerowaniu przebiegu algorytmu genetycznego, to znaczy wykreśleniu wartości funkcji celu rozwiązania odpowiadającego najlepszemu osobnikowi w bieżącym pokoleniu. Na rysunku 1.6 przedstawiony jest przykładowy przebieg algorytmu genetycznego z automatyczną mutacją i strategią SIN GLE oraz dla porównania przebieg algorytmu z klasyczną mutacją przy 28 Sterowanie i optymalizacja L = 0,0100 5000 L = auto "SINGLE" f. celu 4800 4600 4400 4200 nr. pokolenia 4000 0 100 200 300 400 500 600 700 800 900 1000 Rysunek 1.6. Przebieg przykładowego algorytmu genetycznego z optymalną oraz automatycznie dobieraną wartością poziomu mutacji. Przykład LA31 prawidłowo dobranym poziomie mutacji. Z przebiegów tych widać, iż algorytm genetyczny z automatyczną mutacją generuje rozwiązania statystycznie lepsze niż w przypadku stałego (poprawnie dobranego) poziomu mutacji. Przewaga automatycznego doboru mutacji nad jego klasycznym odpowiednikiem widoczna jest także po osiągnięciu przez algorytm minimum lokalnego. W przypadku klasycznej mutacji algorytm pozostaje przez kilkadziesiąt iteracji zdominowany przez te same rozwiązania (fragmentami prosta linia wykresu), efekt ten prawie nie występuje przy automatycznej mutacji. Drugi z testów polega na porównaniu średniej wartości błędu ρ generowanych przez algorytm genetyczny wysterowany przez dobrany poziom mutacji L∗ oraz automatyczną mutacją ze strategią SIN GLE, F U LL i BLIN D. Dobierany eksperymentalnie poziom mutacji L∗ wybierany jest ze zbioru L∗ ∈ { 0.0001, 0.0002, 0.0005, 0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100 } jako poziom dla którego pojedynczy przebieg algorytmu okazał się najbardziej korzystny. Ze względu, iż wartość poziomu L∗ wyznaczana jest eksperymentalnie jest ona tylko pewnym przybliżeniem wartości optymalnego poziomu L∗∗ . Omawiane badania został wykonane dla każdego z testowanych operatorów mutacji a wszystkie otrzymane wyniki zamieszczone zostały w tabelach 1.2 i 1.3. Kolejno, tabela 1.2 zawiera wartość optymalnego poziomu L∗ i średnią jakość ρ dla algorytmu o mutacji na poziomie L∗ natomiast tabela 1.3 zawiera średnie wartości ρ algorytmu z automatyczną mutacją typu F U LL, SIN GLE i BLIN D. Wartość ρ obliczana jest ze wzoru (1.9) względem rozwiązania otrzymanego literaturowym [12] algorytmem GASA. Ponadto komentarza wymagają dwa ostatnie wiersze wszystkie i średnia zawarte w tabeli 1.2. Pierwszy z nich za- Zagadnienie kolejnościowe gniazdowe ... 29 Tablica 1.2. Wyznaczony poziom mutacji L∗ oraz odpowiadająca mu średnia jakość generowanych rozwiązań ρ [%], testowanych operatorów mutacji Grupa n×m Optymalny poziom mutacji L∗ 10 × 5 15 × 5 20 × 5 10 × 10 15 × 10 20 × 10 30 × 10 15 × 15 wszystkie średnia SSw Swp Ins Inv 2.00 0.50 1.00 1.00 0.50 0.50 0.20 1.00 0.20 0.10 0.05 0.50 0.10 0.05 0.05 0.05 0.10 0.10 0.05 0.20 0.10 0.10 0.05 0.10 0.10 0.10 0.05 1.00 0.10 0.05 0.05 0.10 0.50 0.05 0.10 0.05 0.84 0.14 0.10 0.19 Średni błąd ρ dla mutacji L∗ SSw Swp Ins Inv -1.91 0.31 -0.28 -5.40 -1.39 -1.22 -5.68 -1.74 -1.47 1.77 -1.22 -5.47 0.78 -2.15 -3.88 -0.56 -2.63 1.94 -2.01 -5.29 0.09 -2.69 -4.69 -1.86 -1.56 1.29 -0.16 -5.29 -0.73 -2.10 -6.54 -2.06 -1.72 -0.83 -1.27 -0.86 -2.16 -2.14 -2.14 -1.53 wiera wartości parametrów uzyskane dla najlepiej dobranego, jednakowego dla wszystkich grup, poziomu mutacji. Ostatni wiersz zawiera natomiast średnie wartości parametrów uzyskane w przypadku gdy dla każdej z grup przykładów poziom mutacji wyznaczany był indywidualnie. Ocena wyników Na początku rozdziału dotyczącego wyboru operatora mutacji, wypunktowane zostały główne cele stosowania mutacji w algorytmach genetycznych. Z obserwacji przykładowego przebiegu algorytmu z automatycznie dobieraną mutacją (rysunek 1.6) widać dokładnie, iż w prezentowanym przykładzie spełnia ona wszystkie wymagania dotyczące prawidłowej mutacji. Główną wadą zaproponowanego podejścia okazał się fakt, iż istnieją operatory mutacji (w rozważanym przypadku operator SSw) dające mierne rezultaty prezentowanego automatycznego doboru mutacji. Niemniej dla pozostałych trzech operatorów Swp, Ins i Inv, wyniki zaproponowanej automatycznej mutacji są bardzo dobre. Ograniczając się do analizy wyżej wymienionych trzech operatorów mutacji, z porównania tabel 1.2 i 1.3 wynika, iż w rozważanym problemie, każdy z wariantów automatycznej mutacji jest statystycznie lepszy niż najlepiej dobrana mutacja klasyczna. Co więcej w przypadku gdy najlepszy możliwy poziom mutacji dobierany jest indywidualnie dla każdej z grup przykładów, algorytmy z automatyczną mutacją wypadają tylko nieznacznie słabiej. Należy tu zauważyć, że ostatnie z porównań stawia automatyczną mutację w niekorzystnej pozycji. Jest tak dlatego, gdyż omawiany test polegał na jednokrotnym uruchomieniu wszystkich algorytmów i otrzymane wyniki są częściowo losowe. W algorytmie o stałym poziomie mutacji zdarza się, że dla jakiegoś poziomu mutacji L∗ (statystycznie słabszego niż poziom L0 bliższy poziomowi optymalnemu L∗∗ ) wartości 30 Sterowanie i optymalizacja Tablica 1.3. Średnia jakość ρ [%] generowanych rozwiązań dla badanych metod automatycznej mutacji, testowanych operatorów Grupa n×m mutacja F U LL mutacja SIN GLE mutacja BLIN D SSw Swp Ins Inv SSw Swp Ins Inv SSw Swp Ins Inv 10 × 5 15 × 5 20 × 5 10 × 10 15 × 10 20 × 10 30 × 10 15 × 15 2.25 6.45 2.61 -0.25 5.51 1.90 -2.96 4.82 wszystkie -1.79 1.16 -1.77 -3.08 0.46 -2.11 -6.47 -0.45 -1.84 1.29 -1.80 -2.39 -0.74 -1.99 -6.19 -2.35 -1.68 1.61 -1.77 -2.47 -1.99 6.12 -2.04 -1.96 -1.65 2.87 5.64 0.69 1.46 2.72 6.14 0.64 1.06 0.32 -0.71 2.77 -0.68 -1.68 -1.82 5.13 -1.80 -1.67 -0.95 -3.94 -0.90 -3.93 -3.53 -3.89 -0.77 -2.71 -3.44 -3.39 -0.79 5.91 -0.34 2.16 0.69 5.63 0.62 1.04 0.33 -1.08 5.28 -0.56 -0.90 -1.58 3.94 -1.33 -0.93 -0.56 -4.90 -1.03 -6.15 -7.55 -5.33 0.17 -6.79 -5.05 -5.80 -2.19 5.09 -1.93 -0.73 -0.15 7.05 -0.77 0.67 -0.97 2.54 -1.76 -2.00 -1.55 3.05 -1.83 -1.66 -1.42 4.18 -1.77 -1.29 -1.58 ρ z pojedynczych przebiegów będą korzystniejsze niż dla poziomu L0 . W takim przypadku do oceny porównawczej uwzględnia się najlepsze z otrzymanych rezultatów, to jest przebiegi dla poziomu L∗ zamiast przebieg dla poziomu L0 . Eksperyment ten eliminuje więc pojedyncze „wpadki” algorytmu klasycznego dla poziomu L0 oraz wybiera wyjątkowo „udane przypadki” przebiegów o innych poziomach mutacji w szczególności o poziomie L∗ . Natomiast w algorytmie z automatyczną mutacją do oceny podawany jest zawsze tylko jeden z przebiegów który mógł wypaść słabiej lub lepiej niż w przypadku średnim. 1.2.4 Wybór operator krzyżowania Zadaniem operatorów krzyżowania jest tworzenie nowych osobników z rozwiązań rodzicielskich. Pomimo, iż w procesie tworzenia nowego osobnika występuje pewna losowość, w prawidłowo dobrane operatory krzyżowania zapewniają, iż powstające osobniki dziedziczą geny (pewne własności reprezentowanych rozwiązań) po swoich rodzicach. Pewną analogią tłumaczącą znaczenie krzyżowania jest przyrównanie danego osobnika do pomysłu tworzącego rozwiązanie a całej populacji do zestawu idei rozwiązań. W analogii tej nowy osobnik jest niczym innym jak innowacyjnym pomysłem. Zastanawiając się czym są nowatorskie pomysły dochodzimy do wniosku, iż są to najczęściej różnego rodzaju kombinacje koncepcji sprawdzających się w przeszłości. Tak też, generowane nowe osobniki są pewnego rodzaju krzyżówką najlepszych rozwiązań z przeszłości (klasycznie krzyżówką najlepiej przystosowanych osobników poprzedniego pokolenia). Sposób oceny przydatności operatorów krzyżowania wydaje się więc oczywisty. Operator jest tym lepszy im z danej populacji początkowej generuje lepsze w sensie wartości funkcji przystosowania osobniki. Ponieważ klasycznie operatory krzyżowania łączą ze sobą parę osobników, w celu utworzenia osob- Zagadnienie kolejnościowe gniazdowe ... 31 nika będącego krzyżówką więcej niż dwóch rozwiązań należy przeprowadzić kilka iteracji krzyżowań. Drugim z kryterium oceny operatora krzyżowania jest szybkość (liczona w pokoleniach algorytmu) znajdowanego minimum lokalnego. Na podstawie wyżej wymienionych spostrzeżeń, do oceny jakości operatora krzyżowania proponuję przyjąć wartość funkcji celu znalezionego rozwiązania w próbnym uruchomieniu algorytmu genetycznego bez mutacji z ustaloną stosunkowo niewielką liczbą symulowanych pokoleń. Taka ocena promuje operatory szybko znajdujące dobre minima lokalne. Zwiększając liczbę symulowanych pokoleń w testowym przebiegu algorytmu zmniejszamy wagę przywiązywaną do szybkości znajdowania minimum lokalnych koncentrując się na ich jakości. Zmiana liczby symulowanych pokoleń w teście pozwala na ustalenie żądanych priorytetów pomiędzy szybkością i jakością znajdowanych rozwiązań. Ponieważ, w algorytmie genetycznym tak jak w ekosystemie istnieją bardzo różne i subtelne powiązania pomiędzy jego elementami, wydaję się, iż dobrze byłoby uwzględnienie wyboru operatora krzyżowania od wcześniej dobranych już parametrów mutacji. Druga, bardzo intuicyjna metoda doboru operatora krzyżowania polega na uruchomieniu wpełni wysterowanego algorytmu genetycznego na pewną liczbę iteracji dla wszystkich testowanych operatorów krzyżowania na pewnej puli przykładów testowych. Taki test jest oczywiście czasochłony i proponuje się wykonanie go jednorazowo dla nowo badanego problemu. Badania numeryczne Badaniom podane zostaną następujące operatory krzyżowania: {LX, RX, LRX, MX }. Pierwsze dwa są operatorami jedno-punktowymi, natomiast kolejne dwa to operatory dwu punktowe. Przed szczegółowym opisem poszczególnych operatorów zdefiniuję najpierw bazowe operacje na ciągach. Operator ⊕ łączący dwa ciągi w jeden poprzez ułożeniu kolejno wszystkich elementów ciągu będącego po lewej stronie operatora a następnie wszystkich elementów z ciągu będącego po prawej stronie operatora. Operator ª tworzący ciąg z elementów ciągu będącego po lewej stronie operatora pomniejszonego o elementy występujące w ciągu po prawej stronie operatora. Oba z operatorów są lewostronnie łączne oraz posiadają jednakowy priorytet kolejności wykonywania działań. Ponadto niech dla dowolnego ciągu X = (x0 , x1 , . . . , xn ) symbol X[j,k) , 0 ≤ j ≤ k ≤ n + 1 oznacza ciąg X[j,k) = (xj , xj+1 , . . . , xk−1 ). Oznaczenia rodzicielskich permutacji ładujących to odpowiednio A = (a0 , a1 , . . . , an−1 ) oraz B = (b0 , b1 , . . . , bn−1 ). Dodatkowo niech j oznacza punkt krzyżowania dla operatorów jedno-punktowych oraz k oznacza drugi punkt krzyżowania dla operatorów dwu-punktowych. Stosując wprowadzoną notację opis testowanych operatorów krzyżowania przedstawić można zwięźle w postaci: LX(A, B, j) = A[0,j) ⊕ (B ª A[0,j) ), (1.10) lewa część tworzonej permutacji skopiowana jest z rodzica A a pozostałe elementy permutacji ułożone są w kolejności występowania w rodzicu B. RX(A, B, j) = (B ª A[j,n) ) ⊕ A[j,n) , (1.11) 32 Sterowanie i optymalizacja Tablica 1.4. Ocena operatorów krzyżowania na podstawie ρ [%] z próbnego przebiegu algorytmu bez mutacji oraz jakość ρ [%] algorytmu właściwego ρ [%] iter = 10 Grupa n×m LX 10 × 5 15 × 5 20 × 5 10 × 10 15 × 10 20 × 10 30 × 10 15 × 15 6.73 13.65 11.67 6.32 12.35 10.29 5.92 12.73 wszystkie RX M X LRX 9.20 14.49 12.77 6.10 13.04 13.54 6.24 11.38 10.36 12.68 12.44 6.20 11.97 10.65 7.14 10.13 10.02 12.15 11.89 3.31 13.04 11.55 7.62 13.45 9.96 10.85 10.20 10.38 ρ [%] przebieg właściwy LX -2.62 1.54 -1.85 -3.82 2.28 -1.05 -8.75 -0.79 RX M X LRX -1.11 1.49 -0.74 -3.46 0.09 -1.04 -6.06 -1.98 -0.55 3.14 -1.75 -2.92 0.82 -1.14 -6.40 0.55 -0.92 0.84 -0.14 -3.81 1.80 0.05 -7.01 -0.78 -1.88 -1.60 -1.03 -1.25 prawa część tworzonej permutacji skopiowana jest z rodzica A a pozostałe elementy permutacji ułożone są w kolejności występowania w rodzicu B. LRX(A, B, j, k) = A[0,j) ⊕ (B ª A[0,j) ª A[k,n) ) ⊕ A[k,n) , (1.12) lewa oraz prawa część tworzonej permutacji skopiowana jest z rodzica A zaś środek uzupełniany jest brakującymi elementami w kolejności występowania w B. M X(A, B, j, k) = (B ª A[j,k) )[0,j) ⊕ A[j,k) ⊕ (B ª A[j,k) )[j,j−k+n) , (1.13) środkowa część tworzonej permutacji skopiowana jest z rodzica A a lewa i prawa strona permutacji uzupełniana jest brakującymi elementami w kolejności występowania w rodzicu B. W tabeli 1.4 przedstawiono wartości jakości ρ rozwiązań uzyskanych dla przebiegu wstępnego i właściwego. Przebieg wstępny jest próbą oceny przydatności poszczególnych operatorów krzyżowania natomiast w przebiegu właściwym następuje dokładna weryfikacja tej oceny. Przebieg wstępny uzyskiwany jest poprzez uruchomienie algorytmu genetycznego bez mutacji oraz z bardzo małą liczbą pokoleń 10, natomiast przebieg weryfikujący uzyskany jest poprzez uruchomienie w pełni wysterowanego algorytmu genetycznego z mutacją typu IN S dobieraną automatycznie według strategii SIN GLE przy liczbie pokoleń wynoszącej 1000. W tabeli 1.5 przedstawiono wartości ρ otrzymanych rozwiązań przy pracy algorytmu genetycznego z mutacją opisaną wyżej, dla pierwszych 10 i 100 pokoleń. Ocena wyników Z wyników zamieszczonych w tabeli 1.4, na podstawie wstępnego przebiegu spodziewać się można, iż w badanym problemie najbardziej obiecującym opera- Zagadnienie kolejnościowe gniazdowe ... 33 Tablica 1.5. Ocena operatorów krzyżowania na podstawie ρ [%] z próbnych przebiegów algorytmu w pełni wysterowanego ρ [%] iter = 10 ρ [%] iter = 100 Grupa n×m LX 10 × 5 15 × 5 20 × 5 10 × 10 15 × 10 20 × 10 30 × 10 15 × 15 7.09 13.42 11.05 5.81 13.13 11.53 5.30 12.19 6.37 12.93 9.97 6.65 12.49 10.49 4.67 13.42 5.96 10.35 10.12 3.05 12.52 11.05 5.15 10.45 6.47 11.10 9.47 6.48 10.84 10.84 6.69 12.42 wszystkie 9.94 9.62 8.58 9.29 RX M X LRX LX -0.29 6.33 3.00 -0.25 5.53 5.36 -1.81 3.53 RX M X LRX -0.38 7.11 4.94 -2.12 6.13 3.93 0.06 3.99 2.60 0.14 5.53 2.90 4.12 2.87 -0.60 -1.90 4.49 7.10 3.22 5.23 -1.44 -0.47 4.42 3.42 2.67 2.96 2.79 2.41 torem krzyżowania jest LX. Tezę tę potwierdzają wyniki dalszej część badań, w których to w pełni wysterowany algorytmy genetyczny z wspomnianym operatorem LX generuje najlepsze rozwiązania spośród analogicznych algorytmów z pozostałymi operatorami. Jednakże kolejne typowania na podstawie przebiegu wstępnego odnośnie pozostałych operatorów nie znalazły potwierdzenia w teście weryfikującym. Jest to częściowo spowodowane faktem, iż wszystkie testowane operatory są w przybliżeniu jednakowo dobre w sensie efektywności badanego algorytmu i ostatecznie w dużej mierze przypadek decyduje który z nich jest w danych warunkach lepszy. W celu potwierdzenia tego stwierdzenia dokonałem dodatkowych testów weryfikujących z zastosowaniem mutacji na stałym poziomie. Otrzymane wynik (nie zamieszczone w pracy) wykazały inną hierarchię przydatności poszczególnych operatorów co potwierdza słuszność tezy o losowości jakości testowanych operatorów. Słabość testu oceniającego stosowane operatory krzyżowania nie wynika z jego powieszchowności tylko z faktu, iż testowane operatory są porównywlanie dobre i w takim przypadku pozostałe elementy algorytmu genetycznego takie jak rodzaj mutacji, liczba osobników w pokoleniu, rodzaj selekcji, ilość symulowanych pokoleń oraz pewna losowść ma decycujący wpływ na względną jakość poszczególnych operatorów krzyżowania. Pojęcie względnej jakości operatorów krzyżowania rozumiana jest tu jako jakość generowanych rozwiązań przez algorytm genetyczny z badanym operatorem krzyżowania względem analogicznej wartości drugiego operatora. W badanym problemie spośród testowanych operatorów krzyżowania nie można jednoznacznie stwierdzić który z nich należy stosować. Operator krzyżowania który w pewnych warunkach jest najlepszy z puli dostępnych operatorów, przy zmianie parametrów sterujących algorytmu może okazać się operatorem mniej efektywnym od pozostałych. Przykładem tego są wyniki algorytmu właściwego zamieszczonego w tabeli 1.4 oraz wyniki przy ograniczonej liczbie iteracji 34 Sterowanie i optymalizacja do 10 i 100 zamieszczone w tabeli 1.5. Dla liczby iteracji wynoszącej 10 statystycznie najlepszym operatorem okazał się M X dla liczby pokoleń 100 średnio najlepsze wyniki przypadły dla operatora LRX natomiast przy symulacji 1000 pokoleń najlepsze uzyskane rezultaty dotyczą operatora LX. 1.2.5 Automatyczne skalowanie funkcji przystosowania Selekcja naturalna występująca w realnym ekosystemie w pewnym stopniu jest dziełem przypadku jednakże promuje osobniki przystosowane lepiej od innych. Przystosowanie w naturze można interpretować jako sumę elementów mających wpływ na przetrwanie danego osobnika w środowisku a są nimi np. odporność na choroby, umiejętność zdobywania pożywienia, umiejętność unikania drapieżników i wiele innych. Oczywiste jest, że osobniki lepiej przystosowane mają większą szansę na przetrwanie i wydanie w swoim życiu większej liczby potomków. W algorytmach genetycznych wartość funkcji przystosowania osobnika oblicza się na podstawie wartości funkcji celu rozwiązania mu odpowiadającego. Procedurę selekcji można wykonać na wiele sposobów, jednakże najbardziej popularną jest metoda używająca odpowiednio wykalibrowanego koła ruletki. Polega ona na przydzieleniu każdemu osobnikowi pewnego wycinka koła o powierzchni proporcjonalnej do wartości funkcji przystosowania tego osobnika w taki sposób aby wszystkie osobniki w pokoleniu wypełniły całą powierzchnię. Następnie losowanie osobnika odbywa się poprzez obrót wirtualnego wskaźnika o losowy kąt z przedziału [0, 2π) i wybraniu osobnika odpowiadającego fragmencie koła przez niego wskazywanego. W metodach selekcji często stosuje się pewną funkcję f bezpośrednio przekształcającą wartości funkcji celu rozwiązania w wartość przystosowania danego osobnika. Najczęściej jest to funkcja liniowa postaci f (x) = ax + b. W pracy [1] potrzeba automatycznego doboru parametrów a i b dla każdego pokolenia wyjaśniona jest w następujący sposób: Często zdarza się, że na początku przebiegu w populacji występuje kilku ponad przeciętnych osobników, podczas gdy reszta zalicza się pośredniej kategorii. Gdyby zastosować normalną regułę selekcji, te ponad przeciętne osobniki uzyskały by znaczący udział w skończonej populacji w ciągu jednego pokolenia, a to jest zjawisko niepożądane, główna przyczyna przedwczesnej zbieżności. W późniejszej fazie mamy doczynienia z zupełnie odmiennym problemem. Może się zdarzyć, że pod koniec przebiegu populacja zachowała znaczą różnorodność, ale średni wskaźnik przystosowania niewiele odbiega od maksymalnego. Jeśli na to nie zareagujemy, to osobniki przeciętne i osobniki najlepsze będą otrzymywać prawie tę samą liczbę potomstwa w następnych pokoleniach, co prowadzi zasadę przeżycia najlepiej przystosowanych do poziomu błądzenia przypadkowego wśród przeciętniaków. Jako antidotum na wyżej opisane dwie niekorzystne sytuacje, proponuje się automatyczny dobór parametrów a i b funkcji f . Proponowany dobór parame- Zagadnienie kolejnościowe gniazdowe ... 35 warto przystosowania fbest fav warto funkcji celu 0 cbest cav cworst Rysunek 1.7. Automatyczne skalowanie wartości przystosowania trów polega na tym aby wartość średnia favg funkcji przystosowania równała była średniej wartości cavg funkcji celu oraz wartość przystosowania najlepszego osobnika fbest wynosiła Cmult średniej wartości przystosowania, favg = a · cavg + b, fbest = a · cbest + b, (1.14) favg = cavg , fbest = Cmult · favg . Zauważmy tu, że z powyższych zależności na podstawie średniej cavg oraz najlepszej cbest wartości funkcji celu i przyjętego parametru Cmult można jednoznacznie wyznaczyć parametry a i b. Niestety skalowanie takie prowadziłoby w niektórych sytuacjach do nadawania ujemnych wartości funkcji przystosowania najsłabszym osobnikom (z definicji wartość przystosowania danego osobnika jest liczbą nieujemną). W celu uniknięcia takich sytuacji w pracy [1] proponuje się dodatkową modyfikację parametru Cmult w taki sposób aby najmniejsza wartość funkcji przystosowania odpowiadająca najgorszemu rozwiązaniu w pokoleniu wynosiła nie mniej niż 0. W prezentowanych algorytmach proponuje się trochę inną strategię uniknięcia ujemnych wartości funkcji przystosowania. Raz wyznaczone w pokoleniu wartości a i b zgodnie wzorami (1.14) nie ulegają już modyfikacjom, a ewentualne ujemne wartości funkcji przystosowania zamieniane są na wartość równe 0. Tak więc ostatecznie proponuję zastąpienie liniowej funkcji f funkcją f 0 postaci f 0 (x) = max{0, ax + b} (1.15) gdzie wartości a i b wyznaczone są z zależności 1.14. Przykładowa funkcję f 0 przedstawiona jest na rysunku 1.7, (w rozważanym problemie poszukujemy roz- 36 Sterowanie i optymalizacja wiązania o najmniejszej długość uszeregowania, dlatego rozwiązanie o najmniejszej wartości funkcji celu jest rozwiązaniem najlepszym). Przedstawiona funkcja f 0 odpowiada pokoleniu w którym istnieją osobniki reprezentujące rozwiązania znacznie słabsze niż rozwiązania średnie. Zaproponowane automatyczne skalowanie odrzuca bezwarunkowo najsłabsze z osobników przypisując im wartość funkcji przystosowania równą zero. Jakość selekcji można regulować poprzez zmianę parametru Cmult . Dla parametru Cmult = 1 wszystkie osobniki mają jednakową szansę na ich wylosowanie. Stopniowo zwiększając wartość tego parametru coraz bardziej promuje się osobniki lepsze (lepsze w sensie wartości funkcji celu odpowiadającym im rozwiązaniom). 1.2.6 Weryfikacja numeryczna W bieżącej części przeprowadzimy ostateczny test zastosowania jednocześnie wszystkich opisanych w pracy metod samostrojenia w algorytmie nazywanym dalej GA. Otrzymane wyniki porównamy względem literaturowego algorytmu GASA. Wyniki eksperymentu zamieszczono w tabeli 1.6. Tabela ta zawiera aż 9 kolumn opisanych skróconym nagłówkiem, dlatego poniżej wyjaśnię dokładnie ich znaczenie. Kolejne dane w kolumnach to: nazwa przykładu testowego powszechnie stosowana w literaturze lub nazwa całej grupy, wartość funkcji opt celu rozwiązania optymalnego Cmax jeżeli jest ona znana, wartość funkcji celu rozwiązania referencyjnego (wybranego jako najlepsze rozwiązanie otrzymane podczas wielokrotnych uruchomień prezentowanego algorytmu GA), wartość GASA otrzymaną z 30 uruchomień algorytmu GASA (wyniki zaczerpnięte z Cmax GA pracy [12]) oraz wartość Cmax otrzymaną z jednokrotnego uruchomienia prezentowanego algorytmu. Kolejne dwie kolumny zawierają czas pracy tGASA i tGA algorytmów GASA i GA. Ostatnie dwie kolumny to względny błąd ρGASA i ρGA prezentowanych rozwiązań w stosunku do rozwiązania referencyjnego, liczony według wzoru (1.9). Testowany algorytm GA wysterowany został w następujący sposób: liczba osobników w pokoleniu: 20, liczba symulowanych pokoleń 10000, rodzaj operatora krzyżowania LX (wybrany off-line na podstawie 10 iteracji bez mutacji), mutacja SW P (wybrana off-line) ze strategią mutowania typu BLIN D, selekcja metodą koła ruletki z automatycznym skalowaniem funkcji przystosowania z parametrem Cmult = 5. Ponadto algorytm przez pierwszą połowę pokoleń przegląda rozwiązania lewo-aktywne natomiast w drugiej połowie analizuje tylko rozwiązania prawo-aktywne. Należy ponadto zwrócić uwagę na różnicę w szybkości pracy komputerów testujących algorytmy. Algorytm GASA uruchamiany był na komputerze z procesorem Athlon 1400MHz, natomiast algorytm GA na komputerze z procesorem Athlon 2000+ taktowanym zegarem 1666MHz. Wyniki zamieszczone w tabeli 1.6 wykazują znaczną wyższość algorytmu GA nad algorytmem GASA. Algorytm GA w czasie znacznie krótszym z uwzględnieniu różnicy szybkości komputerów, generuje rozwiązania blisko 5% lepsze niż algorytm GASA. Należy zwrócić uwagę na to, że na sukces algorytmu GA nie tylko wpłynęły opisane techniki samostrojenia ale także zastosowanie klas Zagadnienie kolejnościowe gniazdowe ... 37 Tablica 1.6. Otrzymane rozwiązania oraz czas pracy samostrojącego algorytmu GA oraz algorytmu literaturowego GASA przykład LA01 LA02 LA03 LA04 LA05 10x05 LA06 LA07 LA08 LA09 LA10 15x05 LA11 LA12 LA13 LA14 LA15 20x05 LA16 LA17 LA18 LA19 LA20 10x10 LA21 LA22 LA23 LA24 LA25 15x10 LA26 LA27 LA28 LA29 LA30 20x10 LA31 LA32 LA33 LA34 LA35 30x10 LA36 LA37 LA38 LA39 LA40 15x15 wszystkie ref opt Cmax Cmax 971 971 937 937 820 820 887 887 777 777 GA GASA Cmax Cmax 1037 971 990 961 832 820 889 887 817 777 ? ? ? ? ? 1248 1172 1244 1358 1287 1339 1240 1296 1447 1338 1248 1207 1289 1371 1327 ? ? ? ? ? 1622 1447 1598 1610 1689 1825 1631 1766 1805 1829 1724 1542 1685 1677 1780 1575 1371 1417 1482 1526 1575 1371 1417 1482 1526 1637 1430 1555 1610 1693 1575 1371 1485 1482 1526 ? ? ? ? ? 2030 1852 2021 1994 1906 2182 1965 2193 2150 2034 2098 1912 2093 2054 1976 ? ? ? ? ? 2530 2675 2552 2384 2569 2945 3036 2902 2617 2892 2649 2880 2756 2592 2743 ? ? ? ? ? 3562 3900 3516 3695 3669 4298 4686 4214 4401 4299 3743 4275 3835 3909 3990 ? ? ? ? ? 2685 2831 2571 2697 2580 2949 3216 2762 2908 2950 2858 3093 2695 2697 2594 tGASA [s] tGA [s] 23 8 24 8 24 8 25 7 24 7 120 38 80 18 70 18 72 18 83 18 70 18 375 90 170 33 164 32 183 33 176 33 167 33 860 164 39 26 42 26 42 25 40 26 45 26 208 129 147 64 135 63 136 65 133 64 142 62 693 318 332 120 311 123 324 121 311 119 346 117 1624 600 957 282 869 288 860 284 968 287 897 287 4551 1428 203 136 192 137 202 132 195 136 214 138 1006 679 9437 3446 ρGASA [%] ρGA [%] 6.80 0.00 5.66 0.00 1.46 0.00 0.23 0.00 5.15 0.00 3.86 0.00 7.29 0.00 5.80 6.23 4.18 2.25 6.55 3.53 3.96 1.24 5.56 2.65 12.52 7.58 12.72 6.01 10.51 4.38 12.11 5.71 8.29 4.50 11.23 5.64 3.94 0.00 4.30 0.00 9.74 4.80 8.64 0.61 10.94 0.00 7.51 1.08 7.49 2.32 6.10 4.43 8.51 5.39 7.82 3.26 6.72 3.83 7.33 3.85 16.40 7.23 13.50 7.21 13.71 9.84 9.77 7.34 12.57 5.37 13.19 7.40 20.66 7.22 20.15 11.05 19.85 8.70 19.11 4.47 17.17 8.83 19.39 8.05 9.83 3.91 13.60 7.42 7.43 4.67 7.82 1.74 14.34 9.03 10.61 5.35 9.83 4.25 38 Sterowanie i optymalizacja rozwiązań lewo i prawo-aktywnych. 1.3 Podsumowanie Prezentowane w pracy metody samostrojenia, można stosować dla dowolnego algorytmu genetycznego. Opierają się one na bytach występujących w każdym algorytmie genetycznym niezależnie od rozwiązywanego problemu. Automatyczny dobór prawdopodobieństwa mutacji ze wskazywaniem osobników do mutacji oraz automatyczne skalowanie wartości funkcji przystosowania odbywa się on-line to znaczy na bieżąco podczas pracy algorytmu. Zaproponowany wybór operatora krzyżowania oraz operatora mutacji odbywa się natomiast off-line to znaczy w obliczeniach wstępnych. Obliczenia wstępne mogą być wykonane jednorazowo przy tworzeniu algorytmu genetycznego dedykowanego danemu problemowi lub wbudowane w algorytm jako faza wstępna, wykonywana każdorazowo przed rozwiązaniem danej instancji. Jakości proponowanych rozwiązań strojenia algorytmu zweryfikowana została na algorytmie genetyczny wyspecjalizowanym do znajdowania harmonogramu problemu gniazdowego z dodatkowym ograniczeniem „bez-czekania”. Wyniki numeryczne wykazują iż w badanym problemie efektywność algorytmu z samostrojeniem jest na poziomie algorytmu sterowanego klasycznie z możliwie najlepiej dobranymi parametrami sterującymi. Co więcej prezentowany algorytm jest znacznie efektywniejszy (zarówno pod względem jakości generowanych rozwiązań jak i czasu pracy) niż algorytmy literaturowe. 1.4 Bibliografia [1] D.E. Goldberg, Algorytmy genetyczne i ich zastosowania, WNT Warszawa, 1995. [2] R.L. Graham, E.L. Lawler, J.K. Lenstra, A.H.G. Rinnooy Kan, Optimization and approximation in deterministic sequencing and scheduling: survey, Annals of Discrete Mathematics, 5:287-326, 1979. [3] J. Grabowski, J. Pempera, Sequencing of jobs in some production system, European Journal of Operational Research, 125:535-550, 2000. [4] G.N. Hall, C. Sriskandarajah, A survey of machine scheduling problems with blocking and no-wait in process. Operations Research, 44:510-524, 1996. [5] J.H. Holland, Genetic Algorithms, Scientific American, 44, 1992. [6] A.S. Jain, S. Meeran, Deterministic job-shop scheduling: Past, present and future. European Journal of Operational Research, 113:390-434, 1999. [7] Makuchowski M., Algorytm genetyczny dla problemu gniazdowego z ograniczeniem bez czekania, Automatyka, tom 9, zeszyt 1-2, Uczelnianie wydawnictwo naukowo-dydaktyczne, 127-137, Kraków 2005. [8] A. Mascis, D. Pacciarelli, Job-shop scheduling with blocking and no-wait constraints, European Journal Operational Research, 143:498-517, 2002. Zagadnienie kolejnościowe gniazdowe ... 39 [9] W. Raaymakers, J. Hoogeveen, Scheduling multipurpouse batch process industries with no-wait restrictions by simulated annealing. European Journal of Operational Research, 126:131-151, 2000. [10] S. Reddi, C. Ramamoorth, A scheduling problem, Operational Research Quart., 24:441-446, 1973. [11] S. Sahni, Y. Cho, Complexity of scheduling shops with no-wait in process. Kluwer Akademic Publishing, Dordrecht, 1997. [12] C.J. Schuster, J.M. Framinan, Approximative procedures for no-wait job shop scheduling. Operations Research Letters, 31:308-318, 2003. [13] I. Ovacik, R. Uzsoy, Decompisition methods for complex factory scheduling problems. Operations Research Letters, 31:308-318, 2003. [14] Y.N. Sotskov, Y.A. Strusevich, NP-hardness of shop scheduling problem with three jobs, Discrete Applied Mathematics 1993. [15] E.D. Weinberger, Correlated and uncorrelated fitness landscapes and how to tell the difference. Biological Cybernetics, 63:325-336, 1990. [16] D.A. Wismer, Solution of the flowshop scheduling-problem with no intermediate queues, Operations Research, 20:689-697, 1972. 40 Sterowanie i optymalizacja 2 Problem przepływowy z ograniczeniami „bez czekania” Józef Grabowski, Jarosław Pempera Ograniczenie „bez czekania” występuje w procesach produkcyjnych, w których ze względu na wymogi technologiczne obróbka w ramach pewnego etapu następuje niezwłocznie po zakończeniu obróbki w ramach etapu bezpośrednio go poprzedzającego. Są to w szczególności procesy wytwarzania, w których następuje obróbka termiczna, chemiczna lub zmiana parametrów fizycznych produktów. Spośród bardzo wielu przykładów procesów technologicznych, w których występują tego typu ograniczenia należy wymienić : (a) produkcję stali [2], gdzie roztopiona stal poddawana jest serii operacji takich jak formowanie w sztaby, rozwalcowywanie, podgrzewanie, moczenie i rolowanie, (b) produkcję i obróbkę wyrobów z plastiku [18], (c) przemysł farmaceutyczny [14], (d) chemiczny [16], (e) galwaniczny oraz (f) przemysł spożywczym [11]. Ograniczenia „bez czekania” występują w procesie produkcji bloków z betonu komórkowego [6, 13]. Taki proces technologiczny składa się z sześciu etapów : (1) mieszanie składników i wypełnienie formy, (2) wstępne utwardzenie masy betonowej w formie, (3) cięcie masy blokowej według określonego przez klienta rozkroju, (4) kontrola jakości, (5) końcowe utwardzanie bloków w wysokiej temperaturze i pod wysokim ciśnieniem, (6) transport bloków do magazynu. Ze względu na zachodzące w masie betonowej reakcje chemiczne, masa betonowa nie może czekać (z obróbką) pomiędzy stanowiskami 1 i 2 oraz 2 i 3. Bloki produkowane są w różnych rozmiarach i z różnych gatunków betonu. Gatunek betonu komórkowego determinuje fizyczne parametry wyrobów tzn. wytrzymałość, izolację termiczną, ciężar konstrukcji budowlanej. Najwcześniejszą pracą dotyczącą problemów szeregowania z ograniczeniami „bez czekania” była praca Gilmore i Gomory opublikowana w 1954 [4]. Przedstawiono w niej algorytm rozwiązujący w czasie O(nlogn) problem przepływowy z dwoma maszynami z kryterium minimalizacji czasu cyklu Ct . Niestety, wkrótce okazało się, że problem ten dla większej liczby maszyn jest NP-trudny [17]. W początkach badań nad tym problemem, znaczący udział mają również Grabowski i Sysło. W opublikowanej w 1973 pracy [7] pokazali, że problem przepływowy z ograniczeniami „bez czekania” można sprowadzić do problemu komiwojażera. Odkrycie to jest aktualne do dnia dzisiejszego i jest wykorzystywane w wielu algorytmach opisanych w literaturze światowej. Zastosowanie własności wynikającej z tego faktu miało zasadniczy wpływ na szybkość działania jednego z najefektywniejszych algorytmów lokalnego przeszukiwania (opartego na metodzie przeszukiwania z zabronieniami), który został przedstawiony między innymi w dalszej części niniejszego rozdziału. 42 Sterowanie i optymalizacja W systemach produkcyjnych z ograniczeniami „bez czekania”, z oczywistych przyczyn, nie występują bufory przed maszynami oraz czas przebywania zadania w systemie liczony od terminu rozpoczęcia wykonywania zadania na pierwszej maszynie do jego zakończenia na ostatniej maszynie jest stały i równy sumie czasów obróbki na wszystkich maszynach, na których obrabiane jest to zadanie. Jest to cecha bardzo korzystna dla elastycznych systemów wytwarzania oraz systemów wytwarzania na żądanie, w których dąży się minimalizowania kosztów tzw. produkcji w toku oraz ogranicza się produkowanie wyrobów na magazyn. Więcej informacji na temat systemów wytwarzania na żądanie można znaleźć w monografii [21]. W rozdziale przedstawiono formalny opis matematyczny problemu przepływowego z ograniczeniem „bez czekania”, jego własności oraz pewne elementy algorytmów lokalnego przeszukiwania powodujące znaczącą poprawę ich efektywności. 2.1 Sformułowanie problemu W permutacyjnym problemie przepływowym park maszynowy składa się z m maszyn ze zbioru M = {1, . . . , m}, na których należy wykonać n zadań ze zbioru J = {1, . . . , n}. Każde zadanie j ∈ J wykonywane jest na wszystkich maszynach w kolejności zgodnej z numerami maszyn. Zadanie j ∈ J wykonywane jest na maszynie k przez czas pjk > 0, k = 1, . . . , m. Przyjmuje się, że w danej chwili maszyna k ∈ M może wykonywać tylko jedno zadanie oraz zadanie j ∈ J może być wykonywane tylko na jednej maszynie. Kolejność wykonywania zadań na maszynach jest jednakowa. Ograniczenie „bez czekania” oznacza, że rozpoczęcie wykonywania zadania na maszynie k musi nastąpić niezwłocznie po zakończeniu wykonywania na maszynie k − 1, k = 2, . . . , m. Kolejność wykonywania zadań możemy opisać przy pomocy permutacji π = (π(1), . . . , π(n)) (numerów) zadań ze zbioru J. Zbiór wszystkich n-elementowych permutacji elementów zbioru J będziemy oznaczali symbolem Π. Dla ustalonej kolejności π dopuszczalny harmonogram wykonywania zadań na maszynach określony przez terminy rozpoczęcia wykonywania zadań Sjk i/lub terminy zakończenia wykonywania zadań Cjk , j = 1, . . . , n, k = 1, . . . , m musi spełniać następujące ograniczenia: Sj1 ≥ 0, j = 1, . . . , n, (2.1) Cjk = Sjk + pjk , j = 1, . . . , n, k = 1, . . . , n, (2.2) Sjk ≥ Cj,k−1 , j = 1, . . . , n, k = 2, . . . , m, (2.3) Sπ(j),k ≥ Cπ(j−1),k , j = 2, . . . , n, k = 1, . . . , m, (2.4) Sjk = Cj,k−1 , j = 1, . . . , n, k = 2, . . . , m, (2.5) Nierówność (2.1) i równość (2.2) jest oczywista. Ograniczenia (2.3, 2.4) modelują klasyczne wymagania dotyczące zachowania relacji czasowych kolejno Problem przepływowy z ograniczeniami bez “czekania” 43 wykonywanych operacji w ramach jednego zadania (wymagania technologiczne) oraz kolejności wykonywania zadań na maszynach (wymagania maszynowe). Równość (2.5) modeluje wymagania ”bez czekania”. Należy znaleźć permutację π ∗ taką, że Cmax (π ∗ ) = maxπ∈Π Cmax (π), gdzie Cmax (π) jest czasem potrzebnym do zrealizowania wszystkich zadań w kolejności określonej przez π. Dla zagadnień przepływowych mamy: Cmax (π) = Cπ(n)m . Pk Niech dkij = cij − aki − bkj , gdzie cij = max2≤s≤l (asi − bsj ) oraz aki = s=2 pjs , Pl k bki = s=k pjs , dla k = 2, . . . , m oraz i, j = 1, . . . , n. Symbol dij określa minimalne opóźnienie terminu rozpoczęcia wykonywania zadania j względem terminu zakończenia zadania i na maszynie k, tak aby zostało spełnione ograniczenie ”bez czekania”. Wszystkie n(n − 1)(m − 1) wartości dkij można wyznaczyć w czasie O(n2 m). Własność 2.1 Dla danej permutacji π, minimalne opóźnienie rozpoczęcia wykonywania zadania π(i), i = 2, . . . , n, względem zakończenia wykonywania zadania π(i − 1) na maszynie k, k = 1, . . . , m, gwarantujące spełnienie ograniczeń (2.1–2.5), wynosi dkij . Własność 2.2 Dla danej permutacji π określającej kolejność wykonywania zadań czas zakończenia wykonywania zadań można wyznaczyć ze wzoru. Cmax (π) = n X j=1 gdzie π(0) = 0, dk0j = 2.2 Pk−1 s=1 pjm + n X dm π(j−1),π(j) , (2.6) j=1 pjs . Algorytmy heurystyczne Silna NP-trudność problemu ogranicza zakres stosowania algorytmów dokładnych do instancji o małej liczbie zadań. Z tego powodu do rozwiązania (znalezienia dobrych rozwiązań przybliżonych) stosuje się najczęściej szybkie algorytmy heurystyczne oparte na metodach przeszukiwań lokalnych. Dla rozważanej funkcji kryterialnej można wymienić algorytmy prezentowane w pracach: Hall i Sriskandarayah [11], Gangadharan i Rajedran [3], Rajedran [15], Glass et al. [5], Sidney et al. [20], Aldowaisan i Allahverdi [1], Schuster i Framinan [19], Grabowski i Pempera [6]. W tej części rozdziału prezentujemy algorytmy oparte na metodzie przeszukiwania zstępującego oraz przeszukiwania z zabronieniami. Integralnym elementem tych algorytmów jest tzw. multiruch, który odpowiednio skonstruowany pozwala na osiągnięcie poprawy w jednej iteracji algorytmu równej sumie popraw poszczególnych ruchów składowych. Ruchy i otoczenie Jednym z podstawowych elementów algorytmów lokalnego przeszukiwania jest definicja zbioru ruchu oraz wynikającego z niego zbioru rozwiązań sąsiednich 44 Sterowanie i optymalizacja zwanych sąsiedztwem. Ruch zmienia położenie pewnych zadań w kolejności wykonywania zadań. Spośród różnych typów ruchów rozważanych w literaturze jednym z najefektywniejszych jest ruch określany typem „wstaw”. Niech v = (x, y) będzie parą liczb określających pozycje w permutacji π, x, y ∈ {1, 2, ..., n}, x 6= y. Para ta definiuje ruch wstaw w π, który oznacza usunięcie zadania π(x) z pozycji x i przesunięcie na pozycję y w π, generuje on nową permutację πv w następujący sposób : πv πv = (π(1), ..., π(x − 1), π(x + 1), ..., π(y), π(x), π(y + 1), ..., π(n)), jeśli x < y, = (π(1), ..., π(y − 1), π(x), π(y), ..., π(x − 1), π(x + 1), ..., π(n)), jeśli x > y. Dalej niech Z = {(x, y)|x, y ∈ 1, 2, ..., n, b ∈ {a, a − 1}} oznacza zbiór wszystkich ruchów oraz niech N (Z, π) = {πv |v ∈ Z} będzie zbiorem wszystkich rozwiązań sąsiednich generowanych przez ruchy v ∈ Z. Zbiór ruchów Z oraz otoczenie N (Z, π) posiada (n − 1)2 elementów. Własność 2.3 Wartość Cmax (πv ) można wyznaczyć w czasie O(1) bazując na znanej wartości Cmax (π). Korzystając z własności 2.3 można obliczyć wartość funkcji celu dla wszystkich rozwiązań generowanych przez ruchy ze zbioru Z w czasie O(n2 ). Dla porównania czas obliczeń potrzebny do wyznaczenia wartości funkcji celu z własności 2.2 wynosi O(n3 ). Multiruchy Definicja 2.1 Ruchy v1 = (x1 , y1 ) ∈ Z i v2 = (x2 , y2 ) ∈ Z nazywamy niezależnymi, jeżeli co najmniej jeden z poniższych warunków jest spełniony: max(x1 , y1 ) + 1 < min(x2 , y2 ) lub (1) max(x2 , y2 ) + 1 < min(x1 , y1 ). min(x1 , y1 ) + 1 < min(x2 , y2 ) i max(x2 , y2 ) + 1 > max(x1 , y1 ) lub (2) min(x2 , y2 ) + 1 < min(x1 , y1 ) i max(x1 , y1 ) + 1 > max(x2 , y2 ). min(x1 , y1 ) + 1 < min(x2 , y2 ) i min(x2 , y2 ) + 1 < max(x1 , y1 ) i max(x1 , y1 ) + 1 < max(x2 , y2 ) lub (3) min(x2 , y2 ) + 1 < min(x1 , y1 ) i min(x1 , y1 ) + 1 < max(x2 , y2 ) i max(x2 , y2 ) + 1 < min(x1 , y1 ). Warunek (1) oznacza, że ruchy v1 i v2 operują na oddzielonych sekwencjach zadań takich, że v1 poprzedza v2 (lub v1 następuje po v2 ) i są oddzielone co Problem przepływowy z ograniczeniami bez “czekania” 45 najmniej jednym zadaniem. Warunek (2) oznacza, że v2 operuje na zadaniach znajdujących się wewnątrz (lub na zewnątrz) v1 oraz każda z pozycji x1 i y1 jest oddzielona od pozycji x2 , y2 co najmniej jednym zadaniem. Wreszcie, warunek (3) oznacza, że jeżeli ruchy v1 i v2 „przecinają” się to każda pozycji x1 i y1 jest oddzielona od pozycji x2 , y2 co najmniej jednym zadaniem. Niech P Z = {v ∈ Z|Cmax (πv ) < Cmax (π)} będzie zbiorem ruchów poprawiających, tzn. generujących permutacje πv „lepsze” niż π. Zbiorem niezależnych ruchów poprawiających IP Z będziemy nazywali podzbiór niezależnych ruchów z P Z. To oznacza, że dla dowolnej pary ruchów v1 ∈ IP Z i v2 ∈ IP Z, v1 6= v2 spełniony jest co najmniej jeden z warunków (1–3). Wykonanie multiruchu oznacza wykonanie wszystkich ruchów ze zbioru IP Z równocześnie, generuje on permutację πv , gdzie v = IP Z. Dla uproszczenia, w dalszych rozważaniach, multiruch IP Z będziemy również oznaczali symbolem v. Zauważmy, że permutacja πv nie należy do otoczenia N (Z, π), poza sytuacją, gdy |v| = 1. Z definicji multiruchu v wynika, że permutacja πv powinna być znacznie lepsza od permutacji generowanej przez najlepszy ruch ze zbioru IP Z. Co więcej, dla problemu przepływowego z ograniczeniem „bez czekania”, całkowita poprawa wartości funkcji celu wynikająca z wykonania multiruchu jest sumą popraw generowanych przez jego ruchy składowe. Powyższa cecha tego problemu jest unikalna. Dla większości problemów przepływowych (permutacyjnego, z ograniczeniami bez czekania, i innymi ograniczeniami), proprawy generowane przez poszczególne ruchy składowe multiruchu, w ogólnym przypadku, nie sumują się. Zbiór IP Z może być konstruowany w dowolny sposób, niemniej najbardziej rozsądnym (oraz najprostszym) rozwiązaniem wydaje się wykorzystanie podejścia zachłannego polegającego na dołączaniu ruchów do zbioru IP Z w kolejności od najlepszego do najgorszego. Oczywiście podczas dołączania może się okazać, że dodanie ruchu do IP Z spowoduje niespełnienie warunków (1– 3), wówczas taki ruch zostaje usunięty. Precyzyjna procedura konstruowania multiruchu dla rozważanego problemu została podana w pracy [10]. Przeszukiwanie zstępujące, algorytmy DS i DS+M Algorytmy oparte na metodzie przeszukiwania zstępującego, w głównej części iteracyjnej, przeszukują sąsiedztwo rozwiązania bazowego w celu znalezienia (i) pierwszego lub (ii) najlepszego rozwiązania sąsiedniego o wartości funkcji celu mniejszej od wartości wyznaczonej dla rozwiązania bazowego. Jeżeli takie rozwiązanie istnieje staje się ono rozwiązaniem bazowym w następnej iteracji algorytmu, w przeciwnym wypadku algorytm kończy działanie. Reguła największej poprawy (ii) nazywana jest również zachłanną. Bazując na definicjami zbiorów ruchów Z oraz IP Z zaproponowano dwa algorytmy zachłanne. Algorytm DS - klasyczny algorytm zachłanny oparty o sąsiedztwo generowane przez ruchy ze zbioru Z. Algorytm DS+M - algorytm zstępujący oparty o multiruchy. W głównej części tego algorytmu, w oparciu o zbiór Z i wartości funkcji celu rozwiązań 46 Sterowanie i optymalizacja przez niego generowanych, konstruowany jest multiruch v. Jeżeli taki ruch istnieje to rozwiązanie przez niego generowane staje się rozwiązaniem bazowym w następnej iteracji algorytmu, w przeciwnym wypadku algorytm kończy działanie. W każdej iteracji wymienionych algorytmów generowane jest pełne sąsiedztwo rozwiązania bazowego oraz dla każdego rozwiązania z sąsiedztwa wyznaczana jest wartość funkcji celu. Przeszukiwanie z zabronieniami, algorytmy TS, TS+M i TS+MP Algorytmy oparte na metodzie przeszukiwania z zabronieniami należą do najskuteczniejszych algorytmów dla wielu problemów szeregowania zadań. Wysoką skuteczność tej metody dla problemów z mieszanymi ograniczeniami „bez czekania” i „bez magazynowania” potwierdzają wyniki prezentowane w pracy [6]. W każdej iteracji algorytmu TS, dla pewnego rozwiązania, dalej zwanego bazowym, generowane jest sąsiedztwo. Z sąsiedztwa wybierane jest rozwiązanie najlepsze, które staje się rozwiązaniem bazowym w następnej iteracji, a najlepsze do tej pory znalezione rozwiązanie jest aktualizowane. Aby zapobiec powrotowi do rozwiązań już sprawdzonych wprowadza się mechanizm zabronienia (tabu) zwykle realizowany za pomocą listy cyklicznej. Elementy tej listy określają zabronione rozwiązania sąsiednie, które są usuwane z sąsiedztwa. Algorytm oparty na tej metodzie kończy swoje działanie gdy wykona z góry zadaną liczbę iteracji i/lub zadany czas obliczeń zostanie przekroczony i/lub zostanie znalezione rozwiązanie o zadawalającej wartości funkcji celu. Szczegółowy opis podstawowych elementów algorytmów tabu dla zagadnień przepływowych można znaleźć między innymi w pracy [8]. Tutaj, przedstawimy tylko pewne metody pozwalające wpływać na intensyfikację i dywersyfikację procesu przeszukiwania. Należą do nich wykorzystanie multiruchów, selektywne wykonywanie multiruchów oraz dynamiczna lista zabronień. Komponenty te zostały zaproponowane przez Grabowskiego oraz Wodeckiego, gdzie zostały wykorzystane do konstrukcji szybkich i efektywnych algorytmów dla klasycznych problemów szeregowania: przepływowego [9] i gniazdowego [8]. Ruchy złożone w algorytmach tabu Wykorzystanie multiruchu w algorytmie opartym na metodzie przeszukiwania z zabronieniami (tabu) wymaga specyficznego sposobu generowania nowego rozwiązania bazowego. Odbywa się to w następujący sposób. Najpierw, dla rozwiązania bazowego π, w oparciu o zbiór ruchów Z, wyznaczane jest sąsiedztwo N (Z, π). Następnie ze zbioru Z, na podstawie wartości funkcji celu rozwiązań generowanych przez ruchy z Z, konstruowany jest multiruch |v|. Problem przepływowy z ograniczeniami bez “czekania” 47 Jeżeli |v| ≥ 2, wtedy rozwiązanie πv staje się nowym rozwiązaniem bazowym. W przeciwnym wypadku w zbiorze Z wyszukiwany jest ruch v ∈ Z generujący rozwiązanie πv ∈ N (Z, π) o najmniejszej wartości funkcji celu, tzn. Cmax (πv ) = minw∈Z Cmax (πw ). Jeżeli Cmax (πv ) < Cmax (π T S ), (gdzie π T S oznacza najlepszą permutaję do tej pory znalezioną) to permutacja π T S jest aktualizowana tzn. podstawiane jest π T S = πv . W przeciwnym wypadku, gdy Cmax (πv ) ≥ Cmax (π T S ), ze zbioru Z wyselekcjonowany jest zbiór ruchów niezabronionych. Jest to zbiór wszystkich ruchów generujących niezabronione rozwiązania z sąsiedztwa Z zdefiniowany następująco: U Z = {v ∈ Z | ruch v jest niezabroniony}. Następnie wybierany jest ruch v ∈ U Z generujący permutację o najmniejszej wartości funkcji celu, tzn. Cmax (πv ) = minw∈U Z Cmax (πw ). Lista T modyfikowana jest na podstawie rozwiązania bazowego π i odpowiednio do rozważanych powyżej przypadków, najlepszego ruchu składowego |v| lub ruchu v. Selektywne wykonywanie multiruchów Najogólniej mówiąc, selektywne wykonywanie multiruchów polega na tym, że multiruch nie jest kreowany w każdej iteracji, a tylko w przypadku zajścia specyficznych warunków. Idea ta pierwotnie została zastosowana przez Wodeckiego oraz Grabowskiego dla problemu gniazdowego [8]. W wyniku badań testowych okazało się, że najlepszą strategią wykorzystania multiruchów jest ich wykonywanie po P iter iteracjach nie dających poprawy wartości funkcji celu. Dynamiczna lista zabronień Długość listy zabronień ma zasadniczy wpływ na jakość otrzymywanych przez algorytm TS rozwiązań. Zbyt krótka lista zabronień powoduje, że algorytm bardzo szybko wpada w cykl obliczeniowy (generowane są identyczne ciągi rozwiązań bazowych). Z drugiej strony, zbyt duża długość listy zabronień powoduje usunięcie z otoczenia dużej ilości rozwiązań co z kolei powoduje pogorszenie średniej jakości rozwiązań, z których wybierane jest rozwiązanie bazowe i ostatecznie prowadzi to do zmniejszenia szans na znalezienie dobrych rozwiązań. Długość listy T wyznacza się eksperymentalnie. Dla szerokiej klasy problemów waha się ona w granicach od kilku do kilkunastu elementów. Zmienna długość listy T pozwala na sterowanie intensyfikacją i dywersyfikacją procesu przeszukiwania. Gdy lista T jest krótka, mało restrykcyjna, następuje bardziej intensywne przeszukiwanie stosunkowo małego obszaru przestrzeni rozwiązań wokół aktualnego rozwiązania bazowego. Długa lista T, bardziej restrykcyjna, pozwala na przejście do innego obszaru przestrzeni rozwiązań. W przypadku gniazdowego [8], dobre rezultaty otrzymano zmieniając cyklicznie długość listy T zgodnie z następującym wyrażeniem: 48 Sterowanie i optymalizacja LT S, LengthT = 1, 5 × LT S, if W (l) < iter ≤ W (l) + H(l), if W (l) + H(l) < iter ≤ W (l) + H(l) + h, Pl gdzie l = 1, 2, . . . jest numerem cyklu, W (l) = s=1 H(s − 1) + (l − 1) × h (gdzie H(0) = 0), i LT S = 6 + [n/(10m)], gdzie [x] oznacza wartość całkowitą x. Długość piku h (liczba iteracji z podwyższoną długością listy T) jest równa 2 × LT S, natomiast liczba iteracji pomiędzy pikami H(l) jest równa 6 × LT S. Jeżeli długość listy T (LengthT ) zmniejsza się to odpowiednia liczba najstarszych elementów jest usuwana z listy. W dalszej części rozdziału przedstawimy wyniki eksperymentu obliczeniowego mającego na celu sprawdzenie wpływu przedstawionych elementów na efektywność algorytmów zstępujących oraz algorytmów tabu w następujących konfiguracjach: TS – klasyczny algorytm, TS+M – algorytm TS z dynamiczną listą T i multiruchami, TS+MP – TS+M z selektywnym wykonywaniem multiruchów. 2.3 Wyniki obliczeniowe Efektywność algorytmów DS, DS+M, TS, TS+M, TS+MP porównano z efektywnością najnowszych algorytmów popraw dedykowanych rozważanemu problemowi SA i GA [1] oraz GASA i VNS [19]. Algorytmy te były testowane na komputerze PC z procesorem Pentium 1000 MHz na takim samym zestawie literaturowych przykładów testujących jak w pracy [19]. Każdy z algorytmów niedeterministycznych, tzn. GASA, SA, GA, rozwiązywał 30-to krotnie każdy z przykładów (podobnie jak w [19]). Dla lepszego zilustrowania działania trójfazowych algorytmów GA oraz SA (podobnie jak w [1]) zachowano najlepsze rozwiązania znalezione po zakończeniu pierwszej, drugiej i trzeciej fazy. Są to rezultaty oznaczone odpowiednio SA1, SA2, SA3 oraz GA1, GA2, GA3. Do wyznaczenia permutacji początkowej dla algorytmu TS został użyty odpowiednio zaadoptowany algorytm NEH [12]. Adaptacja tego algorytmu do potrzeb rozważanego problemu polegała na uwzględnieniu ograniczeń „bez czekania” podczas wyznaczania wartości funkcji celu dla każdej permutacji częściowej przetwarzanej w algorytmie. Algorytmy TS, TS+M, TS+MP kończyły działanie po wykonaniu 1 000 iteracji. Dla każdej instancji problemu wyliczono następujące wielkości: • C A – wartość funkcji celu otrzymana algorytmem A ∈ { VNS, GASA, SA1, SA2, SA3, GA1, GA2, GA3, DS, DS+M, TS, TS+M, TS+MP}. • P RD(A) – 100%(C(A)−C ref )/C ref procentowa różnica wartości funkcji celu uzyskanej algorytmem A względem wartości C ref uzyskanej algorytmem Rajedrana, • CP U – czas obliczeń w sekundach. Problem przepływowy z ograniczeniami bez “czekania” 49 Tablica 2.1. Wyniki badań testowych Instancja Nazwa n × m SA 1 SA 2 PRD PRD PRD CPU PRD PRD PRD CPU PRD CPU PRD CPU reC01 reC03 reC05 reC07 reC09 reC11 hel2 reC13 reC15 reC17 20× 5 20× 5 20× 5 20× 10 20× 10 20× 10 20× 10 20× 15 20× 15 20× 15 -0,25 1,10 -4,52 3,21 -2,10 0,62 -1,59 -0,15 -4,46 -4,93 -0,25 1,10 -4,52 0,94 -2,10 0,62 -4,23 -5,54 -4,46 -4,96 -1,19 -1,10 -4,52 0,71 -3,04 0,15 -4,23 -5,54 -4,46 -5,47 0,0 0,0 0,0 0,1 0,1 0,0 0,0 0,1 0,1 0,1 -1,26 -4,87 -4,83 0,05 -0,93 -0,21 -2,65 -3,14 -3,64 -3,61 -1,26 -4,87 -6,35 -1,37 -2,85 -0,57 -4,76 -5,06 -3,64 -3,61 -1,26 -4,87 -6,35 -2,78 -2,85 -1,08 -4,76 -5,06 -3,64 -3,61 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 -2,77 -4,32 -7,03 -2,31 -2,38 -1,54 -4,76 -5,76 -5,91 -5,15 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -3,96 -4,46 -6,90 -3,45 -4,48 -3,34 -4,76 -5,65 -6,02 -5,47 8,4 8,4 9,8 16,8 15,4 14,0 14,0 23,8 23,8 22,4 reC19 reC21 reC23 reC25 reC27 reC29 30× 30× 30× 30× 30× 30× -5,92 -1,76 -5,48 -1,72 -2,41 -4,29 -5,92 -1,76 -6,20 -4,09 -2,41 -4,29 -5,92 -2,29 -6,20 -4,22 -2,41 -5,24 0,1 0,1 0,2 0,2 0,1 0,2 -4,85 -0,93 -3,23 -2,16 -0,60 -2,17 -7,70 -3,35 -6,50 -4,98 -0,60 -5,18 -7,70 -5,07 -7,85 -4,98 -1,92 -5,18 0,2 0,2 0,2 0,3 0,4 0,3 -7,57 -4,21 -10,7 -5,45 -5,83 -7,23 2,0 1,0 1,0 2,0 2,0 2,0 -5,45 -2,22 -6,70 -2,69 -2,60 -3,99 47,6 49,0 49,0 77,0 71,4 75,6 reC31 reC33 reC35 50× 10 50× 10 50× 10 10 10 10 15 15 15 reC37 75× 20 reC39 75× 20 reC41 75× 20 hel1 100× 10 Średnio SA 3 GA 1 GA 2 GA 3 VNS GASA -2,33 -2,89 -2,89 -0,84 -2,68 -2,96 -2,42 -2,42 -2,80 0,5 -1,30 -1,30 -2,09 0,9 -1,84 -3,19 -3,19 0,6 -1,29 -1,29 -1,87 0,6 -4,71 7,0 2,72 205,8 0,5 -5,35 11,0 4,78 203,0 0,6 -5,51 10,0 3,67 204,0 -5,70 -2,15 -3,59 -3,08 2,1 2,1 3,8 4,9 3,3 2,4 2,8 4,5 -5,70 -2,15 -4,98 -4,74 -5,74 -2,37 -5,62 -4,74 -2,38 -3,20 -3,57 -5,26 -3,93 -5,25 -3,08 -5,99 -3,93 -5,40 -4,23 -6,27 -4,39 -5,49 -4,74 -2,65 -3,83 -4,22 -10,0 -5,32 -7,41 -7,82 -5,61 174,0 151,0 157,0 263,0 5,89 8,80 6,79 12,4 1270,0 1246,0 1266,0 1523,0 1,18 Z rezultatów badań obliczeniowych zamieszczonych w Tablicy 2.1 wynika, że algorytmy oparte na metodzie przeszukiwania z zabronieniami TS, TS+M, TS+MP są zdecydowanie lepsze od istniejących algorytmów SA1–SA3, GA1– GA3, oraz GASA i VNS, zarówno ze względu na jakość generowanych rozwiązań jak i czas obliczeń. Najgorszy z algorytmów bazujących na tej metodzie, algorytm TS generuje rozwiązania średnio o 6, 5% lepsze od rozwiązań otrzymanych algorytmem RAJ [15], podczas, gdy dla najlepszego z istniejących algorytmów VNS poprawa ta wynosi −5, 61%, czyli prawie 1% gorzej. Osiągnięcie takiego wyniku przez algorytm VNS okupione było znacznie większym czasem obliczeń niż w przypadku TS, dla dużych przykładów nawet 60 razy większym. Należy podkreślić niską efektywność algorytmów opartych na klasycznych metodach popraw tzn. przeszukiwania genetycznego i symulowanego wyżarzania. Algorytmy GA1 i SA1 generują rozwiązania o średnich wartościach współczynników PRD równych odpowiednio −2, 65% i −2, 38%. Generowane przez algorytm GASA rozwiązania były znacznie gorsze od rozwiązań referencyjnych. 50 Sterowanie i optymalizacja Tablica 2.2. Wyniki badań testowych - kontynuacja Instancja DS DS+M TS TS+M TS+MP Nazwa n×m P RD CP U P RD CP U P RD CP U P RD CP U P RD CP U reC01 reC03 reC05 reC07 reC09 reC11 hel2 reC13 reC15 reC17 20× 5 20× 5 20× 5 20× 10 20× 10 20× 10 20× 10 20× 15 20× 15 20× 15 -3,71 -3,43 -5,62 -1,09 -3,60 -1,44 -3,70 -3,43 -4,83 -5,51 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -3,58 -4,43 -5,62 -1, 08 -3,60 -1,44 -3,70 -4,43 -4,83 -5,51 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -4, 03 -6,59 -7,39 -3,63 -4,62 -3,34 -5,29 -6,05 -5, 91 -5,58 0,2 0,2 0,2 0,2 0,3 0,2 0,2 0,3 0,3 0,3 -3,96 -6,59 -7,64 -3,63 -4,58 -3,34 -5,29 -6,05 -6,02 -5,58 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,3 0,3 0,3 -3,96 -6,59 -7,70 -3,63 -4,58 -3,34 -5,29 -6,05 -5,91 -5,58 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,3 0,3 0,3 reC19 reC21 reC23 reC25 reC27 reC29 30× 30× 30× 30× 30× 30× 10 10 10 15 15 15 -7,70 -3,68 -7,29 -3,08 -3,64 -7,23 0,0 0,0 0,0 0,0 0,0 0,0 -7,44 -4,68 -7,29 -3,08 -3,64 -7,36 0,0 0,0 0,0 0,0 0,0 0,0 -9,72 -6,37 -10,76 -5, 97 -5, 64 -7, 94 0,4 0,4 0,4 0,5 0,5 0,5 -9,25 -6,30 -10,73 -6,31 -6,10 -8,28 0,4 0,4 0,4 0,5 0,5 0,5 -9,38 -6,17 -10,89 -6,21 -5,83 -7,94 0,4 0,4 0,4 0,5 0,5 0,5 reC31 reC33 reC35 50× 10 50× 10 50× 10 -3,76 -1,97 -4,94 0,0 0,0 0,0 -3,78 -2,01 -4,94 0,0 0,0 0,0 -5, 90 -5, 51 -6,08 1,1 1,1 1,1 -6,13 -6,31 -6,17 1,1 1,1 1,1 -6,22 -6,37 -5,91 1,1 1,1 1,1 reC37 75× 20 reC39 75× 20 hel1 100× 10 -7,80 -4,97 -5,13 0,1 0,1 0,1 -7,92 -5,12 -5,51 0,0 0,0 0,0 -9,41 -7, 00 -8,08 2,5 2,5 3,8 -9,49 -6,99 -8,21 2,6 2,6 3,9 -9,36 -6,91 -8,33 2,6 2,6 3,9 Średnio -4,51 -4,53 -6,50 -6,59 -6,56 Algorytmy SA3 i GA3 działały w czasie porównywalnym z czasem działania TS jednakże jakość otrzymywanych rozwiązań była znacznie gorsza od TS, średnia wartość współczynnika PRD wynosi odpowiednio −3, 57% i −4, 22%. W przypadku algorytmów SA3 i GA3, znaczną poprawę wnosiły dwie ostatnie fazy obliczeń bazujących na metodzie przeszukiwania zstępującego. Wysoką skuteczność tej metody potwierdzają również wyniki dotyczące algorytmów DS i DS+M. Średnia poprawa uzyskiwana przez te algorytmy wynosi odpowiednio −4, 51% i −4, 54%. Jest to rezultat gorszy od rezultatu uzyskanego przez algorytm VNS, ale lepszy od innych istniejących algorytmów. Algorytmy TS, TS+M, TS+MP po wykonaniu 1 000 iteracji dają podobne rezultaty. Najlepszym z nich okazał się algorytm TS+M (PRD=−6, 59%), nieco gorszym TS+MP (PRD=−6, 56%), który z kolei był nieco lepszy od algorytmu TS (PRD=−5, 60%). Również czas obliczeń był podobny i nie przekraczał 4 sekund dla największej z testowanych instancji. Ze szczegółowej analizy działania algorytmów zstępujących (prezentowanych w pracy [10]) wynika, że DS+M potrzebuje mniejszej liczby iteracji żeby znaleźć rozwiązania o takiej samej (lub zbliżonej) wartości funkcji celu co algorytm Problem przepływowy z ograniczeniami bez “czekania” 51 DS. Przewaga algorytmu DS+M nad DS zwiększa się wraz ze wzrostem liczby zadań n. Algorytm DS+M wykonywał co najwyżej 4 iteracje podczas, gdy liczba ta dla algorytmu DS wynosiła 19. Co ciekawe, liczba iteracji algorytmu DS+M praktycznie nie zależy od liczby zadań, ta zależność w przypadku DS jest wyraźna i rosnąca. Podobny fenomen wynikający z wykorzystania multiruchów można zaobserwować w algorytmach bazujących na metodzie przeszukiwania z zabronieniami TS+M i TS+MP. Dla tych algorytmów, aż 90% uzyskanej poprawy otrzymano w ciągu pierwszych 100 iteracji algorytmu. Odpowiednia liczba iteracji algorytmu TS była bliska 300 iteracji. Badania były częściowo finansowane ze środków KBN, grant 4T11A 01624. 2.4 Bibliografia [1] T. Aldowaisan, A. Allahverdi. New heuristics for no-wait flowshops to minimize makespan. Computers and Operations Research, 30:1219-1231, 2003. [2] J. R. Callahan. The Nothing Hot Delay Problems in the Production of Steel. Ph. D. Thesis, Department of Industeial Engineering, University of Toronto, Canada 1971. [3] R. Gangadharan, C. Rajedran. Heuristic algorithms for scheduling in no-wait flowshop. International Journal of Production Economics, 32:285-290, 1993. [4] P.C. Gilmore, R.E. Gomory. Sequencing a state-variable machine: a solvable case of the traveling salesman problem. Operations Research, 12:655-679, 1964. [5] C.A. Glass, J.N.D. Gupta,C.N. Potts. Two-machine no-wait flow shop scheduling with missing operations. Mathematics of Operations Research, 24(4):911-924, 1999. [6] J. Grabowski, J. Pempera. Sequencing of jobs in some production system. European Journal of Operational Research, 125:535-550, 2000. [7] J. Grabowski, M. Syslo. On some machine Sequencing problems (I). Applications of Mathematicae, 13:340-345, 1973. [8] J. Grabowski, M. Wodecki. A very fast tabu search algorithm for the job shop problem. In: Rego C and Alidaee B, editors. Metaheuristic Optimization via Memory and Evolution: Tabu Search and Scatter Search. Kluwer Academic Publishers, 2004, in print. [9] J. Grabowski, M. Wodecki, A very fast tabu search algorithm for the flow shop problem with makespan criterion. Computers and Operations Research, 11:18911909, 2004. [10] J. Grabowski, J. Pempera. Some local search algorithms for no-wait flow shop problem with makespan criterion. Computers and Operations Research, (w druku). [11] N.G. Hall, C. Sriskandarayah. A survey of machine scheduling problems with blocking and no-wait in process. Operations Research, 44:510-525, 1996. [12] M. Nawaz, E. Enscore, I. Ham. A Heuristic algorithm for the m-machine, n-job flowshop sequencing problem. OMEGA The International Journal of Management Science, 11:91-95, 1983. 52 Sterowanie i optymalizacja [13] J. Pempera. Algorytmy szeregowania zadań w pewnym dyskretnym procesie produkcyjnym. Rozprawa doktorska, Instytut Cybernetyki Technicznej Politechniki Wrocławskiej, 2001. [14] W. Raaymakers, J. Hoogeveen. Scheduling multipurpose batch process industries with no-wait restrictions by simulated annealing. European Journal of Operational Research, 126:131-151, 2000. [15] C. Rajendran. A no-wait flowshop scheduling heuristic to minimize makespan. Journal of the Operational Research Society, 45:472-478, 1994. [16] G.V. Reklaitis. Review of Scheduling of process Operations. AICHE Symposium Series, 78:19-133, 1982. [17] H. Röck . The Three machine No-wait Flowshop Problem Is NP-complete. Journal of the Association for Computing Machinery, 31:336-345, 1984. [18] M.S. Salvador. A Solution of a Special Class of Flowshop Scheduling Problems. In Proceedings of the Symposium on the Theory of scheduling and Its Applications. Springr-Verlag, Berlin, 83-91, 1973. [19] C.J. Schuster, J.M. Framinan. Approximative procedures for no-wait job shop scheduling. Operations Research Letters, 31:308-318, 2003. [20] J.B. Sidney, C.N. Potts, C. Sriskandarayah. Heuristic for scheduling twomachine no-wait flow shops with anticipatory setups. Operations Research Letters, 26(4):165-73, 2000. [21] C. Smutnicki. Optimization and control in just-in time manufacturing systems. Prace naukowe Instytutu Cybernetyki Technicznej Politechniki Wrocławskiej. Seria Monografie 1997. 3 Analiza przestrzeni rozwiązań wybranych problemów przepływowych Jarosław Pempera Problemy przepływowe modelują stosunkowo mało skomplikowane systemy produkcyjne charakteryzujące się przepływem produktów przez stanowiska realizujące kolejne etapy procesu technologicznego. Tego typu systemy produkcyjne występują bardzo często w rzeczywistych zakładach produkcyjnych, szczególnie tam gdzie poszczególne etapy produkcyjne realizowane są przez maszyny odmiennego typu. W takich systemach, w prosty sposób, można zrealizować transport międzystanowiskowy oraz stosować politykę wytwarzania polegającą na rezygnacji z magazynowania w buforach produktów i/lub rezygnacji z czekania z obróbką pomiędzy kolejnymi maszynami. Problemy przepływowe, poza nielicznymi przypadkami szczególnymi (z reguły rzadko występującymi w praktyce) należą do problemów NP-trudnych co wymusza stosowanie algorytmów przybliżonych do rozwiązywania instancji problemu o praktycznych rozmiarach. Podstawowy problem przepływowy, tj. permutacyjny problem przepływowy, należy do jednych z najbardziej przebadanych zagadnień. Do jego rozwiązania zaproponowano bardzo dużo algorytmów przybliżonych opartych na metodach konstrukcyjnych i wielu metodach przeszukiwania lokalnego (opis podstawowych algorytmów dedykowanych temu problemowi można znaleźć między innymi w monografi [18]). Z praktycznego punktu widzenia najbardziej atrakcyjnymi wydają się być algorytmy bazujące na metodach przeszukiwań lokalnych. Z licznych badań eksperymentalnych wynika, że spośród dużej liczby metod (technik) konsturowania algorytmów przeszukiwań lokalnych, najbardziej efektywnymi są algorytmy oparte na technikach: przeszukiwania genetycznego, przeszukiwania z zabronieniami i symulowanego wyżarzanienia. Przed zastosowaniem konkretnego algorytmu wspomagającego harmonogramowanie zadań w rzeczywistych systemach produkcyjnych należy odpowiedzieć na zasadnicze pytanie: Czy i w jakim stopniu ograniczenia występujące w konkretnym systemie produkcyjnym wpływają na efektywność stosowanego algorytmu ? W tym rozdziale, bazując na analizie przestrzeni rozwiązań permutacyjnego problemu przepływowego, problemu przepływowego z ograniczeniami bez czekania oraz problemu przepływowego z ograniczeniami bez magazynowania, przedstawimy wpływ ograniczeń na krajobraz przestrzeni, a co się z tym wiąże, na efektywność powiązanych z nim algorytmów popraw. 54 3.1 Sterowanie i optymalizacja Problemy przepływowe W permutacyjnym problemie przepływowym (FP) park maszynowy składa się z m maszyn ze zbioru M = {1, . . . , m}, na których należy wykonać n zadań ze zbioru J = {1, . . . , n}. Każde zadanie j ∈ J wykonywane jest na wszystkich maszynach w kolejności zgodnej z numerami maszyn. Zadanie j ∈ J wykonywane jest na maszynie k przez czas pjk > 0, k = 1, . . . , m. Kolejność wykonywania zadań na wszystkich maszynach jest jednakowa. Przyjmuje się, że w danej chwili maszyna k ∈ M może wykonywać tylko jedno zadanie oraz że zadanie j ∈ J może być wykonywane tylko na jednej maszynie. W praktyce często występują ograniczenia technologiczne. Najczęściej wynikają one z ograniczonej pojemności buforów magazynujących produkty przed i/lub po obróbce na danej maszynie oraz z ograniczonego czasu oczekiwania pomiędzy obróbką na dwóch sąsiednich stanowiskach. Przypadkami skrajnymi tych ograniczeń jest odpowiednio brak magazynowania (bufor o zerowej pojemności) oraz brak możliwość oczekiwania przed obróbką. Problem przepływowy pomimo prostego sformułowania należy do problemów trudnych obliczeniowo. Jedynie dla m = 2 rozważane problemy przepływowe są rozwiązywalne algorytmami wielomianowymi [9], [3]. W problemie przepływowym z ograniczeniem bez magazynowania (FNS) rozpoczęcie wykonywania zadania na maszynie k-tej może nastąpić dopiero po zwolnieniu tej maszyny przez zadanie je poprzedzające w ustalonej kolejności wykonywania zadań. Ze względu na brak magazynowania moment zwolnienia maszyny może być późniejszy od momentu zakończenia wykonywania zadania. Taka sytuacja zachodzi wtedy, gdy w momencie zakończenia wykonywania zadania następna maszyna jest jeszcze zajęta (obsługuje inne zadanie). Ograniczenie charakterystyczne dla problemu przepływowego z ograniczeniem bez czekania (FNW) oznacza, że rozpoczęcie wykonywania zadania na maszynie k musi nastąpić niezwłocznie po zakończeniu wykonywania na maszynie k − 1, k = 2, . . . , m. Kolejność wykonywania zadań możemy opisać przy pomocy permutacji π = (π(1), . . . , π(n)) (numerów) zadań ze zbioru J. Zbiór wszystkich permutacji będziemy oznaczali symbolem Π. Dla ustalonej kolejności π dopuszczalny harmonogram wykonywania zadań na maszynach określony przez momenty rozpoczęcia wykonywania zadań Sjk i/lub momenty zakończenia wykonywania zadań Cjk , j = 1, . . . , n, k = 1, . . . , m musi spełniać następujące ograniczenia: Sj1 ≥ 0, j = 1, . . . , n, (3.1) Cjk = Sjk + pjk j = 1, . . . , n, k = 1, . . . , m, (3.2) Sjk ≥ Cj,k−1 j = 1, . . . , n, k = 2, . . . , m, (3.3) Sπ(j),k ≥ Cπ(j−1),k j = 2, . . . , n, k = 1, . . . , m, (3.4) Analiza przestrzeni rozwiązań ... 55 Do powyższego zestawu ograniczeń występujących w klasycznym problemie przepływowym należy dodać warunek Sπ(j),k ≥ Cπ(j−1),k+1 j = 2, . . . , n, k = 2, . . . , m, (3.5) w przypadku problemu z ograniczeniem bez magazynowania oraz warunek Sπ(j),k = Cπ(j),k−1 j = 1, . . . , n, k = 2, . . . , m, (3.6) w przypadku problemu z ograniczeniem bez czekania. Wszystkie wartość Sjk , Cjk można wyznaczyć w czasie O(nm). Chcemy znaleźć permutację π ∗ taką, że Cmax (π ∗ ) = minπ∈Π Cmax (π), (3.7) gdzie Cmax (π) = Cπ(n)m jest czasem potrzebnym do zrealizowania wszystkich zadań w kolejności określonej przez π. 3.2 Analiza rozwiązań losowych Badania obliczeniowe zostały wykonane na literaturowych instancjach testowych z pracy Tailarda [19]. Zbiór testowy składa się z 120 trudnych instancji problemu przepływowego, które zostały wybrane z wielu instancji generowanych losowo. Zbiór ten jest podzielony na 12 grup. Każda z grup (oznaczona symbolem n × m) składa się z 10 instancji o tej samej liczbie zadań n oraz tej samej liczbie maszyn m. W badaniach testowych ograniczono się do pierwszych 9 grup o rozmiarach: 20×5, 20×10, 20×20, 50×5, 50×10, 50×20, 100×5, 100×10 i 100×20. Dla każdej instancji problemu wygenerowano 100 000 permutacji losowych ze zbioru Π oraz wyznaczono rozwiązanie referencyjne π ∗ w sposób opisany w dalszej części pracy. Dla każdej permutacji π wyznaczono wartość funkcji celu Cmax (π), błąd względny P RD(π, π ∗ ) = 100%(Cmax (π) − Cmax (π ∗ ))/Cmax (π ∗ ) (3.8) oraz wyznaczono parametry statystyczne błędu względnego tj. średni błąd względny, odchylenie standardowe, minimalny i maksymalny błąd względny. Dla każdej grupy wyznaczono uśrednione wartości średniego błędu względnego APRD, odchylenia standardowego, wartości minimalnej i maksymalnej oraz wartość minimalną i maksymalną dla danej grupy. Dodatkowo wyznaczono uśrednioną wartość średnią i uśrednione odchylenie standartowe wartości funkcji celu. Badania przeprowadzono dla trzech problemów rozważanych w rozdziale. Z analizy wyników zebranych w tablicy 3.1 pod kątem zależności APRD od liczby maszyn i/lub zadań wynika, że w przypadku permutacyjnego problemu przepływowego, dla ustalonej liczby maszyn m, APRD zmniejsza się wraz ze wzrostem liczby zadań, a dla ustalonej liczby zadań n, wraz ze zmniejszeniem liczby maszyn. W przypadku problemu przepływowego z ograniczeniem bez 56 Sterowanie i optymalizacja Tablica 3.1. Parametry statystyczne błędu względnego i wartości funkcji celu Cmax Grupa AVE P RD SD AVE SD MIN MAX MIN1) MAX1) 5,9 5,2 3,8 3,9 3,7 3,1 2,9 2,7 2,3 5,0 9,5 7,5 4,4 12,0 14,2 3,2 9,4 13,0 52,2 52,3 39,0 37,2 43,1 41,2 27,9 32,8 33,0 1,4 6,9 5,9 2,1 9,5 12,4 2,0 8,3 11,9 70,2 61,6 43,1 41,4 48,9 44,9 31,5 37,4 36,3 Permutacyjny problem przepływowy 20×5 20×10 20×20 50×5 50×10 50×20 100×5 100×10 100×20 1524,9 1940,5 2722,7 3216,7 3792,1 4754,5 5939,6 6743,4 7877,2 71,2 78,3 85,5 107,8 112,0 115,7 152,2 152,9 149,0 25,1 28,3 21,8 17,5 25,4 26,5 13,2 19,2 21,6 Problem przepływowy z ograniczeniami bez magazynowania 20×5 20×10 20×20 50×5 50×10 50×20 100×5 100×10 100×20 1780,4 2144,6 2866,4 4108,9 4601,4 5391,4 7990,6 8733,1 9550,3 58,6 66,7 76,9 76,8 81,0 93,0 98,9 97,9 102,5 30,6 27,6 20,9 32,9 27,6 24,0 33,5 27,4 21,7 4,3 4,0 3,2 2,5 2,2 2,1 1,7 1,4 1,3 11,8 10,9 7,8 21,7 17,7 14,9 26,3 21,2 16,2 47,1 43,3 34,3 43,1 36,7 33,1 40,5 33,6 27,4 9,3 9,2 6,3 18,6 15,7 12,7 24,0 19,3 15,2 54,2 51,9 38,7 48,8 40,0 35,9 43,4 37,5 28,6 11,9 13,3 12,8 29,0 32,0 33,8 36,1 40,7 43,5 72,9 75,5 78,1 72,1 86,4 82,8 66,9 84,2 85,4 Problem przepływowy z ograniczeniami bez czekania 20×5 20×10 20×20 50×5 50×10 50×20 100×5 100×10 100×20 1) 2104,2 2882,5 4256,9 4941,5 6737,9 9411,2 9711,4 13140,5 17873,3 86,6 125,3 182,9 132,9 191,6 275,8 183,0 263,1 369,2 - wartości ekstremalne w grupie 42,2 45,4 43,3 49,5 56,5 58,1 52,7 59,9 62,1 5,9 6,3 6,2 4,0 4,4 4,6 2,9 3,2 3,3 15,4 17,7 17,1 32,0 37,1 37,4 40,2 45,2 46,6 64,1 68,9 66,1 66,1 74,6 76,8 64,5 73,3 76,2 Analiza przestrzeni rozwiązań ... 57 magazynowania APRD praktycznie nie zależy od liczby zadań, natomiast maleje wraz ze wzrostem liczby maszyn. W problemie przepływowym z ograniczeniem bez czekania APRD maleje wraz ze zmniejszaniem się liczby zadań i maszyn. Wartość APRD wzrasta wraz ze wzrostem restrykcyjności ograniczeń. Najmniejsza jest dla FP (13,2%-28,3%), następnie dla FNS (20,9%-33,5%), a największa jest dla FNW (42,2%-62,1%). Wnikliwa analiza pozwala stwierdzić, że wartości APRD problemu FNS są zbliżone do wartości APRD problemu FP, natomiast wartości APRD problemu FNW są znacząco większe od wartości APRD problemów FP i FNS. W podobny sposób zachowują się pozostałe parametry średnie. Analizując wyniki prezentowane w pierwszej kolumnie tablicy, można zauważyć, że wraz ze wzrostem liczby zadań i/lub maszyn rośnie średnia wartość funkcji celu. Podobny wpływ ma zwiększanie restrykcyjności ograniczeń. Dla przykładu, instancje o największej liczbie zadań i maszyn cechują się przeszło dwukrotnie większą średnią wartością funkcji celu dla problemu FNW w stosunku do problemu FP. 3.3 Wielka dolina W wyniku badań statystycznych wielu problemów optymalizacji dyskretnej zauważono, że dla wielu z nich istnieje istotna korelacja dodatnia pomiędzy wartością funkcji celu rozwiązań lokalnie optymalnych a ich odległością od rozwiązania optymalnego (najlepszego wyznaczonego). Tego typu własność krajobrazu przestrzeni rozwiązań nazywana jest dużą doliną (ang. big valley). Zaobserwowano jej występowanie w takich problemach jak problem komiwojażera [1], problem dwupodziału grafu [1], kolorowania grafu [2] oraz w problemach szeregowania zadań takich jak problem przepływowy [11] i gniazdowy [14]. Badania te przyczyniły się do powstania algorytmów opartych na metodach popraw wykorzystujących tę własność [1],[10],[13]. Krajobraz przestrzeni rozwiązań określony jest przez zbiór lokalnie optymalnych rozwiązań oraz miarę odległości pomiędzy parami rozwiązań. Wydaje się logicznym powiązanie tej miary z definicją zbioru ruchów, który generuje dane sąsiedztwo. Wtedy odległość między dwoma rozwiązaniami określana jest jako minimalna liczba ruchów potrzebna do przetransformowania jednego rozwiązania w drugie. W większości istniejących algorytmów dedykowanych problemom przepływowym sąsiedztwo generuje się opierając na trzech typach ruchów: (i) zamień sąsiednie (S-ruch) definiowany przez parę v = (x, x + 1) oznacza zamianę miejscami dwóch sąsiednich zadań. Precyzyjniej, S-ruch v = (x, x + 1) generuje permutację πv z π w następujący sposób : πv = (π(1), ..., π(x − 1), π(x + 1), π(x), ..., π(n)). (ii) wymień (T-ruch) definiowany przez parę v = (x, y) oznacza transpozycję zadań stojących na pozycjach x i y w π. Precyzyjniej, T-ruch v = (x, y) 58 Sterowanie i optymalizacja generuje permutację πv z π w następujący sposób : πv = (π(1), ..., π(x − 1), π(y), π(x + 1), ..., π(y − 1), π(x), ..., π(n)). (iii) wstaw (I-ruch) definiowany przez parę v = (x, y) oznacza usunięcie zadania π(x) z pozycji x w π i wstawienie na pozycję y w π. Precyzyjniej, I-ruch v = (x, y) generuje permutację πv z π w następujący sposób : πv = (π(1), ..., π(x − 1), π(x + 1), ..., π(y), π(x), π(y + 1), ..., π(n)), jeśli x < y, πv = (π(1), ..., π(y − 1), π(x), π(y), ..., π(x − 1), π(x + 1), ..., π(n)), jeśli x > y. Tym trzem typom ruchów odpowiadają trzy miary. Pierwsza z nich, miara SM (π, π 0 ), bazuje na S-ruchach i oznacza minimalną liczbę zamian sąsiednich zadań potrzebną do przetransfomowania permutacji π w permutację π 0 , druga, miara T M (π, π 0 ), bazuje na T-ruchach i oznacza minimalną liczbę wymian zadań w permutacji π prowadzącą do otrzymania permutacji π 0 oraz trzecia, miara IM (π, π 0 ), bazuje na I-ruchach i oznacza minimalną liczbę ruchów I-ruch, które należy wykonać, aby przejść z permutacji π do permutacji π 0 . Zbiór rozwiązań lokalnie optymalnych wygenerowano algorytmem opartym na metodzie przeszukiwania z zabronieniami pracujący na pełnym otoczeniu generowanym przez I-ruchy. Metoda ta jest jedną z najskutecznieszych metod konstruowania algorytmów popraw dla rozważanych problemów [6, 7, 8, 15, 16]. Dla każdej z 90 instancji, dla każdego z trzech rozważanych problemów przepływowych, zbiór rozwiązań lokalnie optymalnych LO generowany był przez z − 1 = 200 krotne uruchomienie algorytmu TS. Podczas każdego uruchomienia algorytm startował z permutacji losowej i wykonywał 100 iteracji. Dodatkowo algorytm TS uruchomiono na 10 000 iteracji z rozwiązania otrzymanego algorytmem NEH [12]. Ze zbioru z rozwiązań lokalnie optymalnych wybrano rozwiązanie najlepsze π ∗ , które traktowane było jako rozwiązanie referencyjne dla danej instancji problemu we wszystkich prezentowanych badaniach eksperymentalnych. Należy nadmienić, że jakość uzyskanych w ten sposób rozwiązań referencyjnych, w przypadku problemu FP dorównuje jakości rozwiązań referencyjnych prezentowanych w pracy [15], w przypadku FNS jest znacznie lepsza niż w pracy [17]. Dla każdego rozwiązania π ∈ LO wyznaczono: • M (π, π ∗ ) – odległość rozwiązania π od rozwiązania referencyjnego π ∗ , M ∈ {SM, T M, IM }, P • AM (π, π ∗ ) = (1/|LO|) α∈LO M (α, π ∗ ) – średnią odległość od pozostałych rozwiązań lokalnie optymalnych, • P RD(π, π ∗ ) = 100%(Cmax (π) − Cmax (π ∗ ))/Cmax (π ∗ ) – błąd względny. Analiza przestrzeni rozwiązań ... 59 Następnie, dla każdej instancji problemu i każdego typu zagadnienia, bazując na parach (M (π, π ∗ ), P RD(π, π ∗ )) oraz (AM (π, π ∗ ), P RD(π, π ∗ )) określonych dla wszystkich elementów zbioru LO, wyznaczono dwa współczynniki korelacji oznaczone odpowiednio ρ∗ i ρA . Ostatecznie dla każdej grupy instancji wyznaczono uśrednione współczynniki Aρ∗ i AρA oraz liczbę l instancji, dla których wartość współczynnika korelacji była istotna na poziomie 0,001. W celu zbadania tej istotności przeprowadzono randomizowany test wykorzystany między innymi w pracy [11]. Wyniki eksperymentu obliczeniowego przedstawiono w tablicy 3.2. Rezultaty badań prezentowane w tablicy 3.2 dotyczące permutacyjnego problemu przepływowego potwierdzają występowanie dużej doliny w krajobrazach bazujących na miarach SM i IM . Znaczący związek pomiędzy odległością danej lokalnie optymalnej permutacji od najlepszej lokalnie optymalnej permutacji można zaobserwować prawie we wszystkich badanych grupach dla tych miar. Siła tego związku mierzona wartością współczynnika ρ∗ rośnie wraz ze wzrostem liczby maszyn m i maleje wraz ze wzrostem liczby zadań n. Związek ten jest stosunkowo słaby dla grup zawierających małą liczbę maszyn. Dla m = 5, n = 100 oraz dla miary IM , współczynnik ten przyjmuje wartość równą 0.20 i jest istotny w czterech przypadkach na dziesięć. W problemie przepływowym z ograniczeniem bez magazynowania (FNS) wartość współczynnika ρ∗ rośnie wraz ze wzrostem liczby maszyn oraz maleje wraz ze wzrostem liczby zadań. Znaczącą wartość, istotną dla dużej liczby instancji osiąga dla grup o najmniejszej liczbie zadań oraz grup o największej liczbie maszyn. W przypadku miary IM wartości tego współczynnika są generalnie większe. Z analizy wyników dotyczących problemu przepływowego z ograniczeniami bez czekania wynika, że wartość współczynnika ρ∗ drastycznie maleje wraz ze wzrostem liczby zadań i w niewielkim stopniu rośnie wraz ze wzrostem liczby maszyn. Podobnie jak w przypadku problemu FNS jego wartość jest generalnie większa dla miary IM niż dla miary SM . Występowanie dużej doliny możemy zaobserwować jedynie dla instancji o małej liczbie maszyn i przede wszystkim w krajobrazie opartym na mierze IM . Krajobrazy bazujące na mierze T M wykazują najsłabszy związek cechujący własność dużej doliny. Co więcej, związek ten istotny jest tylko dla problemów o małej liczbie maszyn. Wartość współczynnika ρA dla miary IM ma dość dużą wartość i dotyczy większości badanych instancji niezależnie od badanego problemu. Odmiennie zachowuje się wartość ρA dla miary SM . W problemie FP jego wartość jest duża i dotyczy prawie wszystkich badanych instancji, natomiast w pozostałych dwóch problemach, FNS i FNW, zachowuje się podobnie do wartości ρ∗ . 3.4 Szorstkość krajobrazu Jedną z najważniejszych charakterystyk krajobrazu jest jego szorstkość (ang. ruggedness). Wydaje się intuicyjnie oczywistym, że czym mniej będzie zróżnicowana wartość funkcji celu rozwiązań ”otaczających” rozwiązanie bazowe, oto- 60 Sterowanie i optymalizacja Tablica 3.2. Wyniki badań dotyczące wielkiej doliny Miara SM (S-ruch) Grupa APRD Aρ∗ l AρA Miara T M (T-ruch) Aρ∗ l l AρA l Miara IM (I-ruch) AρA l Aρ∗ l 0,474 0,519 0,445 0,366 0,407 0,397 0,202 0,355 0,268 10 10 10 10 10 10 4 9 7 0,683 0,688 0,545 0,665 0,666 0,687 0,512 0,624 0,629 10 10 9 10 10 10 9 10 10 0,420 0,564 0,614 0,256 0,364 0,467 0,104 0,211 0,385 9 10 10 6 9 10 0 5 10 0,628 0,626 0,768 0,501 0,556 0,626 0,386 0,429 0,473 10 10 10 10 10 10 10 10 10 0,547 0,639 0,685 0,245 0,338 0,341 0,130 0,221 0,188 10 10 10 7 9 9 1 7 4 0,766 0,729 0,796 0,663 0,723 0,709 0,515 0,592 0,598 10 10 10 10 10 10 10 10 10 Permutacyjny problem przepływowy 20×5 20×10 20×20 50×5 50×10 50×20 100×5 100×10 100×20 1,23 1,33 0,90 0,64 2,29 2,72 0,41 1,26 1,70 0,482 0,589 0,441 0,315 0,445 0,497 0,152 0,373 0,330 8 10 10 9 9 10 4 9 9 0,587 0,631 0,459 0,552 0,653 0,659 0,449 0,603 0,658 10 10 9 10 10 10 10 10 10 0,428 8 0,578 8 0,411 9 0,577 10 0,25 4 0,457 10 0,343 10 0,649 10 0,242 5 0,399 8 0,225 6 0,467 10 0,195 4 0,385 7 0,215 6 0,375 9 0,144 3 0,34 9 Problem przepływowy z ograniczeniami bez magazynowania 20×5 20×10 20×20 50×5 50×10 50×20 100×5 100×10 100×20 0,97 0,81 0,72 2,82 2,99 2,82 4,66 5,15 4,63 0,363 0,502 0,615 0,114 0,207 0,396 0,010 0,070 0,296 9 9 10 1 5 8 0 0 7 0,442 9 0,488 9 0,716 10 0,194 5 0,281 8 0,497 10 0,111 0 0,138 2 0,352 9 0,382 0,498 0,554 0,094 0,195 0,183 -0,001 0,093 0,185 9 9 10 1 5 5 0 1 4 0,484 0,508 0,687 0,229 0,251 0,302 0,129 0,17 0,099 9 9 10 4 9 8 1 4 5 Problem przepływowy z ograniczeniami bez czekania 20×5 20×10 20×20 50×5 50×10 50×20 100×5 100×10 100×20 0,65 0,75 0,51 1,92 2,30 2,32 3,03 3,31 2,99 0,481 0,616 0,656 0,099 0,150 0,164 0,009 0,094 0,022 9 10 9 1 1 3 0 0 0 0,611 10 0,633 9 0,733 10 0,292 8 0,319 10 0,339 9 0,132 1 0,160 3 0,163 3 0,392 9 0,546 9 0,624 10 0,713 10 0,598 10 0,721 10 0,067 1 0,292 7 0,161 3 0,298 9 0,181 5 0,353 8 0,045 0 0,134 2 0,06 1 0,186 4 0,09 0 0,243 7 Analiza przestrzeni rozwiązań ... 61 Tablica 3.3. Średnie wartości ρ(1) i ξ dla różnych krajobrazów FP Grupa SM TM FNS IM Średnia wartość ρ(1) 20×5 0,972 0,841 0,901 20×10 0,958 0,831 0,890 20×20 0,945 0,816 0,878 50×5 0,994 0,930 0,960 50×10 0,988 0,921 0,953 50×20 0,983 0,916 0,948 100×5 0,997 0,964 0,979 100×10 0,995 0,957 0,976 100×20 0,993 0,952 0,972 Średnia wartość ξ 20×5 36,69 6,27 10,11 20×10 23,87 5,92 9,14 20×20 18,56 5,44 8,19 50×5 211,90 14,27 25,25 50×10 87,66 12,62 21,10 50×20 60,82 11,92 19,36 100×5 341,67 27,71 48,12 100×10 235,95 23,40 41,06 100×20 149,52 20,84 35,41 FNW SM TM IM SM TM IM 0,915 0,934 0,940 0,965 0,969 0,972 0,979 0,980 0,983 0,829 0,846 0,838 0,930 0,923 0,928 0,958 0,956 0,958 0,873 0,886 0,885 0,947 0,944 0,949 0,969 0,967 0,970 0,875 0,881 0,885 0,947 0,951 0,952 0,973 0,975 0,975 0,826 0,825 0,828 0,924 0,925 0,925 0,960 0,961 0,961 0,862 0,859 0,859 0,942 0,942 0,942 0,971 0,970 0,970 11,76 15,39 17,02 28,78 32,46 36,69 48,22 50,63 60,38 5,84 6,50 6,18 14,35 13,03 13,99 24,22 22,87 23,86 7,86 8,81 8,73 18,91 18,05 19,55 33,08 30,15 34,07 8,01 8,45 8,69 18,88 20,26 20,75 36,62 40,47 40,81 5,76 5,72 5,82 13,16 13,27 13,30 25,08 25,61 25,72 7,26 7,12 7,09 17,10 17,37 17,35 34,29 33,03 33,86 czenie będzie bardziej płaskie, tym skuteczniejsze będzie działanie algorytmu bazującego na ruchach generujących to otoczenie. Miarą tej charakterystyki jest funkcja autokorelacji. Dla krajobrazu określonego przez zbiór wszystkich rozwiązań Π, funkcję celu C(π) oraz miarę odległości d(x, y), zaproponowano następującą funkcję autokorelacji [20]: AV E((C(x) − C(y))2 )d(x,y)=d ρ(d) = 1 − (3.9) AV E((C(x) − C(y))2 ) gdzie AV E((C(x) − C(y))2 ) oznacza średnią wartość (C(x) − C(y))2 wyznaczoną na zbiorze wszystkich par (x, y), x, y ∈ Π, a AV E((C(x)−C(y))2 )d(x,y)=d oznacza średnią wartość (C(x) − C(y))2 wyznaczoną na zbiorze wszystkich par (x, y), x, y ∈ Π, takich, że odległość rozwiązania x od rozwiązania y wynosi dokładnie d. Wielkość ρ(d) określa korelaję pomiędzy rozwiązaniami oddalonymi o d jeden od drugiego. Ze względu na specyfikę działania algorytmów popraw, szczególne cenną jest znajomość wartości ρ(1), która określa korelacją pomiędzy rozwiązaniami bezpośrednio ze sobą sąsiadującymi. Wartość ρ(1) bliska 1 oznacza, że 62 Sterowanie i optymalizacja wartość funkcji wyznaczona dla rozwiązań sąsiednich jest mało zróżnicowana, krajobraz jest płaski. Odmienna sytuacja zachodzi, gdy zbliża się ona do 0. Wtedy rozwiązania sąsiednie nie są ze sobą skorelowane, co oznacza, że krajobraz jest bardzo zróżnicowany (szorstki). Ze względu na dużą liczebność zbioru rozwiązań Π, w celu praktycznego wyznaczenia szorstkości krajobrazu, proponuje się wykorzystanie błądzenia losowego i funkcję autokorelacji zdefiniowaną następująco [20]: r(s) = 1 − AV E((C(xi ) − C(xi−s ))2 ) 2(AV E(C 2 ) − (AV E(C))2 ) (3.10) gdzie (x1 , x2 , ...., xk ) jest trajektorią (ciągiem rozwiązań) generowaną przez algorytm błądzenia losowego. Na bazie r(1) definiujemy współczynnik autokorelacji ξ jako ξ = 1/(1−r(1)). Odpowiednio do poprzednich komentarzy, większa wartość ξ oznacza, że krajobraz jest bardziej płaski. W celu przebadania szorstkości krajobrazu przestrzeni rozwiązań zaimplementowano trzy algorytmy oparte na metodzie błądzenia losowego różniące się typem otoczenia. Operowały one na otoczeniach generowanych odpowiednio przez S, T i I-ruchy. Dla każdego z rozważanych problemów, dla każdej z 90 opisanych wcześniej instancji problemu przepływowego, każdy z trzech algorytmów uruchamiano na 100 000 iteracji. Na bazie tych 100 000 rozwiązań wyznaczono ρ(1) i ξ oraz ich wartości średnie wyznaczone dla każdej grupy. Rezultaty eksperymentu obliczeniowego zebrano w tablicy 3.3. Z wyników eksperymentu dotyczących permutacyjnego problemu przepływowego wynika, że wraz ze wzrostem liczby maszyn szorstkość krajobrazu przestrzeni rośnie, natomiast maleje wraz ze wzrostem liczby zadań. Zależność ta obserwowana jest w krajobrazach opartych na wszystkich badanych miarach. W problemie przepływowym z ograniczeniami bez magazynowania można zaobserwować, że wraz ze wzrostem liczby maszyn maleje szorstkość krajobrazu, natomiast w przypadku problemu z ograniczeniami bez czekania szorstkość praktycznie nie zależy od liczby maszyn. Podobnie jak w permutacyjnym problemie przepływowym, w obu problemach z ograniczeniami wraz ze wzrostem liczby zadań krajobraz staje się bardziej płaski. Z badań wynika, że krajobraz oparty na mierze SM jest najbardziej płaski, natomiast krajobraz oparty na mierze T M jest najbardziej szorstki. Wraz ze wzrostem restrykcyjności ograniczeń wyraźnie zwiększa się szorstkość krajobrazu opartego na mierze SM . 3.5 Uwagi końcowe Prezentowane w tym rozdziale wyniki analiz przestrzeni rozwiązań w zasadzie potwierdzają wiele obserwacji dotyczących algorytmów heurystycznych rozwiązujących permutacyjny problem przepływowy. Przeanalizujemy kilka z nich. Wraz ze wzrostem liczby maszyn rozwiązanie problemu staje się trudniejsze. Obserwacja ta ma swoje potwierdzenie w przypadku analizy rozwiązań losowych i szorstkości krajobrazu. Można łatwo zauważyć, że wraz ze wzrostem Analiza przestrzeni rozwiązań ... 63 liczby maszyn wzrasta średnia wartość błędu względnego oraz wzrasta szorstkość krajobrazu przestrzeni rozwiązań. Oznacza to, że z jednej strony, w zbiorze rozwiązań znajduje się coraz mniejsza frakcja rozwiązań bliskich optymalnemu, z drugiej strony, że otoczenie rozwiązań staje się coraz bardziej zróżnicowane. Wraz ze wzrostem liczby zadań rozwiązanie problemu staje się łatwiejsze. W tym przypadku wraz ze wzrostem liczby zadań maleje średnia wartość błędu względnego oraz maleje szorstkość krajobrazu przestrzeni rozwiązań (krajobraz staje się bardziej płaski). Algorytmy bazujące na otoczeniu generowanym przez T -ruchy są mało skuteczne. Krajobraz przestrzeni oparty na mierze T M jest najbardziej szorstki spośród krajobrazów opartych na wszystkich badanych miarach, poza tym, w tym krajobrazie nie występuje duża dolina, której występowanie z reguły wpływa na dużą efektywność algorytmów popraw. Powszechnie uważa się, że efektywne algorytmy rozwiązujące problemy przepływowe z ograniczeniami bez czekania powinny bazować na otoczeniu generowanym przez T -ruchy. Wynika to z podobieństwa tego problemu do problemu komiwojażera. Rezultaty badań, jednoznacznie pokazują, że krajobraz bazujący na mierze IM ma lepsze parametry zarówno, jeżeli chodzi o szorstkość jak i zależność charakteryzującą własność dużej doliny. Z tego powodu wydaję się w pełni uzasadnionym stosowanie algorytmów popraw bazująch na otoczeniu generowanym przez I-ruchy. Jest to najczęściej stosowane otoczenie w problemach kolejnościowych. Badania eksperymentalne pokazały też, że dodatkowe ograniczenia mogą istotnie wpływać na krajobraz przestrzeni rozwiązań oraz związaną z tym efektywność algorytmów popraw. Zwiększenie restrykcyjności ograniczeń zwiększa trudności w rozwiązywaniu problemu. Co gorsza, krajobraz przestrzeni ewidentnie zmienia się wraz ze zmianą liczby maszyn. Przy czym tendencje jego zmian są odmienne dla różnych ograniczeń. Badania były częściowo finansowane ze środków KBN, grant 4T11A 01624. 3.6 Bibliografia [1] K. D. Bose, A. B. Kahng, S. Muddu. A New adaptive multi-start technique for combinatorial globar optimizations. Operations Research Letters, 16:101–113, 1994. [2] S. Bacci, N. Parga. Ultrametricity, frustration and graph colouring problem. Journal of Physics A: Mathematical and General, 22:3023–3032, 1986. [3] P. C. Gilmore, R. E. Gomory. Sequencing a state-variable machine: a solvable case of the traveling salesman problem. Operations Research, 12:655–679, 1964. [4] J. Grabowski, J. Pempera. New block properties for the permutation flow-shop problem with application in TS. Journal of the Operational Research Society, 52:210–220, 2001. [5] J. Grabowski, J. Pempera. Sequencing of jobs in some production system. European Journal of Operational Research, 125:535–550, 2000. 64 Sterowanie i optymalizacja [6] J. Grabowski, M. Wodecki, A very fast tabu search algorithm for the flow shop problem with makespan criterion. Computers and Operations Research 11:18911909, 2004. [7] J. Grabowski, J. Pempera. Some local search algorithms for no-wait flow shop problem with makespan criterion. Przyjęte do druku w Computers and Operations Research. [8] J. Grabowski, J. Pempera. The permutation flow shop problem with blocking: A tabu search approach. Wysłane do opublikowania. [9] S. M. Johnson. Optimal two- and three-stage production schedules with setup times included. Naval Research Loistics Quarterly, 1:61-68, 1954. [10] C. R. Reeves, T. Yamada. C.R. Reeves, T. Yamada. Genetic algorithms, path relinking and the flow shop sequencing problem. Evolutionary Computation, 6:4560, 1998. [11] C. R. Reeves. Landscapes operators and heuristic search. Annals of Operations Research, 86:473-490, 1999. [12] M. Nawaz, E. Enscore, I. Ham. A Heuristic algorithm for the m-machine, n-job flowshop sequencing problem. OMEGA The International Journal of Management Science 11:91-95, 1983. [13] E. Nowicki, C. Smutnicki. Some new ideas in TS for Job-shop scheduling, in C. Rego and B. Alidaee (eds) Adaptive Memory and Evoltion. Tabu Serach and Scatter Serach, Kluwer Academic Publisher, 2004. [14] E. Nowicki. Krajobraz przestrzeni rozwiązań problemu gniazdowego. Automatyka, 5(1/2):439-447, 2001. [15] E. Nowicki, C. Smutnicki. A fast tabu search algorithm for the permutation flow shop problem. European Journal of Operation Research, 91:160-175, 1996. [16] E. Nowicki. The permutation flow shop with buffers: A tabu search approach. European Journal of Operational Research 116:205-219, 1999. [17] D. P. Ronconi. A branch-and-bound algorithm to mnimize the makespan in a flowshop problem with blocking. Annals of Operations Research, in print. [18] C. Smutnicki. Algorytmy szeregowania. Akademicka Oficyna Wydawnicza EXIT, Warszawa 2002. [19] E. Taillard. Benchmarks for basic scheduling problems. European Journal of Operational Research, 64:278-285, 1993. [20] E. D. Weinberger. Correlated and uncorrelated fitness landscapes and how to tell the difference. Biological Cybernetics, 63:325-336, 1990.