-
Notifications
You must be signed in to change notification settings - Fork 0
Macok/AAL
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Autor:
Maciej Poćwierz, nr albumu: 242736
Tytuł zadania:
AAL-2-LS - znajdowanie najtańszego połączenia pomiędzy miastami
Tryby działania programu:
- Tryb rozwiązywania pojedyńczej instancji problemu (domyślny):
--input - nazwa pliku wejściowego
--cityStart id miasta początkowego
--cityEnd id miasta docelowego
- Tryb wizualizacji (komenda visualize):
--input - nazwa pliku wejściowego
- Tryb generowania instancji problemu (komenda generate)
--output - nazwa pliku wyjściowego
--citiesCount - liczba miast (wymagany)
--roadsCount - liczba dróg (wymagany)
--alliancesCount - liczba grup miast partnerskich (wymagany)
--cityPriceMin - minimalna cena za wjazd do miasta
--cityPriceMax - maksymalna cena za wjazd do miasta
--roadPriceMin - minimalna cena za wjazd na drogę
--roadPriceMax - maksymalna cena za wjazd na drogę
--roadDurationMin - minimalny czas przejazdu drogą
--roadDurationMax - maksymalny czas przejazdu drogą
--costPerMinute - stały koszt związany z czasem przejazdu
- Tryb testu wydajności (komenda performance-test)
--dimensionMin - minimalna liczba wierzchołków w grafie
--dimensionMax - maksymalna liczba wierzchołków w grafie
--dimensionStep - krok co jaki zwiększany jest rozmiar problemu
--density - gęstość generowanych grafów
UWAGA: tryb testu wydajności wygeneruje grafy o rozmiarach od dimensionMin
do dimensionMax w krokach co dimensionStep, jednak pominie 10 pierwszych kroków
przy analizie wyników, aby dać maszynie JVM czas na zoptymalizowanie kodu bajtowego.
Należy zatem zadbać aby zawsze spełniony był warunek: (dimensionMax-dimensionMin)/dimensionStep > 10
Przykładowe wywołania:
UWAGA: Wymagane jest użycie Javy 8.
- Tryb rozwiązywania pojedyńczej instancji problemu:
java -jar aal.jar --input test.json --cityStart city1 --cityEnd city4
- Tryb generowania instancji problemu:
java -jar aal.jar generate --citiesCount 10 --roadsCount 30 --alliancesCount 3 --output out.json
-Tryb wizualizacji:
java -jar aal.jar visualize --input test.json
- Test wydajnościowy:
java -jar aal.jar performance-test --dimensionMin 100 --dimensionMax 600 --dimensionStep 10
Dane wejściowe / wyjściowe:
Dane we/wy przechowywane są w formacie JSON.
Pliki zawierają informacje na temat miast obecnych w instancji problemu, dróg pomiędzy nimi,
grupach miast partnerskich a także stałym koszcie związanym z czasem przejazdu.
Metoda rozwiązania:
Problem rozwiązywany jest za pomocą algorytmu Dijkstry.
Ponieważ graf reprezentujący sieć dróg jest w praktyce prawie zawsze grafem rzadkim, zdecydowano się na
implementację z użyciem kolejki priorytetowej (konkretnie kopca binarnego).
Podział na pakiety:
- graph - pakiet zawiera pliki źródłowe związane z reprezentacją problemu w postaci grafu.
- io - pakiet zawiera klasy służące do odczytu, zapisu, lub wizualizacji instancji problemu
- util - klasy zawierające funkcje pomocnicze
About
Cheapest route between cities using Scala and Dijkstra shortest path
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published