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 wlodzimierz.greblicki@pwr.wroc.pl czeslaw.smutnicki@pwr.wroc.pl 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: wkl@wkl.com.pl 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 11 1.1 Opis problemu............................ 12 1.1.1 Model matematyczny.................... 12 1.1.2 Kodowanie rozwiązania................... 13 1.1.3 Przykłady testowe...................... 15 1.2 Algorytm genetyczny......................... 16 1.2.1 Poziom mutacji........................ 17 1.2.2 Wybór operatora mutacji.................. 19 1.2.3 Dobór prawdopodobieństwa mutacji............ 25 1.2.4 Wybór operator krzyżowania................ 30 1.2.5 Automatyczne skalowanie funkcji przystosowania..... 34 1.2.6 Weryfikacja numeryczna................... 36 1.3 Podsumowanie............................ 38 1.4 Bibliografia.............................. 38 2 Problem przepływowy z ograniczeniami bez czekania Józef Grabowski, Jarosław Pempera 41 2.1 Sformułowanie problemu....................... 42 2.2 Algorytmy heurystyczne....................... 43 2.3 Wyniki obliczeniowe......................... 48 2.4 Bibliografia.............................. 51 3 Analiza przestrzeni rozwiązań wybranych problemów przepływowych Jarosław Pempera 53 3.1 Problemy przepływowe........................ 54 3.2 Analiza rozwiązań losowych..................... 55 3.3 Wielka dolina............................. 57 3.4 Szorstkość krajobrazu........................ 59 3.5 Uwagi końcowe............................ 62 3.6 Bibliografia.............................. 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 Technicznej 1 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 Sterowanie i optymalizacja 1.1 Opis problemu Rozważany problem, w trójpolowej notacji Graham a [2], oznaczany jest przez J no wait C max. 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 O k = (o 1 k, o2 k,..., or k k ) zawierający r k operacji produkcyjnych. Ilość wszystkich operacji w procesie oznaczy przez o = k J r k. Operacja o l k O k, l {1, 2,..., r k }, k J składa się z pary (m l k, pl k ) 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 O k, (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 S l k 0 rozpoczęcia wykonywania się operacji o k. Jednakże zauważmy, iż w przypadku dodatkowego ograniczenia bez czekania, zachodzi zawsze warunek S l+1 k = S l k + p l k, l (1, 2,..., r k 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 S k oznacza moment rozpoczęcia zadania k z definicji równy momentowi rozpoczęcia pierwszej operacji tego zadania, S k = Sk 1. Jako rozwiązanie problemu gniazdowego z ograniczeniem bez czekania przyjmuje się wektor nieujemnych terminów rozpoczęcia zadań, S = (S 1, S 2,..., S n ). Na podstawie wektora S moment rozpoczęcia Sk l można wyznaczyć ze wzoru: wykonywania operacji ol k l 1 Sk l = S k + p i k. (1.2) i=1
Zagadnienie kolejnościowe gniazdowe... 13 Rozwiązanie spełniające wszystkie powyższe ograniczenia nazywamy rozwiązaniem dopuszczalnym. Niech C k oznacza moment zakończenia wykonywania się zadania k, (moment zakończenia wykonywania się wszystkich operacji danego zadania), C k = S k + r k i=1 p i k. (1.3) Długością C max (S) uszeregowania S nazywamy termin wykonania wszystkich zadań: C max (S) = max C k. (1.4) k J Problem polega na znalezieniu rozwiązania dopuszczalnego S o najmniejszej długości uszeregowania C max (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 S k 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 S k szeregowanego zadania k, należy sprawdzić moment zerowy oraz wszystkie momenty wynikające z rozpoczęcia operacji o l k O k we wszystkich mometach zwolnienia maszyny m l k. 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 = max k J r k ; 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, m a k m b k, 1 a < b r k, 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 S k i danej operacji o l k wykluczamy wszystkie przedziały czasowe w liście ml k które kończą się przed Sk l momentem rozpoczęcia tej operacji. W celu weryfikacji poprawnego (w sensie narzuconych ograniczeń synchronicznych) położenia czynności o l k wystarczy sprawdzić czy pierwszy z pozostawionych przedziałów rozpoczyna się nie wcześniej niż momencie Sk l + pl k zakończenia wykonywania operacji o l k. 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(n 2 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(n 2 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 r k = 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 0,8 P 0,6 0,4 0,2 g = 10 g = 10 9 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 L 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, ( ) g L g k P (η, L) = 1. (1.6) g Zależność tą dla k = 1 oraz wybranych wartości g (wyjątkowo małej g = 10 i wyjątkowo dużej g = 10 9 ) 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... 19 1.2.2 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 Π, ( (C(x) ) ) 2 AV E C(y) d(x,y)=d ϱ(d) = 1 ( (C(x) ) ) 2, (1.7) AV E 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 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 = {x 1, x 2,...} losowych osobników oraz zbiór Y = {y 1, y 2,...} mutantów, gdzie y i powstał porzez zmutowanie osobnika x i. Wartość ϱ można teraz wyznaczyć poprzez: ( (C(xi AV E ) C(y i ) ) ) 2 ϱ(1) ϱ = 1 2 (AV E ( C(x i ) 2) AV E ( C(x i ) ) ). (1.8) 2 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 x i i y i 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 SSw Swp Ins Inv SSw Swp Ins Inv SSw Swp Ins Inv 10 5 0.56 0.37 0.43 0.31 0.42 0.29 0.36 0.24 0.72 0.92 0.90 0.93 15 5 0.66 0.41 0.46 0.34 0.48 0.32 0.39 0.28 0.64 0.93 0.89 0.94 20 5 0.70 0.44 0.51 0.38 0.54 0.42 0.44 0.33 0.61 0.94 0.88 0.94 10 10 0.55 0.30 0.37 0.29 0.36 0.24 0.27 0.22 0.70 0.92 0.88 0.93 15 10 0.62 0.35 0.39 0.29 0.43 0.28 0.32 0.24 0.66 0.94 0.89 0.94 20 10 0.64 0.35 0.41 0.34 0.44 0.33 0.35 0.27 0.61 0.94 0.89 0.95 30 10 0.68 0.39 0.45 0.32 0.45 0.35 0.36 0.27 0.58 0.96 0.89 0.96 15 15 0.60 0.30 0.34 0.30 0.39 0.27 0.30 0.25 0.69 0.94 0.90 0.95 wszystkie 0.63 0.37 0.42 0.32 0.44 0.31 0.35 0.26 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 10 ρ [%] SSw 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 x, ρ = C max(x) C max (x ) C max (x ) 100%. (1.9) 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 MX, 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 ρ[%] grupa: 10 x 10 10 10 0 0 L L -10 0,0001 0,01 1 100-10 0,0001 0,01 1 100 grupa: 15 x 5 grupa: 15 x 10 10 10 ρ[%] ρ[%] 0 0-10 0,0001 0,01 1 100 L -10 0,0001 0,01 1 100 L ρ[%] grupa: 20 x 5 ρ[%] grupa: 20 x 10 10 10 0 0-10 0,0001 0,01 1 100 L -10 0,0001 0,01 1 100 L ρ[%] grupa: 15 x 15 ρ[%] grupa: 30 x 10 10 10 0 0-10 0,0001 0,01 1 100 L -10 0,0001 0,01 1 100 L 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... 25 5000 f. celu L = 0,0002 L = 0,0100 L = 0,5000 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ą SINGLE oraz dla porównania przebieg algorytmu z klasyczną mutacją przy
28 Sterowanie i optymalizacja 5000 f. celu L = 0,0100 L = auto "SINGLE" 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 ULL, SINGLE 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-