Laboratorium optymalizacja kombinatoryczna, 2010/2011

Zasady zaliczenia    Format sprawozdania    Tematy zadań    Uwagi   

Zasady zaliczania

  1. Grupa dziekańska jest dzielona na 2-sobowe zespoły. Każdy zespół programuje rozwiązania dla jednego z 3 problemów.
  2. Oceny określane są następująco. Ocena bazowa: 1 rozwiązanie - 3, ≥ 2 rozwiązania - 4, ≥ 3 rozwiązania - 5. Za braki w opisie i in. niedostatki rozwiązania będą odejmowane punkty od oceny bazowej.   Wyliczana jest średnia z ocen za 2 rozwiązania. Trzecie rozwiązanie dla chętnych (np. w celu podwyższenia średniej). Brak rozwiązania przyjmuję ocenę 2.0. Do oceny bazowej za pracę mogą być dodane punkty dla: a) 1.0 zespołu, który jako pierwszy zrobi >=2 metody, b) 0.5 zespołu, który jako drugi zrobi >=2 metody, c) za szczególnie ciekawe rozwiązania (b. szybkie, b. dobrej jakości, ciekawa idea metody).
  3. Poszczególne rozwiązania muszą się istotnie różnić jakościowo. Na przykład, użycie heurystyki kolorującej wierzchołki grafu w kolejności wynikającej z czegoś jest tylko jedną metodą niezależnie od metody wyboru kolejności wierzchołków. Trzy różne metaheurystki (np. simulated annealing, tabu search i genetic algorithm) SĄ trzema różnymi metodami. Co do różnych wersji algorytmu BB, to istnienie różnic między implementacjami jest zależne od szczegółów, tj. metod cięcia i liczenia dolnych ograniczeń.
  4. Wynik pracy trzeba przedstawić w działaniu na testach, objaśnić kod (także ustnie na zajęciach), sporządzić sprawozdanie.
  5. Terminy zaliczenia. Programy można też zaliczać wcześniej.
  6. Każdy tydzień opóźnienia w zaliczeniu obniża ocenę o 0.5. Jeżeli praca była zwrócona do poprawki (tzn. musi być oceniona ponownie), to nową wersję trzeba dostarczyć w ciągu tygodnia od wysłania przeze mnie informacji o błędach. Przekroczenie tego terminu będzie obniżać ocenę bazową o 0.5 stopnia za każdy tydzień. Minimalna ocena pracy, która (w końcu) zostanie zaakceptowana wynosi 3.0.
  7. Po zakończeniu sesji poprawkowej prace nie będą przyjmowane. Daty wpłynięcia sprawozdania, programu, wysłania informacji o błędach określa mój system poczty elektronicznej lub (w przypadku papieru) moment wręczenia sprawozdania (datę możemy wpisać razem ;-).
  8. Jeżeli praca jest oddawana w kawałkach (program, tekst), to liczy się data oddania ostatniego kawałka. Sprawozdanie może być tworzone przyrostowo, tzn. sprawozdanie dla każdego kolejnego rozwiązania może zawierać poprzednie sprawozdanie jako podzbiór.
  9. Język programowania C, C++, preferowany kompilator gcc, g++. Akceptowane będą tylko te programy, które uda się skompilować na zajęciach dostępnymi kompilatorami. Wszystkie programy muszą się dać wykonać z linii poleceń i z linii poleceń przyjmować parametry wykonania (nazwy plików, liczby, itp.).
  10. Jakie metody wchodzą w rachubę: a) "szyte" heurystyki, b) BB, c) metaheurystyki, d) użycie zewnętrznych pakietów rozwiązujących części składowe problemu np. (sprowadzenie do) ILP (integer linear programming, np. lp_solve przykład knapsack, przykład max-sat). Pobieżny opis tych metod można znaleźć np. na foliach 60-96 na stronie z prowadzonego kiedyś przeze mnie wykładu. Ale uwaga! Nie wolno importować całych gotowych rozwiązań (cudzego kodu rozwiązującego całe postawione zadanie). Można korzystać z rozwiązań opisanych w książkach, wówczas trzeba podać źródło.
  11. Proszę nie traktować mnie jako swojego korektora. Za przysłanie niedziałających programów i niekompletnych sprawozdań zwracam pracę do poprawy i obniżam ocenę o 0.5, za każdą taką iterację. Programy można testować i zgłaszać dowolną liczbę razy na zajęciach.


Format sprawozdania

Sprawozdanie powinno zawierać:

  1. Metadane nt. autorów i projektu: imiona, nazwiska, nry indeksów, email do kontaktu, datę oddania sprawozdania (najlepiej wpisać w momencie wręczenia mi), nazwę zadania i nazwę rozwiązania (np. Kolorowanie, algorytm zachłanny).
  2. Opis metody rozwiązania problemu. Trzeba opisać ideę/zasadę na której opiera się algorytm. Można tu włączyć istotne wyjątki z kodu.
  3. Badania efektywnościowe, tzn. wyniki testów czasu działania metody i jakości uzyskanych rozwiązań w zależności od trudności problemu. Przykładowe instancje testowe zostaną wskazane przy każdym temacie. Przeprowadzenie obszerniejszych testów będzie zaletą pracy.
  4. Wnioski. Ciekawe spostrzeżenia nt. działania algorytmu(-ów), trudności instancji itp. Np. można porównać swoje trzy metody na wykresie jakość/czas i stwierdzić, która dominuje nad którą, a które metody są niezdominowane.
  5. Załącznik w postaci kodu programu proszę przysłać pocztą (może być spakowany jakimś typownym programem, np. w formacie zip, tgz). Program będzie testowany pod kątem poprawności generowanych rozwiązań.
  6. W emailu i/lub sprawozdaniu proszę napisać jak skompilować Państwa program i jak go uruchomić.
Proszę o dostarczenie sprawozdania w formie papierowej (z wyjątkiem kodu programu).

Lista tematów do wyboru

Uwagi nt. implementacji

  1. Jak określić kiedy metaheurystyka ma się zatrzymać? Są dwa wyjścia.
    a) Jeżeli algorytm jest zdefiniowany tak, że znamy optymalną wartość funkcji celu, to algorytm może zatrzymać się po jej osiągnięciu.
    b) Jeżeli optimum nie jest znane, to trzeba zatrzymać się po pewnym czasie. Ze względów praktycznych algorytmy zachłanne nie powinny działać dłużej niż kilka sekund, a algorytmy takie jak BB, GA, Tabu nie powinny działać dłużej niż kilka (góra kilkanaście) minut, aby możliwa była weryfikacja ich działania na zajęciach. Trzeba tak dobrać liczbę iteracji, aby ten czas nie był przekraczany. Przyjmijmy, że limit czasu dla testów do sprawozdania to 10 minut. Do weryfikacji poprawności rozwiązania na zajęciach przyjmijmy limit 5 minut.
  2. Strojenie (tuning) metaheurystyk.
    Jeżeli ktoś z Państwa implementuje jakąś metaheurystykę, to proszę zwróćić uwagę, że metaheurystyki zwykle mają szereg parametrów sterujących ich działaniem. Na przykład: tabu search - długość listy tabu, rozmiar przeszukiwanego sąsidztwa, genetic search - rozmiar populacji, prawdopodobieństwo mutacji, simulated annealing - sposób zmieniania temperatury, wszystkie takie algorytmy - warunek stopu (np. liczba iteracji, czas działania do zatrzymania). Te wszystkie parametry trzeba sensownie dobrać. Zwykle wymaga to testowania i eksperymentalnego dobierania. Wyniki takich testów trzeba opisać i objaśnić w sprawozdaniu. Zwykle wiązanie ad hoc tych "magicznych" liczb ze strukturą instancji nie jest dobrym pomysłem. Brak strojenia oznacza, że metaheurystka nie została prawidłowo użyta.

Uwagi organizacyjne

  1. Znalazłeś/Znalazłaś błąd? Informuj!
  2. Za znalezienie błędu (wykazanie błędnego działania) sprawdzarki +1 stopień do oceny końcowej.


MD.Ostatnia zmiana :