Metody optymalizacji
1000-MS1MetOpt
Wykład
Wykład przedstawia podstawowe i zaawansowane metody optymalizacji stosowane w nauce, inżynierii i analizie danych. Zaczynamy od przypomnienia podstaw matematycznych: pochodnych, gradientu, hesjanu, rozwinięć Taylora oraz warunków koniecznych i dostatecznych istnienia ekstremów funkcji.
Następnie omawiamy optymalizację funkcji jednej zmiennej: metoda bisekcji, złotego podziału, Newtona, przeszukiwania jednostajnego - ich poprawność, zbieżność i kryteria zatrzymania.
W części poświęconej optymalizacji funkcji wielu zmiennych analizujemy metody gradientowe, Newtona-Raphsona, Levenberga-Marquardta oraz metody gradientów sprzężonych. Dodatkowo omawiamy metody stochastyczne: spadek wzdłuż gradientu, Monte Carlo, symulowane wyżarzanie i algorytmy heurystyczne, pokazując ich zastosowania, gdy klasyczne podejścia zawodzą.
W trakcie kursu nacisk kładziony jest na interpretację geometryczną metod, analizę zbieżności oraz dobór algorytmu do konkretnego problemu optymalizacyjnego. Materiały wykładowe udostępniane są w postaci slajdów i przykładów w Pythonie.
Laboratorium
Laboratoria mają charakter praktyczny i umożliwiają zastosowanie omawianych metod na rzeczywistych problemach optymalizacji. Studenci:
* implementują metody gradientowe, Newtona, sprzężonych gradientów i wybrane metody stochastyczne,
* eksperymentują z parametrami algorytmów i badają ich wpływ na zbieżność i czas działania,
* przeprowadzają analizę efektywności i jakości rozwiązań,
* korzystają z bibliotek numerycznych NumPy, SciPy i PyTorch,
* raportują wyniki i prezentują krótkie podsumowania swoich rozwiązań.
Ćwiczenia laboratoryjne wymagają aktywnej pracy zarówno podczas zajęć, jak i w ramach pracy własnej. Wyniki oceniane są na podstawie poprawności implementacji, przeprowadzonych eksperymentów oraz jakości przygotowanych raportów.
Całkowity nakład pracy studenta
## Całkowity nakład pracy studenta
* 30 godz. - wykład
* 30 godz. - laboratoria
* 3 godz. - egzamin
* 3 godz. - prezentacja zadań w ramach laboratoriów
* 30 godz. - konsultacje z prowadzącymi zajęcia
* 20 godz. - praca własna: przygotowanie zadań
* 20 godz. - bieżące przygotowania do zajęć, studiowanie literatury
* 20 godz. - praca własna: przygotowanie do egzaminu
Łącznie: 156 godz. (5 pkt ECTS)
Efekty uczenia się - wiedza
Po ukończeniu kursu student:
* W01 - zna metody projektowania i analizy złożoności algorytmów optymalizacyjnych dla programów sekwencyjnych oraz (w zarysie) rozproszonych (K_W12),
* W02 - zna elementy analizy statystycznej wyników (estymacja, testowanie hipotez, redukcja wymiaru) potrzebne do ewaluacji algorytmów (K_W03, K_W05),
* W03 - zna metody rozwiązywania problemów trudnych obliczeniowo: gradientowe, Newtona, sprzężone gradienty, wybrane heurystyki (Monte Carlo, symulowane wyżarzanie) (K_W12),
* W04 - zna praktyczne aspekty wydajnych implementacji w Pythonie z użyciem bibliotek numerycznych (K_W11).
Efekty uczenia się - umiejętności
Po ukończeniu kursu student potrafi:
* U01 - dobierać, projektować i analizować algorytmy optymalizacji, w tym uzasadniać ich poprawność i oszacować złożoność (K_U16),
* U02 - implementować algorytmy optymalizacji i wykorzystywać biblioteki numeryczne (NumPy, SciPy, PyTorch) (K_U16, K_U15),
* U03 - stosować narzędzia inżynierii oprogramowania, w tym repozytoria kodu, testy i raportowanie wyników (K_U15, K_U17),
* U04 - wyszukiwać i krytycznie oceniać literaturę fachową, dokumentację oraz źródła internetowe (K_U02).
Efekty uczenia się - kompetencje społeczne
Po ukończeniu kursu student:
* K01 - myśli twórczo w zakresie doboru i modyfikacji metod optymalizacji (K_K01),
* K02 - potrafi samodzielnie analizować dane i formułować wnioski, stosując zasady logiki (K_K01),
* K03 - jest systematyczny, dba o szczegóły i terminowość (K_K03),
* K04 - komunikuje swoje wyniki jasno, używając właściwej terminologii, oraz potrafi współpracować interdyscyplinarnie (K_K05, K_K06),
* K05 - potrafi pracować w zespole projektowym i konstruktywnie rozwiązywać problemy (K_K03, K_K04).
Metody dydaktyczne
* Wykład problemowy z przykładami,
* Laboratoria komputerowe z implementacją metod optymalizacji,
* Miniprojekty i raporty laboratoryjne,
* Dyskusje nad rozwiązaniami i analiza przypadków,
* Konsultacje indywidualne z prowadzącym,
Metody dydaktyczne podające
- wykład informacyjny (konwencjonalny)
Metody dydaktyczne poszukujące
- laboratoryjna
- ćwiczeniowa
Metody dydaktyczne w kształceniu online
- metody służące prezentacji treści
Rodzaj przedmiotu
przedmiot fakultatywny
Wymagania wstępne
Student powinien posiadać:
* znajomość podstaw analizy matematycznej: pochodne, gradient, hesjan, rozwinięcia Taylora, granice funkcji,
* umiejętność wykonywania prostych przekształceń macierzowych: mnożenie, odwracanie, wyznaczniki, wartości i wektory własne,
* znajomość podstaw algebry liniowej, w tym ortogonalności wektorów i norm wektorowych,
* podstawową znajomość programowania w Pythonie oraz korzystania z bibliotek numerycznych,
* zalecane jest wcześniejsze zapoznanie się z podstawowymi metodami optymalizacji jednej zmiennej: metoda bisekcji, złotego podziału, Newtona, kryteria stopu.
Koordynatorzy przedmiotu
Kryteria oceniania
Efekty kursu opisane są w sekcjach: wiedza, umiejętności, kompetencje społeczne. Student zdobywa zarówno solidne podstawy teoretyczne, jak i umiejętności praktyczne: potrafi projektować i implementować algorytmy optymalizacji, analizować ich efektywność i prezentować wyniki w formie raportów oraz prezentacji.
Praktyki zawodowe
Literatura
Podstawowa:
1. Boyd, S., Vandenberghe, L. - Convex Optimization.
2. Nocedal, J., Wright, S. - Numerical Optimization.
3. Bertsekas, D. - Nonlinear Programming.
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i
terminach zajęć) mogą być dostępne w serwisie USOSweb: