Program został napisany w języku Java. Pierwsze, nieudane próby implementacji dokonywane były przy pomocy biblioteki JGAP ([30]). Z uwagi na nieprzejrzysty kod źródłowy biblioteki i zagmatwaną strukturę wykonywania programu zarzucono dalsze prace z jej użyciem.
Drugim w kolejności i ostatecznym framework"iem był ECJ ([26]) w wersji 18. Posiada on wiele zalet:
Biblioteka ECJ nie posiada narzędzi do rozwiązywania problemów permutacyjnych. Jednak dzięki wbudowanej rozszerzalności tej biblioteki udało się je stworzyć.
Główny pakiet to pl.edu.agh.student.madudek. Zawiera on głównie klasy dziedziczące po klasach dostarczonych przez ECJ. Umożliwiają one korzystanie z ECJ używając permutacyjnego kodowania. Pozostałe dwa pakiety zawierają się w pakiecie głównym. Pakiet task dostarcza funkcji importujących instancje testowe, zaś pakiet testing zawiera klasy służące do przeprowadzania testów, agregacji danych i wizualizacji wyników.
Tablica A.1: Opis klas.
Pakiet | Nazwa klasy | Opis |
główny | ArrayUtils | Zestaw funkcji statycznych służących do manipulacji genomem. |
główny | ControlPolicy | Klasa zawiera polityki dynamicznego sterowania parametrami populacji. |
główny | DiversityCalculator | Oblicza różnorodność podpopulacji według miary LMRPP |
główny | DiversityStatistics | Klasa zbierająca dane z przebiegu algorytmu. |
główny | MinimizingSimpleFitness | Implementacja funkcji przystosowania, która lepiej ocenia chromosomy o niższej wartości funkcji celu. |
główny | MyInterPopExchange | Klasa odpowiedzialna za migracje. Jest to zmodyfikowana wersja ec.select.InterPopulationExchange z udostępnionym polem IPEInformation w celu umożliwienia wpływania na rozmiar migracji w czasie trwania programu. |
główny | PermutationIndividual | Implementacja osobnika, którego chromosom jest postaci wektora całkowitoliczbowego reprezentującego permutację miast. |
główny | PermutationCrossoverPipeline | Klasa umożliwiająca krzyżowanie osobników klasy Per-mutationlndMdual |
główny | PermutationMutationPipeline | Klasa umożliwiająca mutację osobników klasy Permuta-tionlndMdual |
główny | PermutationSpecies | Potrzebna, aby można było tworzyć podpopulacje złożone z osobników klasy PermutationlndMdual. Zawiera parametry i aktualny stan podpopulacji. |
task | TSPProblem | Stanowi definicję problemu, który ma być rozwiązywany przez algorytm. Zawiera pole klasy TSPTask. |
task | TaskDistanceCalculator | Oblicza odległości między miastami na podstawie danych pobranych z instancji testowej. |
task | TaskEvolutionState | Podklasa SimpleEvolutionState przystosowana do używanego algorytmu. |
task | TSPPoint | Zawiera współrzędne kartezjańskie miasta. |
task | TSPTask | Przetrzymuje w pamięci dane pobrane z instancji testowej z biblioteki TSPLib. |
task | TSPTasklmporter | Importuje dane z pliku i umieszcza je w obiekcie klasy TSPTask. |
testing | DataAnalyzer | Agreguje dane z plików stat, oblicza średnie wartości i wpisuje je do plików csv, aby ułatwić obróbkę danych. |
testing | GraphDrawer | Klasa odpowiedzialna za rysowanie wykresów i grafów. |
testing | Tester | Tester pobiera dane każdego modelu umieszczonego w folderze Testy/Models_params/ a następnie wykonuje określoną liczbę testów na każdej z instancji wymienionych w pliku Testy/instancje.txt. Wyniki zapisuje do pliku Testy/Output/out.stat |
Copyright © 2008-2010 EPrace oraz autorzy prac.