#include <SteepestDescent.h>
Diagram dziedziczenia dla SteepestDescent
Gradientowa metoda kierunków poprawy.
Podstawą teoretyczną metody są dwa twierdzenia:
1. Jeśli istnieje taki kierunek , że
to jest kierunkiem poprawy:
gdzie .
2. Dla liniowego modelu funkcji - rozwinięcia w szereg Taylora pierwszego rzędu:
spośród wszystkich kierunków spełniających warunek z twierdzenia 1, kierunkiem najszybszego spadku jest
Informacje wejściowe:
- minimalizowana funkcja
zmiennych,
- dowolnie wybrany punkt startowy,
- dokładność warunku stopu,
warunek stopu - do wyboru:
Oznaczenia:
- numer aktualnej iteracji,
- aktualny kierunek poszukiwań,
- aktualny punkt próbny,
- długość wykonywanego aktualnie kroku.
Procedura.
Krok wstępny:
Podstawiamy:
Krok 1:
Wyznaczamy kierunek przeciwny do gradientu:
Krok 2:
Sprawdzamy warunek stopu:
Jeśli to STOP. W przeciwnym wypadku przechodzimy do kroku 3.
Krok 3:
Wykonujemy krok w kierunku o optymalnej długości
:
Podstawiamy i przechodzimy do kroku 1.
Uwagi.
Metoda opiera się na liniowym modelu funkcji (patrz twierdzenie 2) i dla funkcji wyższego rzędu jest najczęściej wolno zbieżna. Podstawową wadą, wpływającą na wolną zbieżność, jest "zygzakowaty" charakter przebiegów optymalizacji. Dokładne metody minimalizacji w kierunku (a taka jest tu wykorzystywana w kroku 3) zatrzymują się w punkcie, w którym gradient funkcji jest prostopadły do aktualnego kierunku poszukiwań
. Kolejny kierunek
będzie, zgodnie z podstawowym założeniem metody, równoległy do gradientu. W ten sposób metoda w całym swym przebiegu operuje tylko dwoma prostopadłymi do siebie kierunkami, silnie zależnymi od punktu początkowego.
Metoda zaimplementowana na podstawie opisu zamieszczonego w:
Findeisen W., Szymanowski J., Wierzbicki A.: Teoria i metody obliczeniowe optymalizacji. Warszawa, PWN 1977.
Metody publiczne | |
~SteepestDescent (void) | |
Destruktor. | |
virtual std::auto_ptr< Method > | Clone () const |
Tworzy kopię metody. | |
virtual const wxString & | Name () const |
Zwraca nazwę metody. | |
virtual MethodIdType | Id () const |
Zwraca ID metody. | |
virtual bool | CanHandle (const ProblemBase *pProblem) const |
Sprawdza, czy dany problem może być rozwiązany tą metodą. | |
virtual StopConditions | AllowedStopConditions () const |
Zwraca listę warunków stopu odpowiednich dla danej metody. | |
Statyczne metody publiczne | |
static MethodIdType | ClassId () |
Zwraca ID metody. | |
Metody chronione | |
SteepestDescent (void) | |
Konstruktor domyślny. | |
SteepestDescent (const SteepestDescent &from) | |
Konstruktor kopiujący. | |
virtual wxString & | rName () |
Przyjaciele | |
class | MethodWithLineSearchPanel< SteepestDescent > |
Panel ustawień metody. |
|
Konstruktor kopiujący.
|