Wykład z algorytmów ewolucyjnych
Aktualności:
Sprawy organizacyjne:
Pracownie (poza nielicznymi, zapowiedzianymi z wyprzedzeniem, wyjątkami) będą polegać na indywidualnym oddawaniu zadań i dyskusji ewentualnych problemów. Zadania można też oddawać w dodatkowych terminach, na konsultacjach online (domyślnie, ale po indywidualnym umówieniu się może być stacjonarnie), które proszę rezerwować przez mój kalendarz Google (okienka oznaczone jako "Algorytmy ewolucyjne" lub "Konsultacje"). Propozycje dodatkowych terminów będą zależeć od moich możliwości czasowych, gwarantowanym terminem mojej dostępności są pracownie. Dodatkowo, rozwiązania zadań proszę przesyłać mi emailem, najpóźniej o 23:59:59 dnia, w którym przypada termin oddawania zadań.
Listy zadań:
Lista zadań nr 1 PDF (termin 23/25 października 2024, ale za oddanie co najmniej 1 zadania do 18 października 2024 będą 2 punkty bonusowe)
Skrypt IPythona do listy zadań nr 1 HTML IPYNB
Lista zadań nr 1 - dane ZIP (hasło do pliku to tytuł naszego wykładu pisany małymi literami bez spacji z literami l zamienionymi na wykrzykniki)
Lista zadań nr 2 PDF (termin 13/15 listopada 2024, ale za oddanie co najmniej 2 zadań do 8 listopada 2024 będą 2 punkty bonusowe)
Skrypt IPythona do listy zadań nr 2 HTML IPYNB
Parę słów o QAP i Q3AP do listy zadań nr 2 PDF
Lista zadań nr 3 PDF (termin 27/29 listopada 2024)
Lista zadań nr 4 PDF (termin 11/13 grudnia 2024, ale za oddanie co najmniej 2 zadań do 6 grudnia 2024 będą 2 punkty bonusowe)
Skrypt IPythona do listy zadań nr 4 HTML IPYNB
Lista zadań nr 5 PDF (termin 8/10 stycznia 2025, ale za oddanie co najmniej 1 zadania do 20 grudnia 2024 będą 2 punkty bonusowe)
Skrypt IPythona do listy zadań nr 5 IPYNB
Prezentacje z wykładów:
Wprowadzenie do algorytmów ewolucyjnych PDF
Zarys algorytmu ewolucyjnego PDF
Strategie ewolucyjne - ES(m, l, r, k) PDF
Estimation of Distribution Algorithms - część 1 PDF
Strategie ewolucyjne - CMA-ES PDF
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).
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.