Tematy Projektów, ZTB
Warunki ogólne
Grupy projektowe maksymalnie 3 osobowe.
Ten sam temat może być realizowany przez więcej niż 1 grupę.
Opis tematów
1. Przetwarzanie grafów
Poniższy przykład w Prologu
-
-
slic.pl - predykaty realizujące przetwarzanie i wnioskowanie.
reprezentuje graf, którego struktura zbliżona jest do grafu:
Przedstawia on zależności w inteligentnej przestrzeni „obsługującej” stację benzynową.
Są to odpowiednio lampy (L), konfiguracje lamp (C), segmenty (S), obszary (A), oraz sensory (P,D,H,K).
Konkretne dane pochodzące od sensorów reprezentowane są jako etykiety (szczegóły na wykładzie/konsultacjach).
Celem projektu jest przetestowanie różnych technologii, umożliwiających przechowywanie i przetwarzanie w/w danych, pod kątem ich wydajności.
Jako rozwiązanie referencyjne przyjmuje się w/w kod w Prologu (ktorego dla większości poniższych projektów wcale nie trzba rozumieć
)
Aby uruchomić referencyjne rozwiązanie w Prologu należy:
-
-
w katalogu z w/w plikami uruchomić SWI Prolog
swipl -s n_gs_e.pl -g ex -t halt
najważniejszy jest czas realizacji testów podany w ostatniej linii.
Przykładowy rezultat uruchomienia w/w kodu powinien wyglądać następująco:
swipl -s n_gs_e.pl -g ex -t halt
Warning: /home/wojnicki/work/lighting/slic/slic.pl:22:
Singleton variables: [X]
Warning: /home/wojnicki/work/lighting/slic/slic.pl:27:
Singleton variables: [X]
% slic compiled 0.00 sec, 2,176 bytes
% 100_gs_e.pl compiled 0.14 sec, 1,184,208 bytes
% /home/wojnicki/work/lighting/slic/n_gs_e.pl compiled 0.14 sec, 1,196,692 bytes
0
1
2
3
4
5
6
7
8
9
% 194,667 inferences, 4.471 CPU in 4.525 seconds (99% CPU, 43541 Lips)
Uruchmione jest 10 kroków transformacji grafowych realizujących 10 zdarzeń tj. odpowiedzi będących odpowiednimi etykietami na nadchodzące dane sensoryczne.
Rezultaty w/w ekspertymentów umieszczone są jako pliki tekstowe 0.txt, 1.txt,…, 9.txt w results0-9.tar.bz2, każdy przedstawia stan grafu z uwzglednieniem wierzchołków s oraz c po przeprowadzeniu danego ekspertymentu (0.txt po przeprowadzeniu ekspertymentu 0, 1.txt po przeprowadzeniu 1 itd.).
1.1 Nierelacyjne
Wybierz 2 bazy nierelacyjne (nie grafowe!) na podstawie kryterium możliwości skutecznego przetwarzania grafów.
Zaimplementuj w/w graf i jego przetwarzanie w wybranych bazach.
Przetestuj wydajność. Podaj wyniki porównawcze programu w Prologu na używanej platformie.
1.2 Grafowe
Wybierz 2 bazy grafowe.
Zaimplementuj w/w graf i jego przetwarzanie w wybranych bazach.
Przetestuj wydajność. Podaj wyniki porównawcze programu w Prologu na używanej platformie.
1.3 Erlang/Mnesia
Zaimplementuj w/w graf i jego przetwarzanie korzystające z Erlang/OTP oraz np. Mnesia.
Przetestuj wydajność. Podaj wyniki porównawcze programu w Prologu na używanej platformie.
1.4 Prolog/CLP
Zweryfikuj możliwość zaimplementowanie przetwarzania w/w grafu z wykorzystaniem CLP (Constraint Logic Programming).
Przetestuj wydajność. Podaj wyniki porównawcze programu w Prologu na używanej platformie.
1.5 Relacyjne
Dla baz: PostgreSQL i MySQL zaimplementuj w/w graf i jego przetwarzanie.
Przetestuj wydajność. Podaj wyniki porównawcze programu w Prologu na używanej platformie.
2. Mapy dynamiczne
2.1 skrzyżowania
Należy napisać kod SQL dodający do mapy statycznej informacje o 15 skrzyżowaniach w Krakowie.
Dodać informacje o instancjach parametrów monitorowania (źródła danych sensorycznych) na w/w skrzyżowaniach tj.
długość kolejki przed skrzyżowaniem dla każdego pasa,
prędkość za skrzyżowaniem, wspólna dla wszystkich pasów.
Uzupełnić dane sensoryczne: dla każdej instancji parametru monitorowania dodać 4 losowe wartości.
2.2 wydajność
Wygenerować losowo informacje o skrzyżowaniach w mapie statycznej, ilość powinna być porównywalna z ilości skrzyżowań w Krakowie.
Do w/w skrzyżowań dodać losowo informacje o instancjach parametrów monitorowania
długość kolejki przed skrzyżowaniem dla każdego pasa,
prędkość za skrzyżowaniem, wspólna dla wszystkich pasów.
Określić i przetestować scenariusze dostępu do tak wygenerowanych danych, biorąc pod uwagę rozdzielność Mapy Statycznej i Mapy Dynamicznej.
2.3 wskazówki nawigacyjne
Dana jest mapa miasta (lub innego obszaru) zaimportowana z OpenStreetMap (przy pomocy narzędzia Osmosis). Na mapie tej wyznaczono trasę przejazdu w postaci sekwencji kolejno mijanych węzłów (nodes
).
Celem projektu jest:
3. Wyznaczanie trasy
3.1 pgRouting
Celem projektu jest przeprowadzenie badań wydajności wyszukiwania trasy przy pomocy różnych algorytmów pakietu pgRouting w dużym grafie.
Zadania:
przygotowanie skryptu pobrania i importu wybranego fragmentu mapy do bazy PostgreSQL/PostGIS,
integracja bazy z pgRouting,
stworzenie prostej aplikacji do wyszukiwania trasy i prezentacji wyników,
przeprowadzenie testów wydajności dla różnych algorytmów i różnych funkcji heurystycznych, w tym ocena jakości rozwiązania przy heurystykach niedopuszczalnych.
3.2 neo4j Routing
Celem projektu jest przeprowadzenie badań wydajności wyszukiwania trasy przy pomocy różnych algorytmów bazy grafowej Neo4j w dużym grafie.
Zadania:
przygotowanie skryptu pobrania i importu wybranego fragmentu mapy do bazy Neo4j,
stworzenie prostej aplikacji do wyszukiwania trasy i prezentacji wyników,
przeprowadzenie testów wydajności dla różnych algorytmów i różnych funkcji heurystycznych, w tym ocena jakości rozwiązania przy heurystykach niedopuszczalnych.