#include <SteepestDescent.h>
Diagram dziedziczenia dla SteepestDescent

Gradientowa metoda kierunków poprawy.
Podstawą teoretyczną metody są dwa twierdzenia:
1. Jeśli istnieje taki kierunek
, że
to
jest kierunkiem poprawy:
gdzie
.
2. Dla liniowego modelu funkcji - rozwinięcia w szereg Taylora pierwszego rzędu:
spośród wszystkich kierunków spełniających warunek z twierdzenia 1, kierunkiem najszybszego spadku jest
Informacje wejściowe:
- minimalizowana funkcja
zmiennych,
- dowolnie wybrany punkt startowy,
- dokładność warunku stopu,
warunek stopu - do wyboru:
,
,
,
Oznaczenia:
- numer aktualnej iteracji,
- aktualny kierunek poszukiwań,
- aktualny punkt próbny,
- długość wykonywanego aktualnie kroku.
Procedura.
Krok wstępny:
Podstawiamy:
Krok 1:
Wyznaczamy kierunek przeciwny do gradientu:
Krok 2:
Sprawdzamy warunek stopu:
Jeśli
to STOP. W przeciwnym wypadku przechodzimy do kroku 3.
Krok 3:
Wykonujemy krok w kierunku
o optymalnej długości
:
Podstawiamy
i przechodzimy do kroku 1.
Uwagi.
Metoda opiera się na liniowym modelu funkcji (patrz twierdzenie 2) i dla funkcji wyższego rzędu jest najczęściej wolno zbieżna. Podstawową wadą, wpływającą na wolną zbieżność, jest "zygzakowaty" charakter przebiegów optymalizacji. Dokładne metody minimalizacji w kierunku (a taka jest tu wykorzystywana w kroku 3) zatrzymują się w punkcie, w którym gradient funkcji
jest prostopadły do aktualnego kierunku poszukiwań
. Kolejny kierunek
będzie, zgodnie z podstawowym założeniem metody, równoległy do gradientu. W ten sposób metoda w całym swym przebiegu operuje tylko dwoma prostopadłymi do siebie kierunkami, silnie zależnymi od punktu początkowego.
Metoda zaimplementowana na podstawie opisu zamieszczonego w:
Findeisen W., Szymanowski J., Wierzbicki A.: Teoria i metody obliczeniowe optymalizacji. Warszawa, PWN 1977.