• Nie Znaleziono Wyników

SYSTEMY STEROWANIA pod redakcją Włodzimierza Greblickiego i Czesława Smutnickiego 21 kwietnia 2006

N/A
N/A
Protected

Academic year: 2021

Share "SYSTEMY STEROWANIA pod redakcją Włodzimierza Greblickiego i Czesława Smutnickiego 21 kwietnia 2006"

Copied!
62
0
0

Pełen tekst

(1)

pod redakcją

Włodzimierza Greblickiego i Czesława Smutnickiego

21 kwietnia 2006

(2)

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

(3)

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

(4)
(5)

Monografia przedstawia wybrane problemy projektowania i realizacji systemów sterowania obiektami i/lub procesami. Stworzenie takiego systemu wymaga wy- konania 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 sterowa- nia 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ń. Spo- wodowało to, między innymi, wzrost znaczenia badań dotyczących matematycz- nych 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 ukie- runkowane 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) mode- lowanie 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) identyfika- cja 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 oczysz- czalnie ś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 ana- lizy 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”, przed- stawia wyniki dotyczące modeli i problemów deterministycznych dla potrzeb ste- rowania. 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-

(6)

deterministycznych, cyklicznych i z opóźnieniami.

Dziedzina optymalizacji jest traktowana nie tylko jako narzędzie pomocni- cze do rozwiązywania problemów optymalnego sterowania, ale także jako samo- dzielna 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 projekto- wania optymalnych struktur sieci dystrybucyjnych i optymalizacji rozpływów, (b) metod optymalnego rozkroju i pakowania.

Oddzielny obszar badawczy obejmuje zagadnienia optymalizacji i sterowa- nia dyskretnymi procesami przemysłowymi, przy wykorzystaniu metod opty- malizacji ciągłej i dyskretnej, realizowane obok programów rządowych, grantów KBN, także w ramach projektu pod auspicjami International Institute of Ap- plied System Analysis (IIASA, Laxenburg, Austria), oraz umowy IIASA-PAN.

Zapoczątkowane w latach 70-tych badania są obecnie wielokierunkowe i obej- mują, 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 obli- czeń, (c) modelowanie i rozwiązywanie złożonych problemów szeregowania, (d) optymalizację funkcjonowania automatycznego transportu w systemach wytwa- rzania, (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 Telemecha- niki i Automatyki, założonej i kierowanej przez prof. Zygmunta Szparkowskiego, oraz Katedry Konstrukcji Maszyn Cyfrowych (rok zał. 1963) prof. Jerzego Bro- mirskiego. Od początku powstania Instytutu kierunek automatyki i sterowania był jednym z najmocniejszych kierunków badawczych, skupiając kadrę o wyso- kiej 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 Instytu- cie 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 badaw- czych. (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 tema- tyki badań Instytutu, będzie świadectwem rangi polskich uczelni.

Włodzimierz Greblicki, Czesław Smutnicki

1Od r. 2004 występuje pod nazwą Instytut Informatyki, Automatyki i Robotyki PWr

(7)

Część I

STEROWANIE

I OPTYMALIZACJA

(8)
(9)

z ograniczeniami „bez czekania”.

Podejście genetyczne (GA)

Mariusz Makuchowski

Konstruktorzy systemów - inżynierskich, komputerowych jak też eko- nomicznych - 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 sze- regowania jest problem gniazdowy z kryterium będącym momentem zakończenia wykonywania wszystkich zadań. Problem ten analizowany jest od lat siedem- dziesią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 teoretycz- nego 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 sze- regowania. 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 techno- logicznego. 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 algo- rytm genetyczny, dedykowany problemowi gniazdowemu z dodatkowymi ogra- niczeniami „bez czekania”. Jako kryterium optymalizacji przyjmuje się moment zakończenia wykonywania wszystkich zadań.

(10)

1.1 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 do- brze znany w literaturze, jednakże ze względnu na jego bazowe znaczenie przed- stawiony 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 produkcyjnych.

Ilość wszystkich operacji w procesie oznaczy przez o = P

k∈Jrk. Operacja olk ∈ Ok, l ∈ {1, 2, . . . , rk}, k ∈ J składa się z pary (mlk, plk) 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 rozpo- cząć 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 za- uważ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 ter- minu 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 pro- blemu gniazdowego z ograniczeniem „bez czekania” przyjmuje się wektor nie- ujemnych 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+ Xl−1 i=1

pik. (1.2)

(11)

Rozwiązanie spełniające wszystkie powyższe ograniczenia nazywamy rozwiąza- niem dopuszczalnym. Niech Ck oznacza moment zakończenia wykonywania się zadania k, (moment zakończenia wykonywania się wszystkich operacji danego zadania),

Ck= Sk+

rk

X

i=1

pik. (1.3)

Długością Cmax(S) uszeregowania S nazywamy termin wykonania wszystkich zadań:

Cmax(S) = max

k∈J Ck. (1.4)

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 para- metr 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 ła- dują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 zada- nie. Szeregowanie pojedynczego zadania k ∈ J oznacza wyznaczenie Sk mo- mentu 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 do- puszczalnym. 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 spe- cyficznego sposobu kodowania bieżącego harmonogramu. Jest nim zestaw m list.

Pojedynczym elementem każdej z listy jest parą (początek oraz koniec) momen- tów określająca przedział czasowy ciągłego wykorzystywania maszyny. Lista l zawiera uporządkowane chronologicznie zestaw wszystkich przedziałów czaso- wych 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 dopuszczal- nego momentu Sk szeregowanego zadania k, należy sprawdzić moment zerowy oraz wszystkie momenty wynikające z rozpoczęcia operacji olk ∈ Ok we wszyst- kich mometach zwolnienia maszyny mlk. Zwróćmy uwagę na to, że rozpoczęcie

(12)

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∈Jrk; 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,

mak6= 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 weryfi- kacji 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 za- ję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 szcze- gó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(nN2). Dlatego cała procedura posiada złożoność O(n2N2). W przypadku szczególnym złożoność obliczeniowa jednego kroku wynosi O(o) = O(nm) a cała procedura ma złożoność O(n2m).

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 sen- sie wartości funkcji celu,

(3) ilość różnych permutacji ładujących jest znacznie mniejsza niż liczba wszyst- kich rozwiązań aktywnych,

(4) różne permutacje ładujące mogą generować te same rozwiązania,

(13)

Rysunek 1.1. Harmonogram zadań, a) najlepsze rozwiązanie uzyskane funkcją upy- chającą, b) rozwiązanie optymalne

(5) możliwości opuszczenia rozwiązania optymalnego nawet w przypadku ana- lizy wszystkich możliwych permutacji ładujących.

Rysunek 1.1 przedstawia instancję dla której nie istnieje permutacja ładu- jąca generująca (przy pomocy procedury upychającej) rozwiązanie optymalne.

W części „a” rysunku 1.1 przedstawione jest najlepsze uszeregowanie genero- wane 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 znacz- nie 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ąza- nia generowane oryginalną procedurą upychającą tworzą klasę rozwiązań lewo- aktywnych, natomiast rozwiązania generowane symetryczną wersją tej proce- dury 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 blo- kowych). Jest więc to idealny przykład problemu dla zastosowania algorytmu genetycznego, ponieważ algorytmy tego typu nie wykorzystują wcale (lub spo- radycznie) 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-

(14)

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 ze- stawó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 po- dzielony 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, wyko- nywanych 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śla- duje 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 da- nej 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 genetycz- nego w szczególności odpowiednio dobrany mechanizm dziedziczenia wraz z se- lekcją promującą osobniki o żądanej cesze powodują iż w symulowanym świecie pojawia się ewolucja. Ewolucja rozumiana jest tutaj jako tendencja do genero- wania 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 po- kolenia. 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 ba- zowe elementy:

(1) generacja populacji startowej: generacja osobników pierwszego pokolenia,

(15)

(2) selekcja: wybór rodziców z całego pokolenia

(3) krzyżowanie: generowanie nowych osobników na podstawie materiału ge- netycznego 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 algo- rytmu).

Sprecyzowanie wymienionych elementów algorytmu GA, jest podstawowym problemem z jakim musi poradzić sobie projektant danej implementacji algo- rytmu ewolucyjnego. W dalszej części pracy proponuję uniwersalny sposób do- boru 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 bez- pośrednio powiązany z dobrze znanym z literatury prawdopodobieństwem mu- tacji. 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. Po- ziom mutacji L określa z definicji względną liczbę mutacji wykonywanych w całym pokoleniu, (liczba wszystkich mutacji = L · liczba wszystkich genów), na- tomiast 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 sto- sowanego 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 mu- tacja 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 per- mutacji pierwotnej x i permutacji zmutowanej y. Dowodem tego jest odległość pomiędzy tymi permutacjami d(x, y), rozumiana jako najmniejsza liczba za- mian 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.

(16)

0 0,2 0,4 0,6 0,8 1

0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2

L P

g = 10 g = 109

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 geno- typie 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 staty- stycznie 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 pro- cent 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 napi- sać 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.

(17)

1.2.2 Wybór operatora mutacji

Na wstępnie chciałbym przypomnieć, że algorytmy genetyczne nie pracują bez- pośrednio na rozwiązaniach tylko na ich zakodowanych reprezentacjach (ko- dach). 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 osob- nik 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 ro- dziców, co umożliwia przeniesienie poszukiwań w coraz to nowe część prze- strzeni rozwiązań,

(2) utworzenie osobnika posiadającego cechę niewystępującą w pokoleniu, co umożliwia znalezienie rozwiązania lokalnie optymalnego nawet w przy- padku zatracenia się w pokoleniu pewnej cechy tego rozwiązania,

(3) przeciwdziałanie stagnacji obliczeń, to znaczy sytuacji w której całe po- kolenie 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 nie- zbę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 po- winna 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 zmie- rzyć 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 ∈ Π,

%(d) = 1 −

AV E³¡

C(x) − C(y)¢2´

d(x,y)=d

AV E³¡

C(x) − C(y)¢2´ , (1.7) 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, nato- miast 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.

(18)

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 transformu- ją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óżni- cowanie, w sensie wartości funkcji celu, mutowanych osobników względem osob- nika 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:

%(1) ≈ % = 1 − AV E³¡

C(xi) − C(yi2´ 2

³ AV E¡

C(xi)2¢

− AV E¡

C(xi2´ . (1.8) Zauważmy, że mała efektywność skutecznie zmniejsza chropowatość prze- strzeni 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 osob- nikó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 ro- dzicielskiej. 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ęk- szych 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 na- leż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ść praw- dopodobieństwa mutacji jest różna. Pewnym ułatwieniem jest zastosowanie au- tomatycznego 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 wielozada- niowym 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 ładu- jąca) do przetestowania wybrałem następujące cztery powszechnie stosowane (dla permutacji) operatory mutacji:

(19)

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 elemen- tów permutacji, oznaczany dalej w skrócie prze Swp,

(3) insert: polegający na wyciągnięciu losowego elementu z permutacji i po- nownym włożeniu go na losową pozycję (z wykluczeniem pierwotnej po- zycji), oznaczany dalej w skrócie przez Ins,

(4) invert: polegający na odwróceniu kolejności elementów losowej części per- mutacji, oznaczany dalej w skrócie przez Inv.

Pierwszy z testów polega na zbadaniu chropowatości %, zmodyfikowanej chro- powatości % oraz efektywności ξ wymienionych operatorów mutacji. Średnie wartości otrzymanych parametrów dla poszczególnych grup przykładów przed- stawiono 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 para- metr 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 zastosowa- nego 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 czynni- kami: (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ól- nym przypadkiem (możliwie najmniejszą wersją) każdego z pozostałych trzech operatorów. Kolejność wszystkich operatorów względem chropowatości genero- wanej przestrzeni rozwiązań (według nierosnącego %) to SSw, Ins, Swp i Inv.

(20)

-5 0 5 10

0,0001 0,001 0,01 0,1 1 10 100

L ρ [%]

SSw Swp Ins Inv

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 referen- cyjnego x0,

ρ = Cmax(x) − Cmax(x0)

Cmax(x0) · 100%. (1.9)

Jako rozwiązanie referencyjne przyjmuje się rozwiązanie utrzymane algoryt- mem GASA opisanym w pracy [12]. Testowany algorytm uruchmiany był z następującymi parametrami: liczba symulowanych pokoleń - 1000, liczba osob- nikó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-

(21)

grupa: 15 x 5

-10 0 10

0,0001 0,01 1 100

L ρ[%]

grupa: 20 x 5

-10 0 10

0,0001 0,01 1 100

L ρ[%]

grupa: 10 x 10

-10 0 10

0,0001 0,01 1 100

L ρ[%]

grupa: 15 x 10

-10 0 10

0,0001 0,01 1 100

L ρ[%]

grupa: 20 x 10

-10 0 10

0,0001 0,01 1 100

L ρ[%]

grupa: 30 x 10

-10 0 10

0,0001 0,01 1 100

L ρ[%]

grupa: 15 x 15

-10 0 10

0,0001 0,01 1 100

L ρ[%]

grupa: 10 x 5

-10 0 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

(22)

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 mu- tacji 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 niewiel- kim 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. Spowo- dowane 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! spowo- dował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 ge- netycznych.

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 roz- wią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 opera- tora mutacji na efektywność algorytmu wynika, iż nie ma potrzeby automatycz- nego 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.

(23)

4000 4200 4400 4600 4800 5000

0 100 200 300 400 500 600 700 800 900 1000

nr. pokolenia f. celu

L = 0,0002 L = 0,0100 L = 0,5000

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ń do- tyczą bezpośrednio poziomu mutacji. Najważniejszym z nich jest fakt, iż war- tość 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 po- ziomu 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 opera- tora (zmniejszaniem %) wartość optymalnego poziomu mutacji także nieznacznie spada.

W celu dokładniejszego zrozumienia zjawisk zachodzących w algorytmie ge- netycznym 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 sta- gnacja obliczeń (patrz pierwszy przebieg na rys. 1.5). Dzieje się tak dlatego, ponieważ pokolenie zdominowane jest przez tak zwane super osobniki, dominu- ją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 przysto- sowania 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 po- koleniu 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,

(24)

możliwe są tylko trzy dalsze scenariusze symulowanego życia: (1) pewien zmuto- wany 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 prawdo- podobny). 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 wyka- zuje 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ść ce- chy 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śniej- szych 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 prze- biegu rysunku 1.5. Na wykresie tym widać podstawowe zjawiska zachodzące w poprawnie wysterowanym algorytmie genetycznym. Są nim szybkie „schodze- nie” 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 me- toda jego wyznaczenia to eksperymenty numeryczne. A ponieważ dla różnych instancji optymalna wartość poziomu mutacji jest różna, dobór właściwego po- ziomu należ dokonywać dla każdego przykładu z osobna lub zmieniać go na bie- żąco podczas pracy (on-line) obserwując przebieg sterowanego algorytmu. Nie- mniej 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, pro- ponuje 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ć mu- tacji.

Proponowana strategia bazuje na dwóch prostych spostrzeżeniach:

(1) W przypadku, gdy cała populacja jest mocno zróżnicowana nie ma po- trzeby 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ń

(25)

poprzez eliminację identycznych osobników. Ponadto umożliwia szybkie dojście do optimum lokalnego (w przypadku gdy super osobnicy repre- zentują rozwiązanie bliskie rozwiązaniu lokalnie optymalnemu. Ponadto umożliwia łatwe opuszczenie minimum lokalnego ponieważ to super osob- nicy poddawani są mutacji.

Strategia postępowania wydaje się więc oczywista. Należy zidentyfikować wszyst- kie klony, a następnie dokonać ich mutacji. Klonem nazywamy osobnika podob- nego w pewnym sensie do innego osobnika istniejącego w danym pokoleniu.

Takie podejście choć intuicyjne nie ma swojego odpowiednika w świecie przy- rody. 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ń (po- równaie na podstawie permutacji ładującej bez wywoływania procedury upycha- ją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 wyznacza- jące wartość funkcji celu zmutowanego klona. Pierwsze z wymienionych zjawisk zachodzi stosunkowo rzadko i nie powoduje żadnych poważnych zaburzeń w al- gorytmie, 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 stra- tegii, 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 jed- nokrotnej 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 naj- lepszemu osobnikowi w bieżącym pokoleniu. Na rysunku 1.6 przedstawiony jest przykładowy przebieg algorytmu genetycznego z automatyczną mutacją i strate- gią SIN GLE oraz dla porównania przebieg algorytmu z klasyczną mutacją przy

(26)

4000 4200 4400 4600 4800 5000

0 100 200 300 400 500 600 700 800 900 1000

nr. pokolenia f. celu

L = 0,0100 L = auto "SINGLE"

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 au- tomatycznego 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 Loraz 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ą ja- kość ρ 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 otrzy- manego literaturowym [12] algorytmem GASA. Ponadto komentarza wymagają dwa ostatnie wiersze wszystkie i średnia zawarte w tabeli 1.2. Pierwszy z nich za-

(27)

Tablica 1.2. Wyznaczony poziom mutacji Loraz odpowiadająca mu średnia jakość generowanych rozwiązań ρ [%], testowanych operatorów mutacji

Grupa Optymalny poziom mutacji L Średni błąd ρ dla mutacji L

n × m SSw Swp Ins Inv SSw Swp Ins Inv

10 × 5 2.00 0.20 0.10 0.10 -1.91 -2.63 -1.56 -1.47 15 × 5 0.50 0.10 0.10 0.10 0.31 1.94 1.29 1.77 20 × 5 1.00 0.05 0.05 0.05 -0.28 -2.01 -0.16 -1.22 10 × 10 1.00 0.50 0.20 1.00 -5.40 -5.29 -5.29 -5.47 15 × 10 0.50 0.10 0.10 0.10 -1.39 0.09 -0.73 0.78 20 × 10 0.50 0.05 0.10 0.05 -1.22 -2.69 -2.10 -2.15 30 × 10 0.20 0.05 0.05 0.05 -5.68 -4.69 -6.54 -3.88 15 × 15 1.00 0.05 0.10 0.10 -1.74 -1.86 -2.06 -0.56 wszystkie 0.50 0.05 0.10 0.05 -1.72 -0.83 -1.27 -0.86 średnia 0.84 0.14 0.10 0.19 -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 obser- wacji 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ą zapropo- nowanego podejścia okazał się fakt, iż istnieją operatory mutacji (w rozważanym przypadku operator SSw) dające mierne rezultaty prezentowanego automatycz- nego 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 wa- riantów automatycznej mutacji jest statystycznie lepszy niż najlepiej dobrana mutacja klasyczna. Co więcej w przypadku gdy najlepszy możliwy poziom mu- tacji 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(staty- stycznie słabszego niż poziom L0 bliższy poziomowi optymalnemu L∗∗) wartości

(28)

Tablica 1.3. Średnia jakość ρ [%] generowanych rozwiązań dla badanych metod automatycznej mutacji, testowanych operatorów

Grupa mutacja F U LL mutacja SIN GLE mutacja BLIN D n × m SSw Swp Ins Inv SSw Swp Ins Inv SSw Swp Ins Inv

10 × 5 2.25 -1.79 -1.84 -1.68 1.61 -1.77 -2.47 -1.99 6.12 -2.04 -1.96 -1.65 15 × 5 6.45 1.16 1.29 2.87 5.64 0.69 1.46 2.72 6.14 0.64 1.06 0.32 20 × 5 2.61 -1.77 -1.80 -0.71 2.77 -0.68 -1.68 -1.82 5.13 -1.80 -1.67 -0.95 10 × 10 -0.25 -3.08 -2.39 -3.94 -0.90 -3.93 -3.53 -3.89 -0.77 -2.71 -3.44 -3.39 15 × 10 5.51 0.46 -0.74 -0.79 5.91 -0.34 2.16 0.69 5.63 0.62 1.04 0.33 20 × 10 1.90 -2.11 -1.99 -1.08 5.28 -0.56 -0.90 -1.58 3.94 -1.33 -0.93 -0.56 30 × 10 -2.96 -6.47 -6.19 -4.90 -1.03 -6.15 -7.55 -5.33 0.17 -6.79 -5.05 -5.80 15 × 15 4.82 -0.45 -2.35 -2.19 5.09 -1.93 -0.73 -0.15 7.05 -0.77 0.67 -0.97 wszystkie 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 ta- kim 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 roz- wią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 oczy- wisty. 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-

(29)

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 szyb- kość (liczona w pokoleniach algorytmu) znajdowanego minimum lokalnego. Na podstawie wyżej wymienionych spostrzeżeń, do oceny jakości operatora krzyżo- wania proponuję przyjąć wartość funkcji celu znalezionego rozwiązania w prób- nym 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 po- mię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 pro- ponuje 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 opera- toró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 po- siadają 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 ładu- jących to odpowiednio A = (a0, a1, . . . , an−1) oraz B = (b0, b1, . . . , bn−1). Do- datkowo niech j oznacza punkt krzyżowania dla operatorów jedno-punktowych oraz k oznacza drugi punkt krzyżowania dla operatorów dwu-punktowych. Sto- sując wprowadzoną notację opis testowanych operatorów krzyżowania przedsta- wić 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 ele- menty 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)

Cytaty

Powiązane dokumenty

Gdzie n jest jednostkowym wektorem normalnym do powierzchni, a da jest polem nieskończenie małego płata stycznego do tej powierzchni.. Rysunek 2.4.1 a) wektory pola

Ponieważ odnosimy się do topologii normy, zwartość równoważna jest tu ciągowej zwartości, czyli T jest zwarty, gdy obraz ciągu ograniczonego zawiera podciąg zbieżny (w

Na przykład, każda funkcja K ciągła (a nawet tylko mierzalna i ograniczo- na) na kwadracie [0, 1] × [0, 1] definiuje względem miary Lebesgue’a operator całkowy zwarty T K.

nazwa funkcji – łańcuch zawierający nazwę funkcji (może to być również funkcja zdefiniowana przez użytkownika). x1, x2, ..., xn –

break - kończy wykonywanie najbliższej otaczającej pętli lub instrukcji warunkowej, w której występuje.. Jeśli po końcu przerwanej instrukcji występuje kolejna,

return - kończy wykonywanie funkcji i zwraca sterowanie do funkcji wywołującej (lub do systemu operacyjnego, jeśli kontrola zostanie przeniesiona z funkcji

@private atrybut widoczny jedynie dla metod klasy, która go zadeklarowała. @protected Atrybut widoczny dla metod klasy, która go zadeklarowała, oraz dla klas

@private atrybut widoczny jedynie dla metod klasy, która go zadeklarowała. @protected Atrybut widoczny dla metod klasy, która go zadeklarowała, oraz dla klas