Ogólne Zasady

Projekt realizowany jest w zespołach dwuosobowych.
Z projektu otrzymać można w sumie 50 pkt, z czego min. 15 pkt jest wymagane do zaliczenia przedmiotu:

  • 0-10 pkt - dokumentacja wstępna
  • 0-40 pkt - implementacja + dokumentacja końcowa
  • W ramach projektu zespoły mają za zadanie wykonać jedno z wybranych przez siebie zadań opisanych poniżej. Zadania proszę wybierać parami i zgłaszać chęć realizacji danego projektu mailowo (podając jednocześnie członków zespołu). Jeden temat realizować może tylko jeden zespół. Decyduje kolejność zgłoszeń, w związku z czym można jednocześnie podawać alternatywne preferencje.

    Terminy:

  • Wybór tematów projektów: 13.11
  • Przedstawienie ogólnej koncepcji rozwiązania (polecam w trakcie konsultacji), wstępna dokumentacja (mailowo): 04.12
  • Ostateczny termin przesyłania/prezentacji sprawozdań przedkońcowych (z możliwością uzyskania informacji co poprawić): 15.01
  • Ostateczny termin składania sprawozdań końcowych wraz z implementacją (mailowo) 29.01
  • Proszę starać się dotrzymywać terminów, wszelkie opóźnienia będą karane ujemnymi punktami zgodnie z zasadami pozostałych prowadzących. Zapraszam do częstszego spotykania się czy kontaktowania teams/mail/hangout. Z chęcią podpowiem jak rozwiązać zadania.

    W ramach dokumentacji wstępnej proszę o dokładne przeanalizowanie danych, wstępną propozycję rozwiązania, definicji funkcji celu oraz sposobu mierzenia jakości rozwiązania (podsumowania wyników).

    W końcowej dokumentacji powinny zawrzeć się opis problemu i jego rozwiązania, ale przede wszystkim (najlepiej interesujące) wnioski, obserwacje i analiza wyników. Proszę skupić się na problemie i rozwiązaniu, niekoniecznie na narzędziach. Projekty implementować należy w języku Python.
    Jeżeli z dowolnego powodu preferują Państwo przygotowanie dokumentacji w języku angielskim, nie widzę przeszkód.

    W przypadku konkursów kagglowych, dopuszczam dwie możliwe ścieżki rozwiązania:

  • Próba poprawy publicznie dostępnego rozwiązania - W tej sytuacji proszę w jasny sposób wskazać implementacje na której chcą Państwo bazować, oraz zaproponować nietrywialną metodę która pozwoli poprawić działenie znalezionego rozwiązania. W szczególności poprawa może być ograniczona tylko do przypadków z ograniczonymi danymi.
  • Własna implementacja rozwiązania - W tym podejściu para ma za zadanie własnoręcznie zaimplementować rozwiązanie problemu (z wykorzystaniem dostępnych bibliotek). W przypadku dużych problemów, po uprzedniej konsultacji można ograniczyć ilość analizowanych danych.
  • Tematy niestandardowe

    1. Temat własny
    2. Zachęcam do proponowania własnych tematów projektów, np. związanych z tematami prac inżynierskich. W takim przypadku proszę o krótką notatkę mailem, jeżeli propozycja będzie interesująca spotkamy się żeby ustalić szczegóły.

    Standardowe tematy

    Konkursy kaggle’owe

    Pierwsze tematy projektów zaczerpnięto z serwisu kaggle specjalizującego się w organizowaniu konkursów związanych z szeroko pojętym Data Science, sztuczną inteligencją etc. Niestety wszystkie optymalizacyjne konkursy są już zakończone, mimo wszystko gorąco zachęcam do publikowania swoich rozwiązań jako “late submission”. Można za to dostawać punkty, w niektórych firmach jest to np. mile widziane w procesie rekrutacji.

    1. Santa’s stolen sleigh
    2. ♫ Alarm bells ring, are you listening? Santa's sleigh has gone missing ♫

      Pomóż świętemu Mikołajowi zoptymalizwować sposób załadunku sań i drogę którą musi pokonać z prezentami. Wszystkie podarunki znajdują się początkowo na biegunie północnym. Należy je rozwieźć do poszczególnych miejsc minimalizując „Weighted Reindeer Weariness” zdefiniowaną jako odległość*waga. Odległość liczona jest bezpośrednio pomiędzy współrzędnymi geograficznymi (odległość Haverstine’a)
      Dane: 100 000 punktów z lokalizacją (długość, szerokość geograficzna) i wagą prezentu który należy tam dostarczyć
      Dokładne informacje i dane:
      https://www.kaggle.com/c/santas-stolen-sleigh

    3. Santa’s uncertain bags
    4. ♫ Bells are ringing, children singing, all is merry and bright.
      Santa's elves made a big mistake, now he needs your help tonight ♫

      Pomóż św. Mikołajowi, tym razem zapakować przygotowane prezenty w odpowiednie worki. Do dyspozycji mamy 1000 worków i 9 typów prezentów. Wszystko byłoby proste, gdyby nie fakt że ręcznie robione przez elfy prezenty są zupełnie różne. Każdy typ prezentu tylko w przybliżeniu definiuje jego wagę, a pomyłki mogą być bardzo kosztowne. Nad wszystkim czuwa ministerstwo pracy, które konfiskuje wszystkie worki których waga przewyższa dopuszczalne 50 funtów.
      Dokładne informacje i dane:
      https://www.kaggle.com/c/santas-uncertain-bags

    5. Traveling Santa 2018 - Prime Paths
    6. Kolejny z problemów w którym Mikołaj potrzebuje pomocy przy planowaniu optymalnej drogi z prezentami. Dodatkowym utrudnieniem w tym konkursie jest uwzględnienie specjalnych miast w których renifery będą mogły się regenerować. Najlepiej, żeby działo się to w co 10 z odwiedzanych punktów. W innym przypadku, renifery dużo szybciej się zmęczą.
      Dane: 198 000 punktów
      Dokładne informacje i dane:
      https://www.kaggle.com/c/traveling-santa-2018-prime-paths

    7. Traveling Santa 2019 - Santa's Workshop Tour 2019
    8. Kolejny z problemów w którym Mikołaj potrzebuje pomocy tym razem przy planowaniu wizyt w swoim warsztacie. Jako że liczba chętnych jest ogromna, a Mikołaj jest miły, zdecydował się zaprosić 5000 rodzin i pozwolić im na samodzielne wybranie preferencji - kiedy chcieliby go odwiedzić. Po otrzymaniu zgłoszeń, Mikołaj uświadomił sobie że nie jest w stanie zapewnić wszystkim ich preferowanych terminów. Zdecydował się więc na wypłacanie rekompensaty w zależności od tego jak bardzo pasuje danej rodzinie przydzielony termin. Pomóż Mikołajowi zminimalizować koszt rekompensaty za niedogodne terminy wizyty.
      Dane: 5000 rodzin
      Dokładne informacje i dane:
      https://www.kaggle.com/c/santa-workshop-tour-2019

    9. Traveling Santa 2021 - The Merry Movie Montage
    10. Tym razem, mikołaj potrzebuje pomocy przy optymalizacji harmonogramu siedmiu świątecznych filmów prezentowanych przez SantaTV. Zadanie polega na znalezieniu trzech najkrótszych harmonogramów które spełniają 2 założenia - wszystkie możliwe permutacje filmów muszą znajdować się w przynajmniej jednym harmonogramie. Wszystkie permutacje rozpoczynające się od filmów 1 i 2 muszą znajdować się w każdym harmonogramie. Dla ułatwienia zadania, możliwe jest zastosowanie dwóch blanków - sytuacji w której wszystkie filmy grane są jednocześnie.
      Dokładne informacje i dane:
      https://www.kaggle.com/competitions/santa-2021/overview
      W razie problemów obliczeniowych możliwe jest uproszczenie problemu do mniejszej liczby filmów.

    11. Santa 2023 - wielowymiarowe bombki
    12. Jak co roku elfy przygotowują świąteczne ozdoby do powieszenia na choince. Ozdoby te występują w wielu kształtach z odpowiednimi kolorami i oznaczeniami. Niestety w tym roku elfy śmieszki zdecydowały się popsuć ozdoby poprzez wymieszanie układanek. Zadanie polega na znalezieniu możliwie najmniejszej liczby ruchów które pozwolną na rozwiązanie zagadek zgodnie z ich regułami przedstawionymi w treści zadania.
      Dokładne informacje i dane:
      https://www.kaggle.com/competitions/santa-2023/overview
      W razie problemów obliczeniowych możliwe jest uproszczenie problemu do wyłącznie mniejszych i łatwiejszych puzzli

    13. Optymalizacja sygnalizacji świetlnych w mieście
    14. Znając rozkład ulic oraz planowane trasy przejazdu samochodów, należy w ramach konkursu zaproponować możliwie najlepszą synchronizację sygnalizacji świetlnej. Celem projektu jest opracowanie mechanizmu który umożliwi jak największej liczbie samochodów przejazd z jak najmniejszym opóźnieniem.
      Dokładne informacje i dane:
      https://www.kaggle.com/competitions/hashcode-2021-oqr-extension/overview

    15. Optymalizacja pokazu slajdów
    16. W ramach konkursu należy zoptymalizować ułożenie zdjęć w ramach jednego pokazu slajdów, biorąc pod uwagę przypisane im tagi. Zdjęcia powinny być wyświetlane w takiej kolejności żeby zapewnić możliwie największe pokrycie tagów.
      Dokładne informacje i dane:
      https://www.kaggle.com/competitions/hashcode-photo-slideshow

    17. Optymalizacja dostaw za pomocą dronów
    18. W ramach konkursu należy zaplanować pracę floty latających dronów które rozwożą przedmioty z hurtowni do końcowych odbiorócw. Drony zawsze poruszają sie w lini prostej pomiędzy hangarami a odbiorcą, mogą przyjmować na pokład kilka przedmiotów z zastrzeżeniem że nie przekraczają całkowitej ładowności. Celem projektu jest znalezienie takiego planu pracy dronów który pozwoli najszybciej dostarczyć jak najwięcej przesyłem. Szczegółowa instrukcja odnośnie zadania znajduje się w zakładce Data w pliku pdf
      Dokładne informacje i dane:
      https://www.kaggle.com/competitions/hashcode-drone-delivery/overview

    Pozostałe tematy

    1. Optymalizacja hiperparametrów algorytmu xgboost

      za pomocą algorytmów heurystycznych
    2. Algorytm xgboost jest uważany za jedną z najlepszych metod klasyfikacji. Niestety jego stosowanie jest utrudnione ze względu na bardzo dużą liczbę hiperparametrów takich jak np. liczba produkowanych drzew decyzyjnych, ich głębokość, krok uczenia, wielkość podzbiorów losowanych przy kolejnym kroku etc. Wymienione atrybuty często optymalizowane są ręcznie w ograniczony sposób. Zadanie to można jednak robić w mądrzejszy sposób wykorzystując algorytmy heurystyczne. W ramach tematu tego projektu należy przetestować różne algorytmy heurystyczne/populacyjne w kontekście problemu strojenia hiperparametrów algorytmu xgboost. Jakość działania algorytmów należy przetestować na podstawie dowolnego (nietrywialnego) zbioru. Np: https://www.kaggle.com/c/porto-seguro-safe-driver-prediction.

    3. Dobierz je wszystkie!
    4. Znajdź idealny skład pokemonów które będą w stanie wygrać jak najwięcej pojedynków. Każdy pokemon charakteryzuje się innymi parametrami (atak, obrona) oraz ich skutecznością przeciwko konkretnym typom pokemonów. Z reguły np. wodne pokemony są skuteczne przeciwko ogniowym, natomiast mało skuteczne przeciwko trawiastym itp.. Bohater może posiadać jednocześnie maksymalnie 6 pokemonów, dlatego zadanie polegać będzie na znalezieniu takiej idealnej kombinacji, która będzie skuteczna przeciwko największej liczbie przeciwników, jednocześnie nie będąc zbyt wrażliwa na niektórych z nich. W dobieraniu kombinacji proszę wziąć pod uwagę częstotliwość występowania poszczególnych gatunków. Do poprawnego rozwiązania konieczne będzie dokładne przeanalizowanie danych, ponieważ występuje w nich kilka obserwacji odstających które należy w jakiś sposób uwzględnić.
      Dane:
      https://www.kaggle.com/rounakbanik/pokemon

    5. Optymalizacja atrybutów dla zadania klasyfikacji binarnej

      (2 zespoły, różne zbiory danych)
    6. Dla problemu klasyfikacji binarnej zbioru o ogromnej liczbie atrybutów (np. Dorothea lub Farm ads) zaproponuj algorytm heurystyczny który wybierał będzie możliwie najlepszy podzbiór atrybutów które poprawią wyniki klasyfikacji. Jako klasyfikatora użyj dowolnego prostego algorytmu (kNN, regresja liniowa).

    7. Optymalizacja najlepszego podzbioru przykładów

      potrzebnych do wytrenowania klasyfikatora
    8. Uwaga: projekt wymaga znajomości podstaw sieci neuronowych. Dla problemu klasyfikacji obrazów (np. zbiór FashionMNIST lub docelowo CIFAR-10 lub CIFAR-100 ), należy znaleźć podzbiór najbardziej charakterystycznych przykładów z każdej klasy które są wystarczającym do zbudowania poprawnie działającego klasyfikatora. Czyli które zdjęcia są w stanie zapewnić najlepszą możliwą separację?

    9. Optymalizacja próbek do odtwarzania w problemie uczenia ciągłego
    10. Uwaga: projekt wymaga znajomości podstaw sieci neuronowych. Projekt zbliżony do poprzedniego. Dla problemu klasyfikacji obrazów (np. zbiór FashionMNIST lub CIFAR-10 lub CIFAR-100 ), należy znaleźć podzbiór najlepszych przykładów które należy umieszczać w buforze przy dotrenowywaniu modelu w sposób ciągły. Które przykłady są najważniejsze do tego żeby nie zapomnieć dotychczas zgromadzonej wiedzy? Osoby zainteresowane tematem mogą skorzystać z kursu ContinualAI do wprowadzenia w temat. W szczególności przyswoić wykład Metody buforowe

    11. Santa tracker
    12. Podobnie jak w pierwszych zadaniach, zadanie polega na wsparciu Mikołaja w problemie zaplanowania trasy przelotu przy rozwożeniu świątecznych prezentów. Tym razem w planowaniu uwzględnić należy też jedzenie dla reniferów. Więcej jedzenia pozwala na przebycie większych odległości, ale bardziej obciąża też renifery.
      Dokładny opis zadania:
      https://github.com/pierreavn/google-hashcode-archive/tree/main/archive/2022/final/hashcode_2022_final_round.pdf
      Dane dostępne są w zakładce:
      https://github.com/pierreavn/google-hashcode-archive/tree/main/archive/2022/final/hashcode_2022_final_round.in

    13. Planowanie miasta
    14. W tym zadaniu celem jest zaplanowanie zabudowy miejskiej tak by była ona jak najbardziej przyjazna dla mieszkańców. Zadanie polega na możliwie najlpeszych poukładaniu budynków miejskich R i usługowych U, tak by zminimalizować konieczność przemieszczania się mieszkanców w celu zaspokojenia ich potrzeb życiowych.
      Dokładny opis zadania:
      https://github.com/pierreavn/google-hashcode-archive/tree/main/archive/2022/final/hashcode_2018_final_round.pdf
      Dane dostępne są w zakładce:
      https://github.com/pierreavn/google-hashcode-archive/tree/main/archive/2022/final/hashcode_2018_final_round.in

    15. Zabawa w PMa
    16. W tym projekcie, celem jest zoptymalizowanie przydziału pracowników do projektów. Do dyspozycji posiadają Państwo listę pracowników, wraz z informacjami na temat posiadanych przez nich umiejętności oraz listę projektów wraz z wymaganymi umiejętnościami które są potrzebne do ukończenia projektu. Pracownicy z biegiem czasu mogą poprawiać swoje umiejętności oraz mogą być mentorowani przez kolegów z większym doświadczeniem tak by wykonywać zadania normalnie ponad swoje siły. Zadanie polega na znalezieniu takiego przydziału który zmaksymalizuje punkty za zrealizowane projkety
      Dokładny opis zadania:
      https://github.com/pierreavn/google-hashcode-archive/blob/main/archive/2022/qualification/hashcode_2022_qualification_round.pdf
      Dane dostępne są w zakładce:
      https://github.com/pierreavn/google-hashcode-archive/tree/main/archive/2022/final/hashcode_2018_final_round.in