Metoda ta jest dość podobna do metody
Hooka-Jeevesa, gdyż również poszukujemy ekstremum w n wzajemnie
ortogonalnych kierunkach. Różnica między tymi metodami polega na tym, iż
tutaj kierunki te nie pozostają stałe, lecz ulegają zmianom w wyniku obrotu.
Baza wyjściowa S1 .. Sn tworzona jest najczęściej
z wektorów jednostkowych (wersorów) układu współrzędnych kartezjańskich.
Na wstępie wykonuje się po jednym kroku o długości e w każdym z
tych kierunków. Jeśli w danym kierunku uzyskujemy sukces, to zwiększamy
długość kroku w tym kierunku, natomiast w przeciwnym wypadku, długość kroku
mnożymy przez współczynnik -b z przedziału (-1 .. 0), a więc wykonujemy
krótszy krok w przeciwnym do danego kierunku. Procedura taka jest powtarzana
aż do momentu, gdy wykonanie kroku we wszystkich n kierunkach daje
efekt niepomyślny, czyli f(xj) > f(xj-1) dla wszystkich
j. W tej sytuacji jeżeli jest spełnione kryterium na ekstremum,
to procedurę mozna uznać za zakończoną, w przeciwnym wypadku zaś wykonujemy
algorytm obrotu współrzędnych i rozpoczynamy jej działanie od początku.
Kryterium zbieżności tej metody
zaproponowane przez Rosenbrocka opiera się na założeniu, iż bieżący punkt
można uznać za minimum, jeśli w czasie pięciu kolejnych obrotów współrzędnych
(i wykonaniu kroków we wszystkich ortogonalnych kierunkach po każdym obrocie)
nie wystąpił żaden pomyślny krok. Jednak w realizacjach praktycznych ze
względu na zbytnie przedłużenie czasu wykonywania procedury stosuje się
zwykle znacznie prostsze kryterium narzucając z góry ilość iteracji. Po
wykonaniu tej ilości iteracji porównuje się uzyskany wynik z oczekiwaniami
i ewentualnie przyjmuje nową wartość ilości iteracji startując z ostatnio
wyliczonego punktu. Współczynniki a, b należy dobrać eksperymentalnie;
w przypadkach rozpatrywanych przez Rosenbrocka jako optymalne wartości
przyjęto a = 3 i b = 0,5.
Oznaczenia:
x0 - punkt startowy
S1 .. Sn - baza wektorów ortogonalnych (dla dwóch
zmiennych n = 2)
e - początkowa długość kroku (wektor n-wymiarowy)
a - współczynnik korekcyjny zwiększający wartość kroku (a > 1)
b - współczynnik korekcyjny zmniejszający wartość kroku (b < 1)
Algorytm:
1) Obliczenie wartości funkcji w punkcie startowym i obliczenie
wartości funkcji f(xj-1 + ej*Sj) dla wszystkich
kierunków bazy (j = 1 .. n). Gdy f(xj-1 + ej*Sj)
< f(xj-1) to obliczamy sumę pomyślnych kroków dj
= dj-1 + ej, przy czym d0 = 0, przesunięcie
punktu xj = xj-1 + ej*Sj oraz
zwiększamy krok (ej = a*ej). W przeciwnym przypadku
zmniejszamy krok (ej = -b*ej) oraz podstawiamy xj
= xj-1.
Krok ten jest powtarzany aż do momentu gdy dj = 0 dla wszystkich
j = 1 .. n. Jeżeli nastąpiło to po jego jednokrotnym wykonaniu, to przechodzimy
do punktu 2).
2) Zmiana punktu startowego x0 i powtórzenie kroku
1). W przeciwnym wypadku, jeśli minimum nie zostało osiągnięte przechodzimy
do punktu 3).
3) Wykonanie algorytmu obrotu ortogonalnego układu współrzędnych
S i powrót do wykonywania kroku 1).

