Table of Contents

Struktura pracy

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:

  1. webscraping danych o publikacjach pracowników AGH (być może z pewnymi ograniczeniami)
  2. zapis do bazy danych
  3. budowa grafów powiązań pomiędzy pracownikami (wspólne publikacje, takie same słowa kluczowe publikacji)
  4. 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 Ray 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

[D.K. - rezerwacja wersji z Gurobi]

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, niekoniecznie w danym momencie ale za kilka godzin.
  • Liczba przemieszczanych w danym momencie samochodów jest ograniczona (np. m=10 to liczba pracowników zajmujących się przemieszczaniem)
  • lub opracowanie i implementacja własnago algorytmu heurystycznego

[W zasadzie może to być kilka prac, gurobi vs. własna implementacja, różne algorytmy, implemetacja na GPU - CUDA lub OpenCL, itd.]

4. Propagacja informacji w dużym grafie (= grafie sieci drogowej)

[Zarezerwowane P.G. 02.07.2023]

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/pokolorowane odcinki dróg). Możliwa implementacja na GPU (CUDA lub OpenCL).

5. Zapytania w języku naturalnym do bazy danych (geograficznych)

[Zarezerwowane A.M.]

Interesuje nas zbiór danych przechowywanych w bazie OSM (https://www.openstreetmap.org/) dla Polski.

Zakładamy pewną skończoną liczbę typów zapytań dotyczących różnych obiektów (około 20-30) , np.:

  • “miejscowość poniżej 10000 mieszkańców położone w pobliżu jeziora”
  • “parkingi w Krakowie w dzielnicy Krowodrza”

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://spacy.io/ a zwłąszcza https://spacy.io/api/matcher
  • 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)

6. Gra połączona z agentową symulacją świata

[Rezerwacja J.G]

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/mobilnej z użyciem typowego stosu technologicznego, do której dorobiona jest specyfikacja w stylu Analizy i Modelowania Oprogramowania. Na ogół bardzo trudno taką aplikację wypełnić danymi i później porządnie przetestować.

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. [jeszcze jeden temat zarezerwowany … AZ]

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. [zajęte MK]

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, jazda samochodem, rowerem). Następnie przeprowadzić ekstrakcję cech (widmo częstotliwości, zero-crossing rate, itp) i przeprowadzić klasyfikację. [zarezerwowane]

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://dot.ca.gov/programs/traffic-operations/mpr/pems-source

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, itp.) Dla każdej kategorii należy wyekstrahować około 100 kilkunastosekundowych przykładów z różnych źródeł (filmy, podcasty). Następnie korzystając z biblioteki librosa wyekstrahować cechy i przeprowadzić klasyfikację. Patrz http://home.agh.edu.pl/~pszwed/wiki/doku.php?id=med:start [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). [zarezerwowane SK]

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]

2020

  1. Map matching :!: Zajęte
  2. Algorytmy optymalizacji (możliwych jest kilka tematów) :!: Jeden temat zajęty
  3. Grupowanie grawitacyjne :!: Zajęte
  4. Generacja i testy Negatywnych Baz Danych :!: Zajęte
  5. Analiza antyplagiatowa kodu :!: Zajęte

1. Map matching

Zarezerwowane jako implementacja w Pythonie? :?:

(a) Implementacja (znanego) algorytmu rzutowania sekwencji odczytów GPS na mapę w postaci procedur składowanych dla PostgreSQL/PostGIS, na podsatwie https://www.researchgate.net/publication/263855222_SLIDES_An_Incremental_Map-Matching_Algorithm_Based_on_Hidden_Markov_Model

Procedury mogą być zaimplementowane w

  1. https://www.postgresql.org/docs/9.2/plpgsql.html preferowane, łatwe w konfiguracji i wydajne
  2. Java lub Pythonie (trudniejsze w konfiguracji i dyskusyjne wydajnościowo)

(b) Alternatywnie, dla mapy przechowywanej w pamięci w językach Java lub Python, ale konieczna implementacja funkcjonalności, które są w PostGIS zaimplementowane (indeksy przestrzene, obliczanie odleglości) oraz wstępne prztewarzanie danych mapy.

Zakres:

  1. załaduj mapę oryginalną
  2. podziel drogę na segmenty (od skrzyżowania do skrzyżowania)
  3. dodaj tabele/struktury danych do przechowywania ścieżek GPS
  4. dodaj tabele/struktury danych na graf przypisujący odczyty do punktów na odcinkach dróg
  5. napisz procedurę, która dla nowego punktu:
    1. rozszerza graf o nowe możliwe wierzchołki expansion
    2. usuwa z grafu wierchołki, z których nie można kontynuować contraction
  6. podprocedury powinny mieć warianty lub być sterowane parametrami
  7. Testy:
    1. jakościowe - czy ścieżki są odwzorowane poprawnie
    2. wydajnościowe - ile zapytań można przetwarzać w jednostce czasu, ewentualnie grupowanie punktów jednej ściezki

2. Algorytmy optymalizacji ciagłej z użyciem numpy

To jest temat, który można rozszerzyć na kilka algorytmów. Wspólną cechą ma być:

  • wykorzystanie operacji biblioteki numpy lub tensorflow. Mimo, że są funkcjami Pythona, sa zaimplementowane w C i działają wydajnie
  • 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://www.tflsgo.org/special_sessions/cec2019. Konieczna jest ich reimplementacja. Funkcje CEC wykorzystują kilkanascie funkcji bazowych, które następnie są zniekształcane przez przesuniecia i rotacje. W przypadku kilku prac można zestw funkcji opracować wspólnie.
  • Z reguły algorytmy mają jakieś parametry. Dla danej funkcji należy przeprowadzić dobór parametrów przez losowe lub systematyczne przeszukanie przestrzeni parametrów.
  • Wybór macierzowej reprezentacji może powodować pewne niewielkie odstepstwa od bazowego algorytmu mające na celu przyspieszenie obliczeń
  • Działanie algorytmu należy przetestować, np. wyznaczajac najlepszą wartośc funkcji 10 razy, podać wartości srednie, odchylenia standardowe, itp

2.a PSO

Implementacja algorytmu Particle Swarm Optimization. Należy zaimplementować rózne topologie:

  • globalną
  • sąsiedzi
  • losowowanie grafu

2.b Algorytm mrówkowy

Implementacja algorytmu mrówkowego, np. wykorzytsujac idee z https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4037618/

2.c Algorytm pszczeli

Istnieje kilka wersji…

2.d

3. Grupowanie grawitacyjne (CUDA)

:!: 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. Celem pracy jest implementacja kilku znanych wersji algorytmu grupowania grawitacyjnego i przetestowanie ich działania. Testy mają obejmować typowe przykłady 2D oraz kilkanaście zbiorów danych z repozytorium UCI.

Platforma implementacji CUDA (NVidia). Ewentulnie porównanie z czystym C.

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ż

1*0, 0**

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 SAT, które jest problemem o złożoności NP. Jest to problem łatwy, dla 1-20 bitów (zastosowanie brute force), ale dla 64 trudny. Celem pracy jest implementacja algorytmów generacji NDB oraz przeprowadzenie testów, czy możliwe jest złamanie wygenerowanych NDB z użyciem wybranych solwerów SAT (np. Mini SAT i zChaff).

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, a następnie określał stopień podobieństwa kodu. Podstawowym narzędziem do wykorzystania jest znany algorytm określania najdłuższego wspólnego podciągu. Można zajrzeć tu str 27. Podobieństwo powinno być określane: na poziomie znaków oraz na poziomie symboli. Szczególnie interesująca jest modyfikacja algorytmu tak, aby uwzględnić substytucję symboli, tzn. jeżeli napotkany zostanie identyfikator x12 oraz odpowiadający mu identyfikator y10, wówczas obliczony zostanie także stopień dopasowania po zamianie x12 na y10.

2019

Obecnie zarezerwowanych jest 12/12

:!: Nie podejmuję się prowadzenia kolejnych prac ze wzgledu na osiągnięcie limitu :!:

1. Wizualizacja danych geograficznych

:!: Rezerwacja

Przegląd oraz dobór bibliotek, pakietów do wizualizacji. Główny cel - kolorowanie odcinków dróg na podstawie danych w celu pokazania dodatkowych własności, jak natężenie ruchu lub prędkość. Źródło: dane OSM (nie Google Maps) z lokalnej bazy lub zewnętrznego serwera. Dane do wizualizacji z plików lub bazy danych. Java lub Python .

2. Narzędzia WebScraping

:!: Rezerwacja

Przegląd i porównanie narzędzi WebScraping dla kilku przykładowych zadań, np. zbieranie danych z serwisu nieruchomości lub samochodów, zbieranie publikacji prasowych na popularnych portalach, produktów z Allegro, itp. Zakres zadań do uzgodnienia.

3. Map matching

(a) Implementacja (znanego) algorytmu rzutowania sekwencji odczytów GPS na mapę w postaci procedur składowanych dla PostgreSQL/PostGIS, na podsatwie https://www.researchgate.net/publication/263855222_SLIDES_An_Incremental_Map-Matching_Algorithm_Based_on_Hidden_Markov_Model

Procedury mogą być zaimplementowane w

  1. https://www.postgresql.org/docs/9.2/plpgsql.html preferowane, łatwe w konfiguracji i wydajne
  2. Java lub Pythonie (trudniejsze w konfiguracji i dyskusyjne wydajnościowo)

(b) Alternatywnie, dla mapy przechowywanej w pamięci w językach Java lub Python, ale konieczna implementacja funkcjonalności, które są w PostGIS zaimplementowane (indeksy przestrzene, obliczanie odleglości) oraz wstępne prztewarzanie danych mapy.

Zakres:

  1. załaduj mapę oryginalną
  2. podziel drogę na segmenty (od skrzyżowania do skrzyżowania)
  3. dodaj tabele/struktury danych do przechowywania ścieżek GPS
  4. dodaj tabele/struktury danych na graf przypisujący odczyty do punktów na odcinkach dróg
  5. napisz procedurę, która dla nowego punktu:
    1. rozszerza graf o nowe możliwe wierzchołki expansion
    2. usuwa z grafu wierchołki, z których nie można kontynuować contraction
  6. podprocedury powinny mieć warianty lub być sterowane parametrami
  7. Testy:
    1. jakościowe - czy ścieżki są odwzorowane poprawnie
    2. wydajnościowe - ile zapytań można przetwarzać w jednostce czasu, ewentualnie grupowanie punktów jednej ściezki

4. Wykorzystannie reguł rozmytych do rekomendacji produktów

:!: Rezerwacja Z użyciem zbioru danych MovieLens. Implementacja Python lub Java. Celem jest wyznaczenie zbioru reguł rozmytych (a zwłaszcza parametrów funkcji przynależności o założonym kształcie) https://en.wikipedia.org/wiki/Fuzzy_rule Jeżeli X lubi kryminały i komedie, Y lubi kryminały i Y ocenił wysoko film F, to rekomenduj F dla X.

5. Aplikacja webowa do edycji dokumentacji projektowej

:!: Rezerwacja

Projekt w stylu http://home.agh.edu.pl/~pszwed/wiki/doku.php?id=amo:projekt Konfigurowalna struktura dokumentu: http://home.agh.edu.pl/~pszwed/wiki/doku.php?id=amo:rup_tailored Użycie PlantUML do generacji rysunków: http://plantuml.com/starting

6. Optymalizacja na GPU

Implementacja popularnych algorytmów optymalizacji ciągłej na GPU: CUDA lub OpenCL. Takich prac może być wiecej…

W ramach jednej pracy implementacja jednego z wybranych algorytmów i przeprowadzenie testów dla różnych parametrów z uzyciem funkcji opublikowanych np. na CEC 2015.

Typowy zakres:

  1. opis algorytmu (np. mrówki, pszczoły, Differential Evolution, Backtracking, elektromagnetyczny, świetliki, karaluchy, itp)
  2. opis platfromy (CUDA/OpenCL) i bibliotek dedykowanych dla konkretnego języka programowania C/C++/Java/Python lub użycie wysokopoziomowej biblioteki, np. https://deeplearning4j.org/docs/latest/nd4j-overview z akceleracją GPU
  3. opis implmentacji (wraz z parametrami i wariantami). W zależności od platformy i dostępnego sprzetu GPU można wykorzystywać wątki lokalne wewnątrz bloku
  4. wielokrotne testy dla okolo 15-20 funkcji z benchmarku dla różnych wymiarów i ich wyniki dla różnych parametrów.
  5. porównanie czasów wykonania
  6. tabele ilustrujące wyniki (procentowa odległość od rozwiązania optymalnego, wartości średnie, mediana, min/max, odchylenie standardowe)
  7. wykresy - wartość funckji celu dla kolejnych iteracji
  8. dyskusja wyników

Zarezerwowane/zgłoszone/dyskutowane

  1. Elixir
  2. WebAssembly
  3. Rekomendacja/ocena utworów muzycznych
  4. Przepisy (zamienione na web crawling + walidację)
  5. Smart Mirror

2018

  1. Analiza nawierzchni tras rowerowych. Aplikacja dla systemu Android. Zbieranie danych GPS oraz odczytów czujników GPS. Etykietowanie głosowe. Głównym celem jest zebranie danych oraz przetestowanie możliwości rozpoznawania stanu nawierzchni. Dane zbierane w pamięci urządzenia + możliwość przekazywania na serwer (:!: zarezerwowane)
  2. Opcjonalnie (osobny temat) : backend + wizualizacja ścieżek rowerowych na mapie. Możliwość przetwarzania danych pomiarowych online (mikroserwis)
  3. Edytor/aplikacja webowa do zbierania wymagań dla projektów informatycznych. Możliwość wprowadzania: słownika z definicjami danych (klas), aktorów, opisów przypadków użycia. Cel zbieranie wymagań i identyfikacja brakujących wymagań przez porównanie z innymi tego typu projektami. (:!: zarezerwowane)
  4. Aplikacja webowa umożliwiające grupie użytkowników etykietowanie danych (fragmentów tekstów /wpisów z Twittera/adresów internetowych, obrazów?). W różnych zadaniach eksploracji danych konieczna jest manualna ocena danych (np. 100-5000 elementów). Te dane to tzw. ground truth. Następnie na tej podstawie algorytmy uczące budują model pozwalający na predykcję. Różne tryby etykietowania: przydział jednej etykiety ze zbioru, przydział wielu etykiet ze zbioru. Jeden użytkownik lub kilku użytkowników (crowdsourcing).
  5. Symulacja ruchu drogowego w sieci autostrad oraz dobór parametrów modelu na podstawie danych PEMS (:!: zarezerwowane)

2016

Ocena stanu nawierzchni dróg na podstawie danych z czujników urządzenia mobilnego

Evaluation of road surface quality based on sensor data of a mobile device

Celem pracy jest projekt i implementacja aplikacji mobilnej dla systemu Android, która będzie umożliwiała równoczesne zbieranie danych z czujnika GPS oraz akcelerometru wbudowanego w urządzenie mobilne. Następnie dane te mają posłużyć do określenia stanu nawierzchni dróg na podstawie zarejestrowanych wskazań akcelerometru i przypisanie ich do odcinków dróg. Oczekuje się, że w ramach pracy zostaną zebrane surowe dane zarejestrowane w różnych warunkach (typy nawierzchni, różne prędkości pojazdu, ewentualnie różne pojazdy). Opcjonalnie, dane te mogą zostać przetworzone po stronie urządzenia mobilnego. Aplikacja powinna również zapewniać funkcje pozwalające na dodawanie adnotacji przez operatora oraz łatwe przenoszenie danych.

2015

Porównanie narzędzi przechowywania danych w postaci relacyjnej i formacie RDF

:!: Zarezerwowane

RDF to format reprezentacji danych w postaci trójek (subject - predicate - object). Na przykład osoba może być reprezentowana jako (id,'imie','Jan'), (id,'nazwisko','Kowalski'). Jest to format wystarczająco ogólny do reprezentacji różnych powiązań między danymi oraz ich atrybutów.

Celem pracy jest przeprowadzenie testów dotyczących efektywności operacji na BD (zapis, odczyt) indywidualnych rekordów, dużych grup danych dla reprezentacji relacyjnej oraz RDF.

Edytor języka opisu architektury hurtowni danych

:!: Zarezerwowane

Elementami języka są: magazyny danych, procesy, dane, warstwy, agenci, elementy infrastruktury oraz modele. Mogą być one połączone odpowiednimi relacjami, a także mogą być im nadane własności.

Celem pracy jest implementacja edytora z wykorzystaniem platformy Eclipse/EMF Więcej informacji: https://www.researchgate.net/publication/277476747_SLIDES_Proposal_of_a_New_Data_Warehouse_Architecture_Reference_Model

https://www.researchgate.net/publication/277476612_SLIDES._DWARM_An_Ontology_of_Data_Warehouse_Architecture_Reference_Model

Symulator zużycia energii wykorzystujący modele sieci Petriego

Celem pracy jest opracowanie modeli zachowania użytkowników, urządzeń oraz środowiska w postaci sieci Petriego, przeprowadzenie symulacji oraz zebranie rezultatów w bazie danych. Wykorzystany zostanie pakiet Renew http://www.rennew.de (sieci Petriego pozwalające na integrację z językiem Java). Możliwe jest wewnątrz sieci tworzenie obiektów, wywoływanie metod, itp.

Proste przykłady są dostępne także tu: http://home.agh.edu.pl/~pszwed/wiki/doku.php?id=scr:laboratoria

Ocena niebezpieczeństw w ruchu drogowym na podstawie danych mapy

:!: Zarezerwowane

Celem pracy jest zbudowanie systemu umożliwiającego wnioskowanie o potencjalnych niebezpieczeństawach dla odcinków dróg na podstawie infromacji zawartej w mapach. W szczególności wynik wnioskowania może posłużyć do ustalenia ograniczeń prędkości.

Model ma być zapisywany w postaci reguł (rozmytych) postaci (na przykład): JEŚLI wpobliżu(odcinek,szkoła) TO niebezpieczeńtwo(odcinek, duże) JEŚLI nalezydo(odcinek,droga) i kręta(droga) TO niebezpieczeńtwo(odcinek, średnie)

Ostateczny wynik ma być ustalany w wyniku agregacji wyników reguł. Źródłem map będzie OSM (Open Street Map).

Praca może być realizowana przez dwie osoby z logicznym podziałem:

1) Obsługa, wczytywanie map OSM + implementacja zbioru predykatów (wpobliżu, kręta, zabudowania, itd.)

2) System wnioskowania i agregacji rezultatów oraz wizualizacja wyników (OpenLayers)

Automatyczna anonimizacja tekstów

:!: zarezerwowane

Celem pracy jest implementacja systemu, który będzie przeprowadzał anonimizację dokumentów tekstowych - czyli zastępował nazwiska osób, nazwy firm, miejscowości symbolami zastępczymi (np.. inicjałami). Celem jest automatyzacja procesu anonimizacji orzeczeń sądowych, przykłady manualnych rezultatów można znaleźć tu: http://orzeczenia.nsa.gov.pl/cbo/query.

System powinien posługiwać się słownikami (nazwisk, miejscowości) oraz pozwalać na zdefiniowanie reguł anonimizacji. Wynikiem przetwarzania powinien być dokument XML zawierający zarówno oryginalną treść, jak i wskazanie anonimizowanych treści. Należy przewidzieć także jego wizualizację (np. z wykorzystaniem XSLT).

2014

Na razie szkic…

Temat 2014-1 :!: Zajęte (Michał Ślusarczyk)

Autentykacja użytkownika na podstawie charakterystyk czasowych uderzeń w klawisze (np. na wirtualnej klawiaturze Android). Różne tryby: jedno hasło lub uczenie dwójek i trójek znaków i prośba o wpisanie tekstu (captcha).

Należy jednak zebrać dane od około 20 użytkowników!

Temat 2014-2 :!: Zajęty (Robert Przystasz)

Rekomendacja brakujących wymagań dla projektów informatycznych. W ramach pracy należy:

  • zebrać informacje o funkcjach i przetwarzanych danych dla systemów z różnych dziedzin (np analizując 50-100 stron producentów z opisem aplikacji).
  • ewentualnie manualanie dodać typowe wymagania (administracja, logowanie, itp)
  • napisać aplikację webową, która po wprowadzeniu informacji o projekcie w języku angielskim (nazwy przypadków użycia, narracja, słownik z nazwami klas) określi prawdopodobną dziedzinę projektu i zarekomenduje brakujące wymagania.

Wyłącznie Java. Algorytm wyznaczenie rekomendacji musi być łatwy do wymiany (raczej z wykorzystaniem istniejącej biblioteki).

Temat 2014-3

Zajęty :!:

Symulacja komunikujących się pojazdów (http://www.its.dot.gov/connected_vehicle/connected_vehicle.htm). Nowy protokół WiFi pozwala na dynamiczne budowanie połączeń sieciowych pomiędzy pojazdami w ruchu. Samochody przemieszczające się w sieci drogowej budują grafy połączeń i przekazują informacje (np. o jadącej karetce, wypadkach, korkach, utrudnieniach).

Praca obejmuje:

  • symulację ruchu po drogach (fragment mapy z OSM)
  • symulację zdarzeń i przepływu informacji

Należy przewidzieć możliwość zatrzymania symulacji i wizualizacji grafów.

Platforma Java.

Temat 2014-4

:!: Zajety (Paweł Musiał)

Analiza i zastosowania algorytmów typu Pergel. Pergel to opublikowany około 4 lata temu przez Google model obliczeniowy służący do działań na dużych rozprosoznych grafach (np. obliczania PageRank).

https://wiki.engr.illinois.edu/download/attachments/188588798/pregel.pdf?version=1

W zależności od predyspozycji - praca może być bardziej przeglądowa (literatura + uruchomione przykłady dla kilku dostępnych podobnych pakietów) lub próba własnej implementacji uproszczonej lokalnej wersji modelu dla realizacji konkretnego zadania. Ewentualnie dwie tego typu prace.

Temat 2014-5 Edytor relacji występujących w wypowiedziach.

:!: Zajęte (Adrian Gwoździewicz)

Celem pracy jest zbudowanie aplikacji webowej (np. z wykorzystaniem JSF) pozwalającej na zapis w relacyjnych strukturach danych wprowadzonych przez użytkownika opisów wypowiedzi. Inne funkcje to wyszukiwanie autorów, terminów, itp. Praca obejmuje analizę i specyfikację, projekt i implementację.

Model wypowiedzi (przykładowy):

proposition:
   statement
   [statement]
   
statement:
    claim(Author,Source,proposition) | 
    agree(Author,proposition) | 
    disagree(Author,proposition) | 
    agree_a(Author,Author) | 
    disagree_a(Author,Author) | 
    equivalent(proposition,proposition,Author,Source) |
    thesis |
    definition

proposition to złozone stwierdzenie składające się z prostych zdań statement. Ich przykładowe typy to claim, agree, itd. Każdemu zdefiniowanemu typowi będzie odpowiadała tabela w bazie danych. Kluczowym problemem jest opracowanie edytora, który np. będzie rozwijał dynamicznie drzewo…

Temat 2014-6 Nowoczesne serwisy internetowe oparte o technologię WebSocket

:!: Zajęte (Konrad Seweryn)

2013

:!: Ze względu na przekroczenie limitu prac dyplomowych nie mogę być promotorem kolejnych prac inżynierskich.

Implementacja repozytorium wideo w oparciu o rozproszony system plików CrOS FS

CrOS jest planowanym rozproszonym systemem operacyjnym. Ma on modularną budowę; poszczególne moduły komunikują się przez interfejs usług sieciowych. Potencjalnie,oznacza to możliwość integracji komponentów zaimplementowanych na różnych platformach.

Obecnie zrealizowane są na platformie Java/Glassfish (w ramach prac magisterskich)

  • rozproszony system plików CrOS FS
  • moduł wykonania procesów (wątki w języku Java)
  • kolejki komunikatów

Praca ma stanowić kontynuację pracy magisterskiej. W ramach pracy magisterskiej zostały zaimplmentowane i przetestowane trzy architektury systemu pozwalajacego na przesyłanie plików składających się bloków danych. Bloki mogą być redundantne i mogą być umieszczone na różnych serwerach. Komunikacja odbywa się przez usługi sieciowe.

Celem pracy jest implementacja klienta systemu, który umożliwiał będzie przesyłanie na serwer i pobieranie dużych plików(np.: filmów)

Optymalizacja zużycia energii mobilnych czujników GPS

:?: ZAREZERWOWANE :?:

Mobilny czujnik GPS przesyła informacje o położeniu pojazdów do centralnego systemu. Jednakże okresowy transfer pojedynczych danych, np.: co 5 sekund jest zbyt kosztowny:

  • zużywa energię
  • generuje koszty (opłaty za komunikację)

Bardziej opłacalne jest przesłanie paczki danych. Problemem jest jednak kiedy i jaką podjąć decyzję (wysłać mniej danych, kiedy jest dobry zasięg i zużyć energię, czy czekać na zgromadzenie paczki danych ryzykując, że przy słabszym poziomie sygnału pojawią błędy).

Celem pracy jest

  1. Implementacja aplikacji mobilnej zbierającej dane o położniu pojazdów
  2. Analiza danych i przeprowadzenie optymalizacji mającej na celu ustalenie polityki, czyli wskazania jaką decyzję należy podjąć danego stanu. Dalsze informacje przekażę bezpośrednio.

Symulacja i optymalizacja ruchu na skrzyżowaniu z wykorzystaniem logiki rozmytej

:!: ZAJĘTE :!:

Koncepcyjnie, praca ma być kontynuacją udanej pracy inżynierskiej sprzed paru lat: http://zibiteac.ayz.pl/zakopane-aleje-3-go-maja-dolne.html Celem jest symulacyjne porównanie ruchu na zamodelowanym (tym samym) skrzyżowaniu przy

  • stałych fazach świateł oraz
  • zaimplementowanym algorytmem optymalizacji wykorzystującym reguły rozmyte.

Reguły mają przykładową postać

JEŻELI ruch na kierunku A jest MAŁY, a na kierunku B jest jest DUŻY, TO faza A jest krótka 
JEŻELI ruch na kierunku A jest MAŁY, a na kierunku B jest jest MAŁY, TO faza A ma średnią długość 

W wyniku wnioskowania następuje “głosowanie” i podejmowana decyzja o wartości zmiennej wyjściowej poprzez agregację głosów. Reguły rozmyte są bardzo rozpowszechnione, efektywne i proste w implementacji. Często są na stałe wbudowane w urządzenia elektroniczne.

Metryki dla architektur oprogramowania

:!: ZAJĘTE :!:

Celem pracy jest implementacja wtyczki do programu Archi mającej na celu obliczenie zbioru około 20-25 metryk mających na celu ocenę jakości architektury oprogramowania. Archi jest edytorem pozwalającym na tworzenie modeli w języku opisu architektur ArchiMate.

Zasada działania - przeglądany jest pewien graf opisujący model architektury i wyznaczane są dość proste w implementacji metryki grafowe(na podstawie literatury). Dodatkowo powinny być obliczone i zilustrowane wpływy metryk na tzw. atrybuty jakości (złożoność: mnożenie macierz x wektor).

Wtyczka jest napoczęta, obliczone są dwie przykładowe metryki.

Część literaturowa obejmowała będzie

  • język ArchiMate
  • modele referencyjne
  • metryki
tematy_prac_inzynierskich.txt · Last modified: 2023/07/13 00:59 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0