#include <HookeJeevesOptimal.h>
Diagram dziedziczenia dla HookeJeevesOptimal
Metoda wyznacza kierunek za pomocą kroków próbnych wzdłuż osi, a następnie wykonuje krok roboczy w tym kierunku. W odróżnieniu od pierwotnej wersji metody, w tym wariancie długości kroków próbnych i roboczego są wyznaczane przez metodę optymalizacji w kierunku. Oznacza to, że każdy krok jest udany, dlatego nigdy nie ma potrzeby cofania się do punktu bazowego.
Warunek stopu jest oparty na porównaniu dwóch ostatnich kroków, zastosowana może być jedna z klas pochodnych StandardStopCondition.
Informacje wejściowe:
- minimalizowana funkcja
zmiennych,
- dowolnie wybrany punkt startowy,
warunek stopu - do wyboru:
Oznaczenia:
- indeks aktualnego kierunku,
- numer aktualnej iteracji,
- aktualna baza kierunków,
- aktualny punkt próbny,
- najlepszy punkt w k-tym etapie,
- punkt bazowy dla kroków próbnych w k-tym etapie,
- kierunek kroku roboczego.
Procedura.
Krok wstępny:
Podstawiamy:
Krok 1:
Przy pomocy metody optymalizacji w kierunku wyznaczamy optymalną długość kroku i wykonujemy krok próbny wzdłuż i-tej osi:
Zapamiętujemy punkt próbny jako najlepszy:
a następnie przechodzimy do kroku 2.
Krok 2:
Sprawdzamy, czy wykonano kroki próbne we wszystkich kierunkach:
Jeśli , podstawiamy
i ponownie przechodzimy do kroku 1.
Jeśli , przechodzimy do kroku 3.
Krok 3:
Zapamiętujemy aktualny punkt jako punkt bazowy dla następnego etapu:
Wyznaczamy kierunek kroku roboczego:
i wykonujemy krok roboczy o optymalnej długości w tym kierunku:
Przechodzimy do kroku 4.
Krok 4:
Sprawdzamy warunek stopu:
Jeśli jest on spełniony, kończymy działanie. Wynikiem jest .
W przeciwnym wypadku podstawiamy ,
i przechodzimy do kroku 1.
Metody publiczne | |
~HookeJeevesOptimal (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 | |
HookeJeevesOptimal (void) | |
Konstruktor domyślny. | |
HookeJeevesOptimal (const HookeJeevesOptimal &from) | |
Konstruktor kopiujący. | |
double | CoordinateSearch (const FunctionBase &function, ColumnVector &rx, HookeJeevesOptimalIteration &rIteration) const |
Znajdź kierunek. | |
virtual wxString & | rName () |
Przyjaciele | |
class | MethodWithLineSearchPanel< HookeJeevesOptimal > |
Panel ustawień metody. |
|
Konstruktor kopiujący.
|
|
Znajdź kierunek. Wykonuje kroki wzdłuż osi. Stosowana jest metoda optymalizacji w kierunku, znajdowane są więc punkty o minimalnej wartości funkcji. Kroki są dodawane do wyniku.
|