Algorytmy genetyczne



    ::Algorytm genetyczny::

     Algorytm genetyczny to rodzaj algorytmu przeszukującego przestrzeń alternatywnych rozwiązań problemu w celu wyszukania rozwiązań najlepszych. Sposób działania algorytmów genetycznych nieprzypadkowo przypomina zjawisko ewolucji biologicznej, ponieważ ich twórca John Henry Holland właśnie z biologii czerpał inspiracje do swoich prac.

     Algorytm genetyczny operuje na populacji jednostek:

gdzie: n jest numerem generacji, natomiast R oznacza rozmiar populacji.

 

Klasyczne algorytmy genetyczne w żaden sposób nie wykorzystują wiedzy o rozwiązywanym problemie. To, że znajdują rozwiązanie wynika z faktu, że do każdej następnej generacji przedostają się lepsze jednostki z generacji poprzedniej, a operatory genetyczne wymieniają informacje zawarte w tych jednostkach tworząc nowe, potencjalnie doskonalsze rozwiązania. Proces tworzenia nowej populacji przedstawiony jest na poniższym rysunku.

    ::Troszkę historii::

1957-62: Barricelli, Fraser, Martin, Cockerham – modelowanie procesów genetycznych

1960: Holland (Uniw. Michigan) – systemy adaptacyjne à Algorytmy Genetyczne

1967: Bagley – program gry w 6 pionków

1971: Hollstien;

1975: De Jong – optymalizacja funkcji

1985: Goldberg – optymalizacja pracy gazociągu

 

    ::Polacy, a algorytmy genetyczne::     

Michalewicz (Uniw. Północnej Karoliny, Charlotte, USA)

„Algorytmy genetyczne + struktury danych = programy ewolucyjne”

Buller (ATR Kioto, Japonia) „Sztuczny mózg. To już nie fantazje”

 

M. J. Kasperski, „Sztuczna Inteligencja. Droga do myślących maszyn”

 

    ::Przykłady i zastosowania::

Algorytmy genetyczne znalazły zastosowanie do rozwiązywania problemów optymalizacji, rozpoznawania obrazów, przewidywaniu ruchów na giełdzie, tworzenia grafiki oraz projektowania budynków i maszyn.

 

    ::Podstawowe pojęcia::

 

·  Chromosom jest to ciąg bitów. Każdy pojedynczy bit jest odpowiednikiem pojedynczego „genu”, np. Kobieta Mężczyzna.

 

·  Operacja krzyżowania polega na losowym przecięciu dwóch chromosomów (ciągów bitów) w jednym punkcie i zamianie podzielonych części między chromosomami. Powstają dwa nowe chromosomy. Ważne jest to ze „dzieci” całkowicie zastępują „rodziców”.

 

11010010

    ↓↑    - krzyżowanie

00100101

      ↓↓   -Powstają dwa nowe osobniki zastępujące rodziców:

11010101

00100010

 

·  Operacja mutacji polega na zamianie na przeciwny losowo wybranego bitu.

 

       - bit mutacji

10010111

10110111 – osobnik po zmutowaniu.

 

·  Selekcja osobników do krzyżowania następuje na drodze losowania.

 

- Metoda koła ruletki, która przydziela prawdopodobieństwa wylosowania każdego osobnika bezpośrednio na podstawie jednej funkcji oceny,

- Ranking liniowy - Selekcja tą metodą jest bardzo podobna do selekcji metodą koła ruletki. Modyfikacja polega jedynie na zmianie funkcji określającej prawdopodobieństwo wyboru danego osobnika. Przed przystąpieniem do tej selekcji należy nadać każdemu z osobników pewną wartość (przystosowanie) zależną od jego położenia na liście posortowanej względem wartości funkcji oceny,

- Turniej - Metoda jest zupełnie różna od powyższych i polega na losowym wyborze z całej populacji kilku osobników (jest to tzw. grupa turniejowa), a później z tej grupy wybierany jest osobnik najlepiej przystosowany i on przepisywany jest do nowo tworzonej populacji. Losowanie grup turniejowych oraz wybieranie z nich najlepszego osobnika należy powtórzyć aż do utworzenia całej nowej populacji.

 

·  Populacja ma stały rozmiar, a w kolejnych cyklach ewolucji wszystkie chromosomy podlegają wymianie na nowe (dzieci całkowicie zastępują rodziców).

 

·  Rozwiązaniem problemu jest najlepiej przystosowany osobnik z ostatniej wygenerowanej populacji. Należy dodać, że musimy z góry określić warunek zatrzymania ewolucji (np. uzyskanie osobnika o wystarczająco dobrych parametrach albo po z góry określonej maksymalnej liczbie iteracji).

 

    ::Przykład komiwojażera::

W problemie komiwojażera, celem jest znalezienie najkrótszej odległości miedzy N różnymi miastami.

Analizując każda możliwość dla N miast będzie N! kombinacji. 30-sto miastowa mapa będzie nam dawała 2.56 x 1032 kombinacji. Zakładając ze obliczenia 1 miliona kombinacji trwa sekundę obliczenie wszystkich kombinacji trwało by ponad 8,000,000,000,000,000 lat. Dodając jeszcze jedno miasto zwiększyło by liczbę kombinacji 31 razy. Jest to niemożliwe rozwiązanie.

Algorytm genetyczny może być użyty do znalezienia rozwiązania w dużo krótszym czasie. Jednak prawdopodobnie nie będzie to najlepsze rozwiązanie, dobrze zaimplementowany algorytm potrafi znaleźć rozwiązanie bliskie idealnemu w mniej niż minutę. Istnieją dwa podstawowe kroki do rozwiązania problemu komiwojażera za pomocą Algorytmu Genetycznego. Po pierwsze stworzyć grupę wielu przypadkowych dróg co będzie zwane populacja. Te drogi są zapisane jako sekwencja liczb. Po drugie wybrać dwie z krótszych „rodziców” dróg z populacji skrzyżować je aby powstały „dzieci”, w nadziei ze stworzą lepsze rozwiązanie.

Ideą Algorytmów Genetycznych jest symulacja ewolucji natury. Dobre rozwiązania są brane do reprodukcji w nadziei ze stworzą jeszcze lepsze rozwiązania a te gorsze są usuwane.

Największym problemem w problemie komiwojażera jest zakodowanie rozwiązania. Kodowanie nie może po prostu być listą miast w kolejności odwiedzania. Jak pokazano poniżej, operacja krzyżowania nie będzie działać. Krzyżowanie następuje po 3 pozycji.

 

Rodzic 1

1 2 3 4 5

Rodzic 2

3 5 2 1 4

Dziecko 1

1 2 3 1 4

Dziecko 1

3 5 2 4 5

 

Jak widać w tabeli miasto 1 występuje dwa razy a miasto 5 ani razu w dziecku 1. Dlatego musi być użyte bardziej skomplikowane kodowanie. Np. tablica NxN gdzie w miejsca odpowiadające połączeniom miedzy miastami odpowiada jeden bit 0 lub 1.

Literatura
David E. „Algorytmy genetyczne i ich zastosowania”
M. J. Kasperski, „Sztuczna Inteligencja. Droga do myślących maszyn”
Simon Haykin "Neural Networks A Comprehensive Foundation, New Jersey 1999
Adnrzej Kos, Wykład "Przemysłowe zastosowania sztucznej inteligencji", 2003/2004


Maciej Misiak
Krzysztof Nalepka
mgr inż. Adam Gołda
Katedra Elektroniki AGH