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