Metoda Rosenbrocka

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).
 

 
Algorytm obrotu współrzędnych:
 
1) Wyznaczenie układu wektorów:
q1 = d1S1 + d2S2 + ... + dnSn
q2 =             d2S2 + ... + dnSn
................................................
qn =                                dnSn
 2) Ortogonalizacja tego układu przy zastosowaniu procedury Gram-Schmidta
3) Podstawienie znalezionego układu wektorów bazy S w miejsce poprzedniego. Warunkiem jednoznaczności przejścia jest, aby nie zachodziło dj = 0 dla j = 1 .. n, gdzie dj jest sumą pomyślnych kroków wykonanych w j-tym kierunku. Spełnia się go poprzez odpowiedni sposób doboru długości kroku oraz stosowane kryterium oceny, czy osiągnięto minimum.
 
 Powrót do strony głównej