GOOL – GLOBAL OPTIMIZATION OBJECT-ORIENTED LIBRARY Marek Publicewicz Ewa Niewiadomska-Szynkiewicz Naukowa i Akademicka Sieć Komputerowa (NASK) Instytut Automatyki i Informatyki Stosowanej, Politechnika Warszawska KAEOG 2003
Plan Prezentacji Wprowadzenie Biblioteka GOOL (Global Optimization Object-oriented Library) - założenia funkcjonalne - opis działania systemu GOOL/CON - opis działania systemu GOOL/GUI Część wizualizacyjna (GUI) interakcyjna definicja zadań + analizator wyrażeń prezentacja graficzna optymalizowanych funkcji prezentacja graficzna wyników obliczeń Metody numeryczne w GOOL - biblioteka generatorów losowych (GOOL/RG) - biblioteka metod optymalizacji (GOOL/OM) Eksperymenty numeryczne
Część numeryczna jest zrealizowana w C/C++ Biblioteka GOOL Biblioteka GOOL łącznie z częścią wizualizacyjną stanowi narzędzie do badania metod optymalizacji dla różnych zadań testowych: wprowadzanych w postaci analitycznej (korzystając z interfejsu lub z pliku tekstowego) wprowadzonych w postaci symulatora Część numeryczna jest zrealizowana w C/C++ Interfejs graficzny w języku skryptowym Tcl / Tk
Wersje biblioteki GOOL Dwie wersje biblioteki: GOOL / GUI GOOL / CON GOOL / GUI Wersja działająca w środowisku graficznym (przeznaczona do celów edukacyjnych) GOOL / CON Wersja działająca w trybie tekstowym (przeznaczona do prac naukowo-badawczych)
Elementy składowe biblioteki GOOL GOOL / GUI Interfejs graficzny Definiowanie zadań, ustalanie wartości parametrów metod, prezentacja wyników GOOL / RG Biblioteka generatorów losowych Różne generatory liczb pseudolosowych i sekwencji losowych GOOL / OM Biblioteka metod optymalizacji Metody optymalizacji wypukłej i niewypukłej
Funkcjonalność systemu GOOL Zarządzanie zadaniami postać analityczna funkcji celu funkcje proceduralne - osobne pliki wykonywalne autorski podsystem zarządzania strukturą zadania (symboliczny) zarządzanie symbolami i ograniczeniami Wizualizacja zadań wykresy funkcji jednej zmiennej wykresy poziomicowe, skalowanie obszaru, dopuszczalność wykres trójwymiarowy dla zadań dwuwymiarowych Metody optymalizacji uporządkowanie metod w hierarchię drzewiastą nadawanie wartości parametrom metod możliwość wyboru metod lokalnych oraz minimalizacji w kierunku definiowanie wielkości charakterystycznych dla danej metody
Założenia implementacyjne przenośność (docelowe systemy: Linux, Windows) połączenie języka skryptowego (Tcl/Tk - GUI) z językiem C++ (selekcja w doborze mechanizmów) wykorzystanie podczas budowy wzorców projektowych wyodrębnienie podsystemu obliczania wartości i operowania na wyrażeniach symbolicznych - C
Schemat fragmentu hierarchii klas biblioteki GOOL
Działanie systemu GOOL/CON Uruchomienie programu GOOL/CON gool_con task_file task_file – nazwa pliku zawierającego zadanie optymalizacji RAPORT Parametry zadania (dokładność obliczeń, postać funkcji kary, użyte generatory losowe) Znalezione rozwiązanie zadania Numer iteracji, w której znaleziono rozwiązanie Wartości ograniczeń w rozwiązaniu Liczba uderzeń w ograniczenia Całkowita liczba iteracji Liczba obliczeń funkcji celu Czas trwania obliczeń Kryterium zatrzymania metody
Foramat pliku task_file <NAME> nazwa zadania <DESCRIPTION> opis słowny zadania <DIMENSION> wymiar <BOUNDS> ograniczenia kostkowe <SYMBOLS> definicje symboli pomocniczych <OBJECTIVE> wskaźnik jakości <CONSTRAINTS> ograniczenia nierównościowe <PARAMS> parametry zadania <GRADIENTS> postać analityczna gradientu <START_POINTS> punkt początkowy optymalizacji
Działanie systemu GOOL/GUI Główne okno aplikacji Informacje dotyczące zadania: Name – nazwa Objective – funkcja celu Metody optymalizacji z biblioteki Pliki z wynikami optymalizacji
Definiowanie zadania optymalizacji KAEOG 2003
Sposoby prezentacji wyników obliczeń Generatory losowe prezentacja punktów na płaszczyźnie wyświetlanie histogramów Minimalizacja funkcji (GUI): obserwowanie przebiegu działania na wykresach poziomicowych - trzy rodzaje prezentacji: trajektorie zbiory punktów przeszukiwane komórki (GUI): tryb edukacyjny: prezentacja przebiegu minimalizacji w kierunku raportowanie wielkości charakterystycznych danej metody prezentacja zmian istotnych parametrów charakteryzujących algorytm informowanie użytkownika o stanie działania algorytmu (GUI): zapis przebiegu optymalizacji do pliku (CON): szczegółowy raport końcowy
Prezentacja wyników obliczeń KAEOG 2003
Prezentacja wyników obliczeń Metody minimalizacji w kierunku Generatory losowe
Tryb edukacyjny Zadania jednowymiarowe Zadania wielowymiarowe
Algorytmy optymalizacji w systemie GOOL Metody optymalizacji globalnej metody deterministyczne podziału i ograniczeń Galperina, Gourdina, Meewella-Mayne trajektorii cząstki Griewanka metody niedeterministyczne poszukiwań losowych symulowanego wyżarzania CRS2, CRS3, CRS6 wykorzystujące grupowanie algorytm Törna (warianty grupowania) algorytmy ewolucyjne kodowanie binarne kodowanie rzeczywistoliczbowe
Metody podziału i ograniczeń Siatka nierównomierna Warunek Lipschitza metod Galperina Funkcja aproksymująca zbiór dopuszczalny środek komórki wybrana komórka dzielona na p komórek metod Gourdina-Hansena-Jaumard Funkcja aproksymująca zbiór dopuszczalny środek komórki wybrana komórka dzielona na p komórek
Metody trajektorii cząstki Griewanka Nowy punkt: Kierunek: Gdzie
Metody minimalizacji w kierunku Algorytmy optymalizacji w systemie GOOL Metody optymalizacji lokalnej sympleks nieliniowy Neldera-Meada metoda Powella BFGS Metody minimalizacji w kierunku aproksymacja funkcji parabolą metoda złotego podziału ekstrapolacja/interpolacja kwadratowa z testem Goldsteina metoda Pijavskiego-Shuberta
Biblioteka generatorów losowych jednostajny trzy generatory liniowe trzy sekwencje pseudolosowe (Haltona, Faure, Sobola) normalny metoda ROU zmodyfikowana metoda odwracania dystrybuanty metoda Box’a - Mullera beta(a,b)
Podsumowanie Główne obszary zastosowania programu: minimalizacja zadań wielowymiarowych z ograniczeniami funkcyjnymi różnymi metodami przedstawianie charakteru zmienności badanych funkcji z uwzględnieniem ograniczeń analiza wpływu parametrów zadania i ograniczeń na postać minimalizowanej funkcji badanie wpływu wartości parametrów na ich skuteczność lepsze zrozumienie sposobu zachowania się najbardziej popularnych algorytmów, poprzez śledzenie ich działania w trybie edukacyjnym Potencjalne kierunki rozbudowy: rozbudowa biblioteki metod uwzględnianie ograniczeń - inne metody wizualizacja przebiegu algorytmów na wykresie przestrzennym rozbudowanie podsystemu zarządzającego wyrażeniami symbolicznymi