www.eprace.edu.pl » algorytmy-genetyczne » A. Implementacja

A. Implementacja

A.l. Sprzęt użyty w testach

  • Procesor: Intel Core2 Duo T7500 2.2 GHz.

  • Pamięć operacyjna: 2 GB RAM.

  • System operacyjny: Linux (Ubuntu 8.04).

  • Maszyna Wirtualna Javy: 1.6.0_07.

    A.2. Język programowania

    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:

  • Klarowna struktura programu pozwala na łatwe śledzenie jego przebiegu.

  • System plików z parametrami (.params) oddziela konfigurację algorytmu od kodu programu.

  • Istnieją spore możliwości rozszerzania framework"u o własne podklasy.

  • Wraz z kodem źródłowym zawarto kilka przykładowych aplikacji wraz z plikami konfiguracyjnymi.

  • Lista dyskusyjna dotycząca ECJ zawiera wiele cennych informacji. W liście aktywnie uczestniczą twórcy biblioteki służąc pomocą.

    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ć.

    A.3. Opis klas

    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




    komentarze

  • Copyright © 2008-2010 EPrace oraz autorzy prac.