Institute of Computer Science, University of Wroclaw, ul. Joliot-Curie 15, 50-383 Wrocław, Poland, Room 239, Email: lipinski@ii.uni.wroc.pl

Wykład z algorytmów ewolucyjnych

Informacja:

Informacje związane z wykładem będę umieszczał w systemie PIAZZA. Wszelkie materiały do zajęć (prezentacje z wykładów, listy zadań, propozycje minireferatów i minikonkursów, informacje dodatkowe i ogłoszenia bieżące) są dostępne na stronie wykładu (https://piazza.com/uni.wroc.pl/fall2014/ae2014/home) bez konieczności rejestrowania się w systemie PIAZZA. Zarejestrowani użytkownicy mogą dodatkowo brać udział w dyskusjach, nie tylko ze mną, ale również z innymi studentami, w ten sposób uzyskując dodatkowe informacje (informacje te można także zawsze uzyskać ode mnie przychodząc na konsultacje). Na pytania dotyczące wykładu zadawane indywidualnie emailem, a nie w systemie PIAZZA, będę odpowiadał tylko w miarę wolnego czasu i tylko w czasie konsultacji.

Opis wykładu:

Algorytmy ewolucyjne to część inteligencji obliczeniowej zajmująca się heurystycznym rozwiązywaniem problemów optymalizacji.


Algorytmy ewolucyjne znajdują zastosowanie w rozwiązywaniu problemów optymalizacji, dla których nie można użyć algorytmów tradycyjnych (m.in. kiedy takie algorytmy nie istnieją lub są zbyt kosztowne obliczeniowo, kiedy problem optymalizacji nie może być zdefiniowany matematycznie, kiedy wystarczające są rozwiązania przybliżone lub dostatecznie dobre z praktycznego punktu widzenia).


Przykładami rozważanych problemów optymalizacji są z jednej strony dobrze znane problemy NP-zupełne (dla których algorytmy ewolucyjne starają się dostarczyć rozwiązania dostatecznie dobre z punktu widzenia praktycznych zastosowań), a z drugiej strony rozmaite problemy praktyczne trudne do sprecyzowania w sposób matematyczny (m.in. takie w których nieznany jest analityczny wzór funkcji celu, ale znana jest metoda liczenia jej wartości, na przykład przez wykonanie pewnych symulacji).


Praktyczne problemy optymalizacji rozwiązywane algorytmami ewolucyjnymi dotyczą systemów ekspertowych, systemów klasyfikacji i rozpoznawania obiektów czy systemów wspomagania decyzji. Popularne jest stosowanie algorytmów ewolucyjnych do analizy obrazów, w tym zdjęć satelitarnych i obrazów medycznych, do analizy danych ekonomicznych i finansowych, zwłaszcza danych wysokiej i ultra wysokiej częstotliwości, do konstrukcji systemów kontroli lotów, do konstrukcji sztucznej inteligencji w grach, itp.


Pierwsza część wykładu dotyczyć będzie podstawowych algorytmów ewolucyjnych do rozwiązywania klasycznego problemu optymalizacji, ich konstrukcji i adaptacji do konkretnych problemów praktycznych i teoretycznych oraz implementacji. Druga część wykładu dotyczyć będzie nowoczesnych algorytmów ewolucyjnych przeznaczonych do rozwiązywania trudniejszych problemów, takich jak optymalizacja wielomodalna, optymalizacja wielokryterialna i optymalizacja dynamiczna.


Wykład wymagać będzie podstawowej wiedzy z zakresu rachunku prawdopodobieństwa i statystyki (na przykład zaliczenie wykładu RPiS). Podczas pracowni wymagana będzie umiejętność programowania w klasycznych językach programowania (C/C++, Java, Python), a przydatna może okazać się też umiejętność programowania w popularnych narzędziach używanych do analizy danych, takich jak Matlab czy Octave (narzędzi tych będzie można nauczyć się samemu w pierwszych tygodniach zajęć lub równocześnie uczęszczać na kurs z nowoczesnych języków przetwarzania danych).


UWAGA: Wykład będzie znaczną modyfikacją wykładu z lat poprzednich.

Program wykładu:

1. Wprowadzenie do algorytmów ewolucyjnych.

2. Podstawowe algorytmy ewolucyjne: algorytmy genetyczne, strategie ewolucyjne, programowanie genetyczne, programowanie ewolucyjne.

3. Zaawansowane algorytmy ewolucyjne odkrywające wiedzę o problemie optymalizacji.

4. Równoległe i rozproszone algorytmy ewolucyjne.

5. Algorytmy optymalizacji wielomodalnej.

6. Algorytmy optymalizacji wielokryterialnej.

7. Algorytmy optymalizacji dynamicznej.

8. Wybrane zastosowania algorytmów ewolucyjnych.