Laboratorium technik optymalizacji Marek Kubiak 1 Opis zajęć Zakres zajęć laboratoryjnych jest podzielony na 2 części: realizację algorytmu przeszukiwania lokalnego i wizualizacji jego działania dla zadanego problemu optymalizacji kombinatorycznej modelowanie matematyczne i wykorzystanie istniejących solverów do rozwiązywania zadań optymalizacji 2 Algorytm przeszukiwania lokalnego (LS) 2.1 Zakres zagadnień Celem jest zaimplementowanie algorytmu przeszukiwania lokalnego dla zadanego problemu kombinatorycznego (instancje problemu są udostępniane). Problemy do rozwiązania to: problem układania uniwersyteckiego planu zajęć (UCTP), problem planowania tras dla pojazdów z ograniczeniami pojemnościowymi i klientów z oknami czasowymi (CVRPTW). Szczegółowe zadania projektowe, implementacyjne i obliczeniowe są podzielone na 3 etapy: 1. etap: implementacja wczytywania danych instancji, projekt reprezentacji rozwiązania problemu (struktur danych), projekt tworzenia rozwiązania losowego, implementacja tworzenia rozwiązania losowego, projekt zrandomizowanego rozwiązania heurystycznego, implementacja zrandomizowanego rozwiązania heurystycznego, projekt (propozycja) przeszukiwania lokalnego (definicja ruchu, sposób obliczania wartości zmiany funkcji celu, sposób optymalizacji pętli przeszukiwania), implementacja prostego algorytmu wielokrotnego startu (wielokrotne uruchamianie rozwiązania losowego i heurystycznego), 1
2. etap: 3. etap: implementacja przeszukiwania lokalnego (LS), projekt aplikacji z wizualizacją obliczeń, badania obliczeniowe: algorytm wielokrotnego startu LS z losowym i heurystycznym rozwiązaniem początkowym (porównanie z rozwiązaniem losowym, heurystycznym i najlepszym znanym), usprawnienia przeszukiwania lokalnego (profilowanie kodu), implementacja metaheurystyki opartej na przeszukiwaniu lokalnym (opcjonalnie), implementacja wizualizacji obliczeń, badania obliczeniowe: algorytm wielokrotnego startu LS (porównanie z poprzednimi wynikami obliczeń). Wymagania dla zadań z wizualizacji: prezentacja wizualna całej zawartości aktualnego rozwiązania (w rozsądny i czytelny sposób) razem z zaznaczeniem (np. kolorem) kosztu poszczególnych elementów z boku aktualnego rozwiązania prezentacja liczbowa (koniecznie) lub wizualna (opcjonalnie: wykres, słupek) składników funkcji celu tego rozwiązania wizualizacja pojedynczego kroku przeszukiwania lokalnego (wyróżnianie elementów modyfikowanych przy wykonywaniu ruchu, np. najpierw zaznaczenie elementów usuwanych, chwila przerwy, później zaznaczenie elementów dodawanych, chwila przerwy, narysowanie ostatecznie zmodyfikowanego rozwiązania) opis wykonywanych w czasie wykonywania ruchu czynności (np. jako status bar: wymiana elementu x na element y; f = 10 (zmiana wartości funkcji celu)) uruchamianie całego algorytmu przeszukiwania w trybie ciągłym, z możliwością zatrzymania i wznowienia tego procesu ( play/pause ); animacja zmian aktualnego rozwiązania uruchamianie całego algorytmu przeszukiwania w trybie krokowym ( step ) możliwość ustawienia dodatkowego interwału czasowego pomiędzy ruchami przeszukiwania lokalnego (cel: szybkość animacji dostosowana do percepcji widza) przygotowanie programu z wizualizacją jako apletu; umieszczenie na stronie internetowej prowadzącego przedmiot Szacowana liczba linii kodu w C++ (jako punkt odniesienia) na zadania związane z implementacją metod obliczeniowych to 1000. Dodatkowo na wizualizację: 500 linii. Zadania będą realizowane w zespołach trzyosobowych. 2
2.2 Wykorzystywane narzędzia Język implementacji: Java (1.5), obowiązkowy dla wszystkich zespołów (te same możliwości obliczeniowe). Repozytorium CVSa na serwerze Ophelia. Wymagane jest zachowanie (ogólnej) zgodności ze standardem kodowania Suna dla Javy, tworzenie dokumentacji w Javadoc. Zalecane tworzenie testów jednostkowych dla metod obliczeniowych. 2.3 Planowana liczba zajęć Dla tej części zajęć planowane jest przeprowadzenie 9 laboratoriów. 2.4 Konkurs obliczeniowy Konkurs polega na tym, że napisane przez grupy programy są uruchamiane w takim samym środowisku obliczeniowym i wygrywa grupa, której program generuje rozwiązania o najlepszej jakości. Zwycięstwo w konkursie dodatkowo promuje grupy zadaniowe w sensie oceny zaliczeniowej, ale realizacja wszystkich zadań jest i tak wymagana od wszystkich zespołów. Konkursowe środowisko obliczeniowe Każdy program studencki jest uruchomiony 9 razy dla każdej instancji, po 300 sekund na uruchomienie. Konfiguracja testowa: komputer z procesorem Intel Pentium 4 3GHz, 512 MB RAM gwarantowane, JRE 1.5.0 05. Brak komunikacji sieciowej. Ocena programów konkursowych Dla każdego zespołu: Dla każdej instancji: zweryfikuj poprawność wszystkich znalezionych rozwiązań, znajdź medianę jakości z wszystkich uruchomień, oblicz odstęp w stosunku do najlepszego znanego rozwiązania (lub inna statystyka, która będzie w miarę równoważna dla instancji różnego typu). Dla wszystkich instancji: oblicz średni odstęp od najlepszego rozwiązania. Wygrywa zespół o najmniejszej średniej. Jakiekolwiek niedopuszczalności rozwiązań lub korzystanie z wcześniejszych wyników obliczeń są zabronione. Wszystkie programy muszą budować rozwiązania od podstaw. Udostępnione będą zewnętrzne weryfikatory rozwiązań. Etapy konkursu Konkurs jest trójetapowy, podobnie jak realizacja zadań na zajęciach. Po każdym etapie należy oddać gotowe do uruchomienia w warunkach konkursowych programy obliczeniowe. Po zakończeniu 3. etapu (realizacji i udoskonaleń przeszukiwania lokalnego) wyniki konkursu obliczeniowego decydują o ostatecznej wzajemnej pozycji zespołów. Wcześniejsze etapy są wskazówką co do jakości napisanych programów wpływają na cząstkową liczbę punktów za laboratorium. Obliczenia konkursowe w kolejnych etapach: 5 instancji, 3 znane (w zbiorach udostępnionych wcześniej), 2 nieznane (generalnie tego samego typu). Po obliczeniach: ujawnienie nieznanych instancji. 3
Wraz z ukończeniem 3. etapu należy oddać także programy z wizualizacją, zamieszczone w celach demonstracyjnych na stronie internetowej (może być to strona prowadzącego laboratorium). Nagrody Dwa zespoły zwycięskie w konkursie (jeden zespół dla każdego zadania) są zwalniane z egzaminu z przedmiotu z oceną bardzo dobry. Te wyróżnienia mają także wpływ na konkurs na najlepszych studentów TWO (rozstrzygany pod koniec studiów) informacja od opiekuna specjalności. 3 Szczegółowy harmonogram zajęć Tematy zostały podzielone na poszczególne laboratoria w ten sposób, by czasochłonne zadania projektowe i implementacyjne z części LS były realizowane w dłuższym okresie czasu (kilku tygodni), a nie z zajęć na zajęcia. 1. (2005-10-20) Zajęcia organizacyjne; LS (0): wstęp do zadań optymalizacji kombinatorycznej, zadania szczegółowe do etapu 1.; 2. (2005-10-27) LS (1): konsultacje obowiązkowe prezentacja wynikow projektowania i początków implementacji (wczytywanie danych instancji); 3. (2005-11-03) LS (2): konsultacje i prezentacja wynikow projektowania i implementacji (rozwiązanie losowe i heurystyczne); 4. (2005-11-10) LS (3): zakończenie etapu 1.: krótkie sprawozdanie z badań obliczeniowych, oddanie programów do obliczeń konkursowych; zadania szczegółowe do etapu 2. 5. (2005-11-17) LS (4): konsultacje i implementacja 6. (2005-11-24) LS (5): konsultacje i implementacja 7. (2005-12-01) LS (6): zakończenie etapu 2.: krótkie sprawozdanie z badań obliczeniowych, oddanie programów do obliczeń konkursowych; zadania szczegółowe do etapu 3. 8. (2005-12-08) LS (7): konsultacje i implementacja 9. (2005-12-15) LS (8): konsultacje i implementacja 10. (2005-12-22) LS (9): zakończenie etapu 3.: poprawione lokalne przeszukiwanie, metaheurystyka (opcja), badania obliczeniowe i wizualizacja. 11. (2006-01-05) GAMS (1): wprowadzenie, zadania liniowe; 12. (2006-01-12) GAMS (2): zadania liniowe i nieliniowe; 13. (2006-01-19) GAMS (3): zadania różne. 14. (2006-01-26) GAMS: sprawdzian (komputerowy) 4
4 Modelowanie matematyczne i wykorzystanie istniejących solverów (GAMS) Celem zajęć jest nauka modelowania zadań optymalizacji z wykorzystaniem programu GAMS. 4.1 Zakres zagadnień Wprowadzenie do GAMSa (1 zajęcia): zadania liniowe (np. transportowe); zadania liniowe i nieliniowe (1 zajęcia); zadania różne (nieliniowe, kombinatoryczne) (1 zajęcia). 4.2 Wykorzystywane narzędzia GAMS. Ewentualnie Excel lub AWK do przetwarzania danych wejściowych dla GAMS. 4.3 Planowana liczba zajęć Dla tej części zajęć planowane jest przeprowadzenie 4 laboratoriów (łącznie z testem sprawdzającym). 5 Ocena za laboratorium W trakcie laboratorium można zdobyć 100 punktów za realizację poszczególnych zadań i obecność na zajęciach. Pula punktów jest podzielona następująco: obecność na zajęciach: 10 (max. 3 nieobecności, kolejne nieobecności: -1, -4, -5); GAMS sprawdzian: 20; LS etapy 1-3: przygotowanie do konsultacji: 5; terminowość nadesłania programu: 2; poprawność działania programu: 3; sprawozdanie z wyników obliczeń: 5; jakość rozwiązań (miejsce w rankingu): 1. miejsce: 6 punktów, 2. miejsce: 4 punkty, 3. miejsce: 2 punkty, 4. miejsce: 0 punktów. prezentacja o programie do optymalizacji (LS), z demonstracją wizualizacji (będzie dostępny rzutnik multimedialny): 10; zajęcia z prezentacjami będą najprawdopodobniej tymi odrabianymi zajęciami. W części GAMS punkty są zdobywane indywidualnie. W części LS punkty zdobywa cały zespół. Przelicznik punkty-oceny: 5
91 i więcej: bdb 81 90: db+ 71 80: db 61 70: dst+ 51 60: dst 0 50: ndst 6