Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
tematy_prac_inzynierskich [2020/06/28 02:57] pszwed [2020] |
tematy_prac_inzynierskich [2023/06/27 21:09] pszwed [1. Aplikacja do analizy sieci społecznościowej pracowników AGH] |
||
---|---|---|---|
Line 9: | Line 9: | ||
====== Tematy prac inżynierskich ====== | ====== Tematy prac inżynierskich ====== | ||
+ | |||
+ | ===== 2023 ===== | ||
+ | |||
+ | Możliwe jest zgłaszanie propozycji własnych tematów. Ważnym dla mnie problemem jest wypełnienie rozwijanej aplikacji danymi tak, aby możliwe było przetestowanie wydajności. Raczej oczekiwane jest użycie 10000+ rekordów, a nie np. 20. | ||
+ | |||
+ | ==== 1. Aplikacja do analizy sieci społecznościowej pracowników AGH ==== | ||
+ | |||
+ | Zarezerwowane [M.D.] | ||
+ | |||
+ | Zakres pracy: | ||
+ | - webscraping danych o publikacjach pracowników AGH (być może z pewnymi ograniczeniami) | ||
+ | - zapis do bazy danych | ||
+ | - budowa grafów powiązań pomiędzy pracownikami (wspólne publikacje, takie same słowa kluczowe publikacji) | ||
+ | - wizualizacja i przeglądanie danych | ||
+ | |||
+ | ==== 2. Uczenie ze wzmocnieniem na platformie Ray ==== | ||
+ | |||
+ | Opracowanie jednego lub kilku przykładów ucznia ze wzmocnieniem korzystającego z modułów platformy [[https:// | ||
+ | Typowe zastosowanie - gra, której stan jest obserwowany i w zależności od stanu należy wydać odpowiednie polecenie. | ||
+ | |||
+ | Przy wsparciu biblioteki proces uczenia rozdzielony pomiędzy współbieżne zadania lub agentów. Należy zbierać dane dotyczące wydajności systemu (w tym czasów wykonania). | ||
+ | |||
+ | ==== 3. Optymalizacja rozmieszczenia pojazdów w Car Sharing ==== | ||
+ | |||
+ | Celem jest rozwiązanie następującego zagadnienia: | ||
+ | * mamy k lokalizacji (na przykład dzielnic) oraz pewną liczbę n pojazdów | ||
+ | * w danym czasie t pojazdy są rozmieszczone w lokalizacjach lub są w ruchu | ||
+ | * Znane jest prawdopodobieństwo P(i,j,t) przejazdu z lokalizacji i do j rozpoczynającego się w czasie t. Czasy możemy zdyskretyzować , np. do 15 min. | ||
+ | * Znany jest czas tego przejazdu T(i,j,t) | ||
+ | * Jeżeli rozważymy pewien horyzont czasowy, np. 24h to możemy zasymulować zachowanie systemu i obliczyć E[T] - wartość oczekiwaną sumarycznego czasu ruchu samochodów w ciągu doby. W ten sposób wyznaczamy wartość funkcji celu. | ||
+ | * W celu optymalizacji podejmujemy decyzję dotyczącą transferu pojazdu z lokalizacji i do j rozpoczętego w czasie t x_{ijt} = 0/1. Staramy przenieść samochody z lokalizacji o małym popycie do lokalizacji bardziej atrakcyjnych, | ||
+ | * Liczba przemieszczanych w danym momencie samochodów jest ograniczona (np. m=10 to liczba pracowników zajmujących się przemieszczaniem) | ||
+ | * Do rozważenia - platforma gurobi, | ||
+ | * lub opracowanie i implementacja własnago algorytmu heurystycznego | ||
+ | |||
+ | [W zasadzie może to być kilka prac, gurobi vs. własna implementacja, | ||
+ | |||
+ | ==== 4. Propagacja informacji w dużym grafie (= grafie sieci drogowej) ==== | ||
+ | |||
+ | Celem pracy jest implementacja i testy oprogramowania implementującego 2-3 algorytmy propagacji informacji w grafie. Załóżmy, że utworzymy graf sieci drogowej Krakowa wydzielając kilkudziesięciometrowe odcinki dróg. Aktywacja jednego z odcinków (np. zmiana gęstości ruchu lub innego parametru) powinna być rozpropagowana w jego sąsiedztwie. Możliwe algorytmy to przesyłanie komunikatów do sąsiadów, rozwiązania wzorowane na automatach komórkowych lub losowe błądzenie po grafie (z ograniczeniem liczby kroków). | ||
+ | |||
+ | Oczekiwana jest wizualizacja wyników (np. pogrubione/ | ||
+ | |||
+ | ==== 5. Zapytania w języku naturalnym do bazy danych (geograficznych) ==== | ||
+ | |||
+ | Interesuje nas zbiór danych przechowywanych w bazie OSM (https:// | ||
+ | |||
+ | Zakładamy pewną skończoną liczbę typów zapytań dotyczących różnych obiektów (około 20-30) , np.: | ||
+ | |||
+ | * " | ||
+ | * " | ||
+ | takie zapytania należy rozpoznać i zamienić na kwerendy do BD, a następnie wyświetlić wyniki w aplikacji webowej | ||
+ | |||
+ | * Do przetwarzania tekstu i rozpoznawania typów zapytań i ich argumentów należy użyć biblioteki spaCy [[https:// | ||
+ | * Aplikację można zaprojektować w architekturze backend - frontend, albo w postaci monolitycznej. | ||
+ | * Językiem spaCy jest Python, więc | ||
+ | * albo usługa będzie dostępna poprzez mikroserwis, | ||
+ | * albo backend będzie napisany w Pythonie (np. Flask, FastAPI) | ||
+ | * albo cała aplikacja będzie napisana w Pythonie (np. Django lub dash) | ||
+ | |||
+ | |||
+ | |||
+ | ===== 2021 ===== | ||
+ | |||
+ | **Wyczerpałem limit prac inżynierskich** | ||
+ | |||
+ | Możliwe jest zgłaszanie własnych tematów. Jednak, nie chcę prowadzić prac polegających na implementacji aplikacji webowej/ | ||
+ | z użyciem typowego stosu technologicznego, | ||
+ | |||
+ | |||
+ | |||
+ | === 1. Optymalizacja ciągła: PyTorch + algorytm pszczeli=== | ||
+ | [zajęte, MW] | ||
+ | |||
+ | === 2. Optymalizacja ciągła - algorytm mrówkowy=== | ||
+ | Obejmuje opracowanie algorytmu (specyficzna implementacja). Platforma TensorFlow lub PyTorch lub CUDA | ||
+ | Testy z użyciem funkcji testowych z konferencji CEC | ||
+ | [zajęte MS] | ||
+ | |||
+ | === 3. Inne algorytmy optymalizacji ciągłej === | ||
+ | Do ustalenia. | ||
+ | |||
+ | === 4. Baza wiedzy z rozmytymi relacjami=== | ||
+ | Na przykładzie rekomendacji dietetycznych dla różnych typów schorzeń. | ||
+ | Obejmuje: bazę, interfejs dostępu REST do odczytu i zapisu, aplikację webową. Należy wypełnić bazę przykładowymi danymi, np dla 2-3 schorzeń i produktów spozywczych. | ||
+ | |||
+ | === 5. Repozytorium danych tekstowych na potrzeby NLP === | ||
+ | Obejmuje projekt i implementację bazy danych + web scraping artykułów z wybranych 2-3 źródeł (np. PubMed), indeksowanie według wybranych terminów. [zarezerwowane PM] | ||
+ | |||
+ | === 6. Rozpoznawanie aktywności użytkownika na podstawie odczytów czujników urządzenia mobilnego === | ||
+ | Aplikacja mobilna zbierająca i interpretująca dane. Należy zarejestrować przykłady odczytów (bieg, chód, | ||
+ | |||
+ | === 7. Predykcja szeregów czasowych z użyciem Rozmytych Map Kognitywnych === | ||
+ | Implementacja na platformie TensorFlow lub PyTorch. Najchętniej na (części) danych typu PEMS https:// | ||
+ | |||
+ | === 8. Projekt i implementacja wybranych algorytmów grupowania dla PostgreSQL=== | ||
+ | Przykładowe algorytmy to k-means, db-scan, ward. Implementacja w języku PL/pgSQL. Projekt obejmuje generację danych syntetycznych różnych rozmiarów i testy algorytmów. [zarezerwowane HM] | ||
+ | |||
+ | === 9. Rozpoznawanie emocji w głosie=== | ||
+ | W ramach pracy należy zdefiniować kilka kategorii emocji (spokojna rozmowa, uprzejma rozmowa z klientem, kłótnia, program informacyjny, | ||
+ | [zajęte MW] | ||
+ | |||
+ | === 10. Generacja informacji o ruchu w grafie === | ||
+ | Graf sieci drogowej na podstawie mapy OSM. Rozmiar - co najmniej aglomeracja. W sieci porusza się duża liczba obiektów, dla każdego obiektu losowany jest punkt startowy i końcowy i wyznaczana droga (np. algorytmem A-star). Oprogramowanie ma zbierać informacje o koncentracji obiektów w danym miejscu i przedziale czasu (natężeniu ruchu). | ||
+ | |||
+ | === 11. Grupowanie obiektów na mapie=== | ||
+ | Implementacja algorytmu, który będzie łączył w grupy blisko położone obiekty. Odległość musi uwzględniać rzeczywistą odległość w sieci drogowej (długość drogi wyznaczonej np. algorytmem A-star). [zarezerwowane KR] | ||
+ | |||
+ | === 12. Wirtualny wyścig === | ||
+ | [Zajęte AK] | ||
+ | |||
+ | === 13. Animacja awatara === | ||
+ | [zarezerwowane AG] | ||
+ | |||
+ | <!-- | ||
+ | **Na razie nie mam propozycji tematów ** | ||
+ | |||
+ | Generalnie, nie chcę prowadzić tematów polegających na implementacji aplikacji webowej/ | ||
+ | |||
+ | Typowy zakres prac | ||
+ | * eksploracji danych/ | ||
+ | * algorytmy optymalizacji ciagłej (ale na platformie typu TensorFlow lub PyTorch) | ||
+ | * może to być implementacja systemu, który będzie miał jakiś inteligentny komponent albo będzie przydatne w tej dziedzinie - jak narzędzie do etykietowania | ||
+ | --> | ||
===== 2020 ===== | ===== 2020 ===== | ||
- | | + | |
- | | + | |
- | | + | |
- | | + | |
+ | -Analiza antyplagiatowa kodu :!: Zajęte | ||
==== 1. Map matching ==== | ==== 1. Map matching ==== | ||
Zarezerwowane jako implementacja w Pythonie? :?: | Zarezerwowane jako implementacja w Pythonie? :?: | ||
Line 44: | Line 169: | ||
To jest temat, który można rozszerzyć na kilka algorytmów. Wspólną cechą ma być: | To jest temat, który można rozszerzyć na kilka algorytmów. Wspólną cechą ma być: | ||
- | * wykorzystanie operacji biblioteki numpy. Mimo, że są funkcjami Pythona, sa zaimplementowane w C i działają wydajnie | + | * wykorzystanie operacji biblioteki |
* Zamiast wykonywac operacje na pojedynczych osobnikach (wektorach w R^n), maja być przeprowadzane operacje na całych macierzach (w których wiersz odpowiada osobnikowi) | * Zamiast wykonywac operacje na pojedynczych osobnikach (wektorach w R^n), maja być przeprowadzane operacje na całych macierzach (w których wiersz odpowiada osobnikowi) | ||
* uzycie do testów funkcji z konferencji CEC [[http:// | * uzycie do testów funkcji z konferencji CEC [[http:// | ||
Line 70: | Line 195: | ||
Inne do przedyskutowania..., | Inne do przedyskutowania..., | ||
- | ==== 3. Grupowanie grawitacyjne ==== | + | ==== 3. Grupowanie grawitacyjne |
+ | :!: Zajete | ||
Grupowanie (klasteryzacja) to proces łączenia danych w grupy. Przez dane rozumiane są tu wektory w R^n. Zazwyczaj oczekuje się, że grupy będą od siebie oddalone, natomiast dane należące do jednej grupy położone blisko siebie. Przy grupowaniu grawitacyjnym wykorzystuje się model sił grawitacji - blisko położone punkty przyciągają się mocniej i skupiają w grupy. | Grupowanie (klasteryzacja) to proces łączenia danych w grupy. Przez dane rozumiane są tu wektory w R^n. Zazwyczaj oczekuje się, że grupy będą od siebie oddalone, natomiast dane należące do jednej grupy położone blisko siebie. Przy grupowaniu grawitacyjnym wykorzystuje się model sił grawitacji - blisko położone punkty przyciągają się mocniej i skupiają w grupy. | ||
Celem pracy jest implementacja kilku znanych wersji algorytmu grupowania grawitacyjnego i przetestowanie ich działania. | Celem pracy jest implementacja kilku znanych wersji algorytmu grupowania grawitacyjnego i przetestowanie ich działania. | ||
- | Język | + | Platforma |
+ | |||
+ | |||
+ | |||
+ | ==== 4. Generacja i testy Negatywnych Baz Danych ==== | ||
+ | |||
+ | :!: Zajete | ||
+ | |||
+ | Negatywne Bazy Danych (NDB) przechowują w jawnej postaci negatywną informację. Można to przeanalizować na przykładzie łańcucha bitów 101. Negatywna reprezentacja to oczywiście wyliczenie innych wariacji: 001,010, itd. Stosując symbole wieloznaczne może to być również | ||
+ | < | ||
+ | Te dwie ostatnie specyfikacje są równoważne formule logicznej | ||
+ | |||
+ | $f=b_0\wedge \neg b_2 \lor \neg b_0$. | ||
+ | |||
+ | Znalezienie ciągu zdań (bitów), dla których formuła jest prawdziwa to zagadnienie | ||
+ | |||
+ | |||
+ | ==== 5. Analiza antyplagiatowa kodu ==== | ||
+ | :!: Zarezerwowany | ||
+ | |||
+ | Celem pracy jest implementacja systemu, który będzie umożliwiał przesłanie plików źródłowych w wybranym języku programowania przez zalogowanych użytkowników, | ||
===== 2019 ===== | ===== 2019 ===== |