\chapter{Podstawowe pojęcia} \section{Algorytmy genetyczne} Algorytm genetyczny jest to metaheurystyka zainspirowana teorią ewolucji Charlsa Darwin'a. Algorytm odzierciedla zjawisko ewolucji biologicznej. W procesie naturalnej selekcji najlepsze osobniki biorą udział w reprodukcji, dając początek nowej, lepiej przystosowanej generacji. % przecinek Naturalna selekcja zaczyna się od doboru najdoskonalszych osobników z populacji. Biorą one udział w reprodukcji przekazując część swoich genów potomkom. Nowa generacja powinna być lepiej przystosowana niż rodzice, ponieważ jest połączeniem genów, które zapewniły przeżycie rodzicom. W przypadku gdy wśród nowego potomstwa znalazłyby się słabe organizmy, to nie ma obawy, że ich geny przejdą do następnego pokolenia, ponieważ najprawdobniej nie dożyją one okresu rozrodczego. W ten sposób każde kolejne pokolenie jest lepsze niż poprzednie. Powyższa wiedza, wynikająca z obserwacji praw natury, została przełożona na grut matemtyki i informatyki tworząc algorytm genetyczny. % przecinek \newpage \enlargethispage{12\baselineskip} Na algorytm genetyczny składają się: \vspace*{-1mm} \begin{itemize}[noitemsep] % \setlength\itemsep{0.005em} \item inicjalizacja populacji, \item funkcja przystosowania (stosowana przy ewaluacji i selekcji), \item selekcja, \item krzyżowanie, \item mutacja. \end{itemize} \vspace*{-8mm} \begin{figure}[h!] \centering \includegraphics[width=0.9\hsize]{overview_GA.png} \caption{Schemat działania algorytmu genetycznego.} \label{overview_ga_pic} \end{figure} \newpage \subsection{Inicjalizacja populacji} Algorytm zaczyna się od utworzenia zbioru osobników zwanych populacją. Każdy z osobników jest rozwiązaniem problemu obliczeniowego. Osobnik reprezentowany jest poprzez zbiór genów (parametrów) nazywanych chromosem. Chromosom \newline jest najczęściej kodowany za pomocą: \begin{itemize} \item wektora genów, z których każdy reprezentowany jest przez liczbę całkowitą, a czasem nawet liczbę rzeczywistą, \item drzewiastych struktur danych. \end{itemize} \begin{example} \end{example} \begin{figure}[tbh] \centering \includegraphics[width=0.7\hsize]{kodowanie.png} \caption{Przykład osobników zakodowanych binarnie.} \label{kodowanie_pic} \end{figure} \subsection{Funkcja przystosowania} Funkcja przystosowania określa jak bardzo przystosowany jest osobnik (miara jakości osobnika). Im bardziej będzie przystosowany dany osobnik tym bardziej będzie faworyzowany w procesie selekcji. Funkcja przystosowania dobierana jest w zależności od modelu rozwiązywanego problemu, zwykle algorytm genetyczny dąży \newline do jej minializacji lub maksymalizacji. \begin{example} Dla problemu komiwojażera algorytm genetyczny będzie premiował te rozwiązania (w tym wypadku cykle Hamiltona), których suma wag krawędzi jest najbliższa minimalnej sumie wag krawędzi w cyklu Hamiltona. \end{example} \subsection{Selekcja} \enlargethispage{6\baselineskip} Z każdej generacji wybierany jest podzbiór populacji, który będzie brał udział \newline w rozmnażaniu, czyli w tworzeniu nowej generacji. Pojedyńcze osobniki wybierane \newline są na podstawie funkcji przystosowania. Im lepiej przystosowany dany osobnik tym większe będzie miał szanse na wzięcie udziału w reprodukcji. \noindent Wśród metod selekcji chromosomów wyróżniamy między innymi: \vspace*{-3mm} \begin{itemize} \setlength\itemsep{0.005em} \item metodę ruletki, \item metodę rankingową, \item metodę turniejową. \end{itemize} \begin{example} \textbf{Metoda ruletki.} \newline Niech $f(o_i)$ będzie przystosowaniem osobnika $o_i$ z populacji $P$, wtedy prawdopodbieństwo wyboru $o_i$ wynosi: \begin{equation*} p_i = \frac{f(o_i)}{\sum_{j=1}^N f(o_i)}, \end{equation*} gdzie $N$ to rozmiar populacji $P$. \end{example} \vspace*{-3mm} \begin{figure}[h!] \centering \includegraphics[width=0.7\hsize]{selekcja.png} \caption{Przykład selekcji metodą ruletki. Losowana jest liczba $r$ z zakresu $(0,F)$. \newline W tym wypadku wybrany został osobnik $o_4$.} \label{selekcja_pic} \end{figure} \subsection{Krzyżowanie} Krzyżowanie jest to metoda używana do tworzenia nowych osobników. Każdy nowy osobnik tworzony jest z pary rodziców. Krzyżowanie polega na łączeniu dwóch genotypów w jeden. Potomek rodziców ma zespół cech, które są kombinacją genotypów rodziców. \enlargethispage{4\baselineskip} \begin{example} \end{example} \begin{figure}[h!] \centering \includegraphics[width=1\hsize]{krzyzowanie.png} \caption{Przykładowe krzyżowanie osobników zakodowanych binarnie.} \label{krzyzowanie_pic} \end{figure} \subsection{Mutacja} Mutacja jest to operator genetyczny gwarantujący różnorodność osobników. Mutacja wprowadza do genotypu losowe zmiany. Zazwyczaj mutacja zachodzi z bardzo niskim prawdopodbieństwem - najczęściej około 1\%. Wyższe prawdopodbieństwo mogłoby spowodobać, że rozwiązania psułyby się zamiast delikatnie zmieniały. W zależności od kodowania mutację można przeprowadzić przykładowo na następujące sposoby: \begin{itemize} \item w przypadku kodowania binarnego można zanegować losowy bit, \item w przypadku kodowania liczbami całkowitymi (rzeczywistymi) można losowy gen zamienić liczbą wylosowaną z ustalonego ręcznie zakresu liczb całkowitych (rzeczywistych). \end{itemize} \newpage \begin{example} \end{example} \begin{figure}[th] \centering \includegraphics[width=0.3\hsize]{mutacja.png} \caption{Mutacja poprzez zanegowanie losowego bitu.} \label{mutacja_pic} \end{figure} \subsection{Kryterium stopu} Proces generowania coraz to nowyszych pokoleń trwa aż do osiągnięcia kryterium stopu. Popularne kryteria to: \begin{itemize} \item z góry ustalona liczba iteracji, \item znalezienie osobnika (rozwiązania), dla którego funkcja przystosowania \newline da wystarczająco dobry wynik, \item wykorzystanie określonej liczby zasobów np. czasu pracy procesora lub pieniędzy, \item przerwanie procesu, gdy kolejne iteracje nie tworzą lepszych rozwiązań, \item osiągnięcie najlepszego rozwiązania. \end{itemize} \newpage \section{Sieci neuronowe}