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

Ściąganie

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

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

Instalacja

Aby zainstalować plug-in do Eclipsa, wykonaj następujące kroki:

  1. Zainstaluj Eclipse, jeśli jeszcze tego nie zrobiłeś (Plug-in był testowany w Eclipse 3.6, inne wersje nie są oficjalnie wspierane).
  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.

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".
  • 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.
  • 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.

Kiedy definicja problemu jest gotowa, kliknij przycisk OK, 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 

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 


Dalsze prace: dodanie terminala typu "liczba int" albo "liczba int z zakresu", poprawienie przypadłości edycji w tabelce (np. zaznaczamy komórkę, naciskamy backspace a pojawia się kropka dziesiętna), lepsza wizualizacja ewolucji (kolory, wykres), zapis/odczyt całości problemu do/z pliku, Hits X -> Hits X/Y; główne okienko nie znika, tylko po ewolucji wracamy do niego.
Program i tekst: Tomasz Pawlak
Prowadzący: Maciej Komosiński