Generator Funkcji

Na tej stronie udostępniamy programistom wtyczkę do Eclipse, pozwalającą na wyewoluowanie (czyli na uzyskanie w sposób automatyczny) prostych funkcji posiadających pożądane właściwości (przechodzących przez zadane punkty). Źródła projektu znajdują się w serwisie GitHub.

Licencja Creative CommonsTen program jest licencjonowany na warunkach Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 3.0 Unported License.

Instalacja

Są dwie metody instalacji pluginu Function Generator:

  • Automatyczna (zalecana)
  • Ręczna

Automatyczna

Zalecanym sposobem instalacji jest posłużenie się Update Site projektu. Wklej podany link jako nową stronę w okienku Help/Install New Software, powienieś zobaczyć obrazek taki jak poniżej:

Eclipse update site installation

Ręczna

Wykonaj następujące kroki:

  1. Zainstaluj Eclipse, jeśli jeszcze tego nie zrobiłeś (Plug-in był testowany w Eclipse 3.6 i 3.7).
  2. Przekopiuj plik FunctionGenerator_x.x.x.jar do folderu plugins w katalogu instalacji Eclipse'a (x.x.x w nazwie pliku oznacza numer wersji plug-inu).
  3. Uruchom Eclipse.
Pliki do ręcznej instalacji (starsza wersja) znajdziesz tutaj:

FunctionGenerator_1.0.1.jar (~4.2MB)
FunctionGenerator_src_1.0.1.7z (~2.6MB)

Sposób użycia

Aby uruchomić plug-in kliknij na ikonkę FG na pasku narzędzi lub wybierz z głównego menu Function Generator -> Generate Function.

Eclipse main window

Powinno pojawić się główne okno programu. Dostępne opcje to, od góry:

  • Typ problemu – rzeczywisty (ciągły, zmiennoprzecinkowy) lub całkowity.
  • Ograniczenia – punkty ograniczeń dla regresji symbolicznej. Zwykle więcej punktów daje większą dokładność wyników, ale zwiększa czas obliczeń. Ograniczenia mogą zostać dodane ręcznie lub przy uzyciu kreatora skalowania liniowego. Aby uruchomić kreator, kliknij na przycisk "Linear scaling problem".
  • Opcje Load / Save pozwalają na zapisanie punktów ograniczeń w formacie CSV (Comma Separated Values).
  • Ustawienia podstawowe
    • Rozmiar populacji – liczba osobników w populacji. Zwykle więcej osobników lepiej pokrywa przestrzeń poszukiwań, ale zwiększa czas obliczeń i wymagania pamięciowe. Domyślnie: 25000.
    • Liczba pokoleń – liczba pokoleń dla algorytmu ewolucyjnego. Domyślnie: 50.
    • Maksymalna głębokość drzewa – w programowaniu genetycznym: maksymalna głębokość drzewa reprezentującego szukaną funkcję. Zbyt duże drzewa mogą prowadzić do zbytniego dostosowania się do danych (braku uogólnienia, aproksymacji zadanych punktów), a zbyt małe mogą nie być w stanie opisać funkcji, której szukasz. Domyślnie: 6.
  • Ustawienia podstawowe mogą zostać zapisane do, bądź wczytane z pliku w formacie "INI" dzięki przyciskom Save oraz Load.
  • Dostępne funkcje – lista dostępnych funkcji bazowych. Zbiory dostępnych funkcji w przypadku zmiennoprzecinkowym i ciągłym różnią się trochę od siebie. Funkcje Literal Value oraz Range Literals służą do zdefiniowania stałych dostępnych dla ewolucji. Jeżeli dla przykładu wiadomo, że w funkcji powinna się pojawić liczba 37, to warto ją dopisać jako właśnie literal value – ułatwi to zadania algorytmowi ewolucyjnemu.

Kiedy definicja problemu jest gotowa, kliknij przycisk Evolve, aby rozpocząć obliczenia.

Main plug-in window 

Wykorzystanie kreatora skalowania liniowego umożliwia zdefiniowanie ograniczeń na zmienną niezależną x0 oraz zmienną zależną y. Ograniczenia mogą być stałe lub zmienne (jeśli zmienne ograniczenie zostanie wybrane, do problemu zostaje dodana nowa zmienna – nowy wymiar). Interpretacja wprowadzonych danych jest wyświetlana w polu "Interpretation".

Linear scaling problem dialog 

Okno postępu pojawia się, kiedy obliczenia zostaną rozpoczęte. Każdy wpis logu programu zawiera funkcję oceny najlepszego osobnika w pokoleniu (0 – najlepsze dopasowanie, ∞ - najgorsze dopasowanie), wersja dostosowana wykorzystuje następującą zależność: adjusted = 1/(1+fitness), punkty trafień obliczane są jako liczba spełnionych ograniczeń.

Progress window 

W trakcie ewolucji pojawia się także okno z aktualną jakością rozwiązania w formacie graficznym (zakładka Quality in Time).

Chart window 

Dla funkcji jednowymiarowych (jedna zmienna X) jest także dostępny podgląd rozwiązania w formie graficznej (zakładka Visualization).

Chart window 2 

Okno wyników pojawia się, kiedy ewolucja się zakończy. Przykładowa wyewoluowana funkcja wynikowa została podkreślona na rysunku poniżej.

Result window 


Możliwe kierunki dalszego rozwoju:

  • Dodanie parametru epsilon w ewolucji, który w przypadku braku poprawny przez zadaną liczbę generacji o co najmniej taką wartość powodowałby zakończenie ewolucji.
  • Wykorzystanie Ephemeral Random Constant (ERC) w celu generowania literałów przez mechanizmy ewolucji zamiast ręcznego ich podawania.
  • Poprawienie usability (dodanie skrótów, lepsza integracja z Eclipsem, itp.).
Bazowa implementacja programu oraz tekst: Tomasz Pawlak
Usprawnienia programu: Piotr Jessa
Prowadzący: Maciej Komosiński