GOOL – Global Optimization Object – oriented Library

Biblioteka metod optymalizacji globalnej

 

Marek Publicewicz

M.Publicewicz@elka.pw.edu.pl

 

Ewa Niewiadomska-Szynkiewicz

e-n-s@ia.pw.edu.pl

 

Instytut Automatyki i Informatyki Stosowanej

Politechnika Warszawska

 

Program GOOL jest aplikacją przeznaczoną do rozwiązywania n-wymiarowych zadań programowania nieliniowego bez ograniczeń i z  ograniczeniami oraz wizualizacji działania różnych metod optymalizacji. Oferowane są dwie wersje działające w środowiskach systemu UNIX/Linux oraz w systemach Windows.

GOOL Składa się z trzech części:

GOOL/GUI - środowisko do wizualizacji. Jest to interfejs graficzny użytkownika dostarczający narzędzi do definiowania zadań programowania nieliniowego, ustalania  wartości parametrów poszczególnych metod oraz prezentacji (w sposób dynamiczny) wyników wykonywanych obliczeń. Możliwe jest wprowadzanie funkcji celu dowolnej liczby zmiennych, definiowanie ograniczeń  oraz wywoływanie metod optymalizacji w celu znalezienia poszukiwanego minimum, z możliwością szczegółowej obserwacji przebiegu działania danej metody. Rezultaty są prezentowane na wykresach poziomicowych.

GOOL/OM  - biblioteka metod optymalizacji. W jej skład wchodzą obiektowe realizacje (C++) wybranych metod optymalizacji globalnej i lokalnej (w tym metod minimalizacji w kierunku).

GOOL/RG   - biblioteka generatorów losowych. W jej skład wchodzą realizacje różnych algorytmów generowania liczb pseudolosowych.

GOOL/CON - wersja systemu działająca w środowisku tekstowym. Dane dotyczące rozwiązywanego zadania oraz parametry metod optymalizacji są pobierane z wejściowych plików tekstowych.

Wszystkie dane otrzymywane podczas eksperymentu numerycznego, jak i utworzone w programie funkcje celu, mogą być zapisywane na dysku, co daje możliwość ich późniejszego odtwarzania.

Podsumowując, system GOOL umożliwia wykonanie następujących operacji:

·        wprowadzanie i edycja funkcji celu przeznaczonych do optymalizacji,

·        wprowadzanie i edycja ograniczeń kostkowych na zmienne i ograniczeń funkcyjnych,

·        aktywowanie/dezaktywowanie pojedynczych ograniczeń w zadaniu,

·        zapisywanie i wczytywanie zadań z plików dyskowych,

·        zadawanie funkcji celu zarówno poprzez podanie wzoru analitycznego (wówczas program automatycznie wyznacza wzory na pochodne cząstkowe), jak i poprzez przygotowanie procedury obliczającej wartość minimalizowanej funkcji,

·        dla funkcji jednowymiarowych - rysowanie wykresu dwuwymiarowego funkcji celu, dla funkcji dwuwymiarowych - rysowanie trójwymiarowych wykresów wprowadzonych funkcji celu,

·        zobrazowanie funkcji celu w postaci wykresów poziomicowych, przy wykorzystaniu jednego z trzech dostarczonych algorytmów (w przypadku funkcji wielowymiarowych cięcia płaszczyznami),

·        wykonywanie różnych operacji na oknach graficznych, np. skalowanie, zmiana zakresów zmiennych, nanoszenie siatki na wykres, ukrywanie i zamykanie okien, ukrywanie i pokazywanie wyników obliczeń, wybór sposobu przedstawiania danych (linia, punkty),

·        wybór aktywnych okien - wyniki działania metody można umieszczać jednocześnie w kilku oknach, ale muszą być one związane z jedną funkcją (np. dla różnych zakresów zmiennych, czy też różnych zestawów par zmiennych – przypadek wielowymiarowy),

·        ustalanie parametrów metod optymalizacji poprzez system okien dialogowych,

·        wybór rodzaju eksperymentu: metoda optymalizacji z wbudowanej biblioteki, metoda w postaci zewnętrznego pliku wykonywalnego (wysyłającego na standardowe wyjście wyniki obliczeń z kolejnych iteracji), kolejne punkty pobierane z pliku tekstowego o ustalonym formacie,

·        zapisywanie na dysku wyników optymalizacji z możliwością późniejszego ich odtworzenia,

·        tworzenie, zapisywanie oraz odczytywanie zbiorów punktów, będących wynikiem działania określonego generatora losowego; wyświetlanie punktów na płaszczyźnie, wykreślanie histogramów,

·        dokładne śledzenie przebiegu optymalizacji poprzez włączenie specjalnego trybu Educational Mode.

 

Program napisany jest jako skrypt w języku Tcl/Tk i można uruchamiać go na dwa sposoby:

 

  1. Korzystając ze standardowego, zainstalowanego w systemie interpretera języka Tcl/Tk. Przy takim uruchomieniu niedostępne są: metody optymalizacji z biblioteki metod, funkcje generacji punktów losowych, automatyczne różniczkowanie funkcji, pełna wizualizacja przebiegów. Niemniej, można wówczas wykonywać badania, uruchamiając inne programy lub wczytywać dane do prezentacji z plików.
  2. Korzystając z interpretera dostarczonego wraz z programem, zawierającego wkompilowane biblioteki metod optymalizacji i generatorów losowych.

 

W pierwszym przypadku program jest w pełni przenaszalny pomiędzy systemami, w których jest zainstalowany interpreter języka Tcl/Tk, natomiast w drugim może być konieczne przekompilowanie jądra interpretera.