Dokumentacja klasy HookeJeevesOptimal

#include <HookeJeevesOptimal.h>

Diagram dziedziczenia dla HookeJeevesOptimal

MethodWithLineSearch Method Observable Lista wszystkich składowych.

Opis szczegółowy

Metoda Hooke'a i Jeevesa z krokiem optymalnym.

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:
$f$ - minimalizowana funkcja $n$ zmiennych,
$x^0$ - dowolnie wybrany punkt startowy,
warunek stopu - do wyboru:

$\varepsilon$ - dokładność,
wybrana metoda minimalizacji w kierunku wraz z parametrami.


Oznaczenia:
$i$ - indeks aktualnego kierunku,
$k$ - numer aktualnej iteracji,
$D = d^{(i)},\: i=1,\ldots,n$ - aktualna baza kierunków,
$x^i$ - aktualny punkt próbny,
$x^k_{min}$ - najlepszy punkt w k-tym etapie,
$x_b^k$ - punkt bazowy dla kroków próbnych w k-tym etapie,
$d$ - kierunek kroku roboczego.


Procedura.

Krok wstępny:
Podstawiamy:

\[ D = I(n), \mbox{ gdzie } I(n) - \mbox{ macierz jednostkowa } n \times n , \]

\[ x^1_{min} = x^0, \]

\[ x_b^1 = x^0, \]

\[ k = 1 , \]

\[ i = 1 . \]


Krok 1:
Przy pomocy metody optymalizacji w kierunku wyznaczamy optymalną długość kroku $\tau^{(i)}$ i wykonujemy krok próbny wzdłuż i-tej osi:

\[ \tau^{(i)} = \arg \min_{\tau^{(i)}} f(x^k_{min} + \tau^{(i)} d^{(i)}) . \]

\[ x^i = x^k_{min} + \tau^{(i)} d^{(i)} . \]

Zapamiętujemy punkt próbny jako najlepszy:

\[ x^k_{min} = x^i, \]

a następnie przechodzimy do kroku 2.


Krok 2:
Sprawdzamy, czy wykonano kroki próbne we wszystkich kierunkach:
Jeśli $i < n$, podstawiamy $i = i + 1$ i ponownie przechodzimy do kroku 1.
Jeśli $i = n$, przechodzimy do kroku 3.


Krok 3:
Zapamiętujemy aktualny punkt jako punkt bazowy dla następnego etapu:

\[ x_b^{k+1} = x^k_{min}. \]

Wyznaczamy kierunek kroku roboczego:

\[ d = x^k_{min} - x_b^k \]

i wykonujemy krok roboczy o optymalnej długości w tym kierunku:

\[ \tau = \arg \min_{\tau} f(x^k_{min} + \tau d) . \]

\[ x^{k+1}_{min} = x^k_{min} + \tau d . \]

Przechodzimy do kroku 4.


Krok 4:
Sprawdzamy warunek stopu:
Jeśli jest on spełniony, kończymy działanie. Wynikiem jest $ x^{k+1}_{min} $.
W przeciwnym wypadku podstawiamy $k = k+1$, $i = 1$ i przechodzimy do kroku 1.

Zobacz również:
HookeJeevesDiscrete, StandardStopCondition


Metody publiczne

 ~HookeJeevesOptimal (void)
 Destruktor.
virtual std::auto_ptr< MethodClone () 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.


Dokumentacja konstruktora i destruktora

HookeJeevesOptimal::HookeJeevesOptimal const HookeJeevesOptimal from  )  [protected]
 

Konstruktor kopiujący.

Parametry:
from Obiekt, którego wartość jest kopiowana.


Dokumentacja funkcji składowych

double HookeJeevesOptimal::CoordinateSearch const FunctionBase function,
ColumnVector &  rx,
HookeJeevesOptimalIteration rIteration
const [protected]
 

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.

Parametry:
function Funkcja celu.
rx Referencja na bieżący punkt, wokół którego przeprowadzane jest poszukiwanie. Zostaje ustawiony na punkt, który jest wynikiem poszukiwania.
iteration Iteracja, do której dodane mają zostać kroki (w wyniku).
rResult Referencja na wynik.
Zwraca:
Wartość funkcji w rx.


Dokumentacja dla tej klasy została wygenerowana z plików:
Wygenerowano Fri Sep 29 21:04:51 2006 dla EduOptim2 programem  doxygen 1.4.6