Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
tematy_prac_inzynierskich [2019/12/23 03:23]
pszwed [Struktura pracy]
tematy_prac_inzynierskich [2020/06/28 03:07]
pszwed [4. Generacja i testy Negatywnych Baz Danych]
Line 1: Line 1:
-====== Struktura pracy ======+===== Struktura pracy =====
  
-[[struktura_pracy_inz|Struktura pracy]]+  *[[struktura_pracy_inz|Struktura pracy]] 
 + 
 +  *[[prace_inz_uwagi|Uwagi]] 
 + 
 +  *[[proces_dyplomowania|Proces dyplomowania]]
  
-:!: Uwagi... 
  
-  * W tekście pracy nie używamy czasu przyszłego (opisujemy to, co jest/istnieje lub to, co zostało zrobione) 
-  * Nie piszemy, że //chcemy przybliżyć// lub //ułatwić zrozumienie//. Czytelnikiem jest osoba oceniająca pracę, więc nie można sugerować, że czegoś może nie rozumieć 
-  * W miarę mozliwosci ilustrujemy tekst rysunkami. Nawet prostymi, typu przepływ danych od A do D poprzez B i C: A -> B -> C -> D.  
-  * Podczas obrony przewidziana jest trwająca około 7 min prezentacja, podczas której pokazuje się 8-12 slajdów. Prezentacja jest oceniana (25% oceny z obrony). Rysunki wybrane z pracy są tu dobrymi kandydatami na treść slajdów. 
-  * Prezentacja powinna obejmować: 
-      - Slad tytułowy 
-      - Cel pracy 
-      - Przedstawiennie problemu, motywacje 
-      - Może zawierać elementu przegladu literatury (ale krótko) 
-      - Opis prac własnych (zaprojektowano, zaimplementowano, przetestowano, rezultaty). Raczej rysunki, diagramy, niewielkie tabele, mało tekstu. 
-      - Podsumowanie  
-  * Zła prezentacja: 
-     * Ma 20 slajdów 
-     * W tym 12+ to przegląd literatury i przytoczenie znanych faktów i definicji, a 3 slady na prace własne 
-     * Dyplomant skupia się na szczegółach 
-     * Około 14 slajdu przewodniczący komisji przerywa i prosi o przejście do podsumowania  
 ====== Tematy prac inżynierskich ====== ====== Tematy prac inżynierskich ======
 +
 +===== 2020 =====
 +
 +  *Map matching
 +  *Algorytmy optymalizacji
 +  *Grupowanie grawitacyjne
 +  *Generacja i testy Negatywnych Baz Danych
 +==== 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 
 +  - [[https://www.postgresql.org/docs/9.2/plpgsql.html]] preferowane, łatwe w konfiguracji i wydajne
 +  - 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:
 +  - załaduj mapę oryginalną
 +  - podziel drogę na segmenty (od skrzyżowania do skrzyżowania)
 +  - dodaj tabele/struktury danych do przechowywania ścieżek GPS
 +  - dodaj tabele/struktury danych na graf przypisujący odczyty do punktów na odcinkach dróg
 +  - napisz procedurę, która dla nowego punktu: 
 +    - rozszerza graf o nowe możliwe wierzchołki //expansion//  
 +    - usuwa z grafu wierchołki, z których nie można kontynuować //contraction//
 +  - podprocedury powinny mieć warianty lub być sterowane parametrami
 +  - Testy:
 +    - jakościowe - czy ścieżki są odwzorowane poprawnie
 +    - 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. 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 === 
 +
 +Inne do przedyskutowania..., np [[https://troja.uksw.edu.pl/zasoby/SL2014-ZhangSanderson2009.pdf]]
 +
 +==== 3. Grupowanie grawitacyjne ====
 +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ć  [[https://scikit-learn.org/stable/modules/clustering.html|typowe przykłady 2D]] oraz kilkanaście zbiorów danych z repozytorium UCI. 
 +
 +Język implementacji Python.
 +
 +==== 4. Generacja i testy Negatywnych Baz Danych ====
 +
 +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ż 
 +<code>1*0, 0**</code> 
 +Te dwie ostatnie specyfikacje są równoważne formule logicznej $b_0\and\not b_2 \or \not b_0$. Znalezienie ciągu zdań (bitów) to zagadnienie SAT [[https://pl.wikipedia.org/wiki/Problem_spe%C5%82nialno%C5%9Bci]], które jest problemem o złożoności NP. 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. [[http://minisat.se/|Mini SAT]] i  [[https://www.princeton.edu/~chaff/zchaff.html|zChaff]]).
 +
 +
  
 ===== 2019 ===== ===== 2019 =====
tematy_prac_inzynierskich.txt · Last modified: 2024/06/17 14:54 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0