• Nie Znaleziono Wyników

3. Metody optymalizacyjne

3.1 Metody bezgradientowe

3.1.2 Algorytmy genetyczne

Algorytmy genetyczne są grupą metod, które wykorzystują czynnik losowy.

Znajdują swoje zastosowanie m. in. w optymalizacji i są zaliczane do grupy metod niedeterministycznych. Algorytmy genetyczne zostały rozwinięte przez Johna Hollanda, który opublikował metodę w 1975 r [Gol1998].

Ich działanie jest oparte na mechanizmach doboru naturalnego oraz dziedziczności. Czerpiąc z teorii ewolucji algorytmy genetyczne wykorzystują fakt, że największe prawdopodobieństwo przeżycia mają jednostki o najwyższym stopniu przystosowania. Ich potomstwo w głównej mierze kształtuje następne generacje osobników. Nowy zespół sztucznych organizmów (w postaci ciągów bitów) powstaje w każdym pokoleniu i jest utworzony z połączenia fragmentów najlepiej przystosowanych przedstawicieli poprzedniego pokolenia. Nowa część składowa jest sporadycznie wypróbowywana. Mimo tego, że algorytmy genetyczne zawierają element losowości nie sprowadzają się one do przypadkowego błądzenia. Znajomość przeszłego doświadczenia jest wykorzystywana do określenia nowego obszaru poszukiwań zakładając podwyższoną wydajność.

W algorytmach genetycznych wykorzystywana jest terminologia zaczerpnięta z genetyki. Poniżej omówione będą podstawowe elementy takie jak: chromosom, gen, populacja, funkcja przystosowania [Siv2008], [Kus2009], [Ara2004], [Mic2003].

Chromosom - obiekt reprezentujący zmienne optymalizacji. Jest zbudowany z uporządkowanego ciągu genów o określonej długości (o skończonej liczbie genów).

Sposób kodowania jest dowolny, ale powinien jak najlepiej odpowiadać rozważanemu problemowi. Najczęściej zmienne optymalizacji są kodowane w sposób binarny, przyjmując wartości i 1.

Gen - to pojedynczy element chromosomu.

Populacja - jest zbiorem chromosomów. Podczas całej procedury optymalizacyjnej liczebność populacji jest stała, z góry określona. Algorytm genetyczny, podczas działania, modyfikuje populację zgodnie z pewnym przyjętym odgórnie schematem. Tworząc nową populację stosuje się mechanizmy podobne do tych, które można zaobserwować w przyrodzie. Nowe osobniki są potomkami pary rodzicielskiej pochodzącej od populacji z wcześniejszej iteracji. Dzięki temu dziedziczą

3. Metody optymalizacyjne

56 pewne cechy rodziców z poprzedniej populacji oraz nabywają nowych cech, co jest skutkiem działania czynnika losowego.

Funkcja przystosowania - funkcja, która opisuje środowisko. Jest ona powiązana z funkcją celu analizowanego zadania optymalizacji. Wartości funkcji przystosowania pozawalają ocenić przystosowanie poszczególnych chromosomów. Jest to bardzo istotna procedura, ponieważ główną ideą algorytmów genetycznych jest aby populacje chromosomów w kolejnych iteracjach były lepiej przystosowane niż populacje wcześniejsze.

Na rysunku 3.1.2.1 przedstawiono schemat działania algorytmu genetycznego.

Działanie algorytmu rozpoczyna się od inicjacji, która polega na ustaleniu: pierwszej populacji, podstawowych parametrów algorytmu, zasad kodowania i obliczeniu funkcji przystosowania oraz zakodowaniu pierwszej iteracji. W każdej kolejnej iteracji populacja jest modyfikowana za pomocą operacji takich jak: selekcja, krzyżowanie i mutacja. Poniżej krótko omówiono każdą z nich [Kus2009], [Siv2008].

Ustalenie podstawowych parametrów algorytmu - Ustalenie liczebności n rozważanej populacji chromosomów oraz ich długości l, która odpowiada liczbie genów w chromosomie.

Kodowanie - Najczęściej wykorzystywane jest kodowanie binarne, które polega na reprezentacji elementów zbioru rozwiązań dopuszczalnych za pomocą ciągów zer i jedynek. Sposób, w którym chromosomu są złożone z ciągów i 1 jest wygodny ponieważ daje możliwość np. łatwiejszego przeprowadzenia etapu krzyżowania.

Ustalenie pierwszej populacji - populację startową P0 złożoną z n osobników (n chromosomów, które reprezentują tych osobników) generuje się w sposób losowy. W populacji mogą wielokrotnie występować osobnicy o tym samych chromosomie, a ich kolejność jest dowolna.

Obliczanie funkcji przystosowania - Zakładając, że funkcja celu f jest określona w pewnym zbiorze X takim, że mamy do dyspozycji zbiór chromosomów:

gdzie: ch(x) - chromosom identyfikujący punkt , S - zbiór ustalonych reprezentantów zbiór rozwiązań dopuszczalnych X.

3. Metody optymalizacyjne

57 Rys. 3.1.2.1 Ogólny schemat działania algorytmów genetycznych [Kus2 9]

Funkcja przystosowania może być odpowiednikiem funkcji celu , co można zapisać w formie:

- w przypadku maksymalizacji oraz

- w przypadku minimalizacji

Kolejnym etapem obliczeń jest wygenerowanie nowej populacji Pi w iteracji i.

W tym celu losowana jest para rodzicielska składająca się z przedstawicieli wcześniejszej populacji Pi-1. W kolejnym kroku wykorzystując operacje: selekcji, krzyżowania i mutacji tworzony jest potomek. Cały proces jest powtarzany n razy aż do uzyskania n potomków.

Selekcja - w tym etapie wybierana jest najlepsza para rodzicielska dla procesu krzyżowania, czyli taka która jest najlepiej przystosowana. Istotny wpływ na wybór pary rodzicielskiej ma wartość funkcji przystosowania. Im większa wartość tym większa szansa na przetrwanie. Jedną z najprostszych metod selekcji jest metoda

3. Metody optymalizacyjne

58 ruletki. Polega ona na przypisaniu poszczególnym osobnikom wycinka "koła ruletki" o różnych polach których wielkość jest proporcjonalna do wartości ich funkcji przystosowania. Dzięki temu szansa wylosowania osobników lepiej przystosowanych wzrasta.

Krzyżowanie - jego celem jest przekazanie cech pary rodzicielskiej (wybranej podczas selekcji) ich potomkom. W tym celu dokonuje się zmiany genów pomiędzy chromosomami pochodzącymi od pary rodzicielskiej. Istnieje wiele metod krzyżowania i mają one wpływ na działanie algorytmu. Jedną z podstawowych metod jest krzyżowanie jednopunktowe, które polega na wyborze losowej liczby będącej punktem krzyżowania. W kolejnym etapie tworzone są dwa nowe chromosomy, które powstają ze sklejenia dwóch fragmentów każdego chromosomów rodzicielskich.

Poniżej zaprezentowano przykład krzyżowani jednopunktowego:

chromosom rodzica A: 0011|0101110 chromosom rodzica B: 1011|0000111

potomek A': 0011|0000111 potomek B': 1011|0101110

gdzie symbol | oznacza punkt krzyżowania k, w przedstawionym przykładzie k=4.

Mutacja - polega na całkowicie losowej zmianie genów potomka, który został utworzony na drodze krzyżowania. W trakcie tej operacji ustala się, które geny w rozważanym chromosomie będą mutowane. W przypadku gdy zachodzi mutacja dla danego genu a'j to jego bit jest zamieniany na przeciwny, a pozostałe geny pozostają bez zmian. Dzięki tej operacji w populacji Pi mogą znaleźć się osobniki o chromosomach, których nie dałoby się uzyskać na drodze samego krzyżowania.

Algorytm kończy swoją pracę w przypadku gdy maksymalna liczba iteracji zostanie przekroczona lub jeśli zmiany wartości funkcji przystosowania w dla osobnika najlepiej przystosowanego w populacji są niewielkie podczas kilku kolejnych iteracji.

Podobnie jak algorytmy genetyczne również algorytmy ewolucyjne są wzorowane na biologicznej ewolucji. Dzięki temu dobrze sprawdzają się w zagadnieniach optymalizacji. Począwszy od lat 6 . niezależnie od siebie algorytmy ewolucyjne były rozwijane przez Lewrance'a J. Fogel'a na zachodnim wybrzeżu Stanów Zjednoczonych oraz przez Hans'a-Paul'a Schwefel'a i Ingo'a Rechenberg'a w Niemczech [Kus2009], [Ara2004]. Algorytm ewolucyjny został wykorzystany przez autorkę rozprawy w pracy Nienartowicz i współautora [Nie2012a].

3. Metody optymalizacyjne

59