Metoda kierunków
sprzężonych jest bezgradientową, iteracyjną metodą optymalizacji bez
ograniczeń. Dla form kwadratowych
jest
ona zbieżna w N krokach. Idea metody jest podobna do metody
Hooke'a-Jeavsa'a, gdyż także bada ona
zachowania funkcji wykonując kroki w kierunkach pewnej bazy.
Zasadnicza różnica polega jednak na tym, że w metodzie Powell'a baza
ta zmienia się w trakcie wykonywania algorytmu. Modyfikacja bazy
polega na stworzeniu i dodaniu do niej nowego sprzężonego kierunku i
równoczesnym usunięciu z niej takiego kierunku, wzdłuż którego
nastąpiło największe przesunięcie.
ek – k-ty
kierunek N-wymiarowej bazy, początkowo:(wersor
kartezjańskiego układu współrzędnych)
d – wyznacznik macierzy,
służący do kontrolowania czy wektory bazy są liniowo niezależne
(powinien być różny od 0), początkowo d = det(IN) = 1.
x – aktualne przybliżenie rozwiązania (początkowa wartość może być wylosowana)
ε – wymagana dokładność
-
norma wektora x
xp := x
Dla każdego z kierunków k=1, 2, ..., N wybierz optymalny krok mk dokonując minimalizacji jednowymiarowej wzdłuż kierunku ek
x := x + m1e1 + m2e2 + ... + mNeN
Wyznacz
kierunek sprzężony
i podstaw x := x + mN+1eN+1 , gdzie mN+1
jest optymalnym krokiem uzyskanym w wyniku minimalizacji funkcji
g(mN+1)=f(x+mN+1eN+1)
jeżeli(zachodzi
warunek stopu) to koniec obliczeń
xp := x
wyznacz numer kierunku k (1≤k≤N), w którym nastąpiło największe przesunięcie (kierunek dla którego mk było największe)
jeżeli(wyznacznik
dla nowej bazy - stopień liniowej niezależności - jest bezpiecznie
duży), to zmień bazę:
ek
:= eN+1 i
przejdź do pkt. 2