Szukanie przedziałów unimodalności

Większość metod optymalizacji jednowymiarowej wymaga założenia o unimodalności funkcji celu. Gdy rozpatrywana funkcja nie jest unimodalna (jest multimodalna) można spróbować podzielić jej dziedzinę na podprzedziały w których jest unimodlana, można do tego użyć np. takiego prostego algorytmu:

Przeszukujemy dziedzinę funkcji obliczając jej wartości w punktach:

a, a+d,…, a+nd, tzn. obliczamy kolejno f(a), f(a+d), f(a+2d), …, f(a+nd), gdzie

a – punkt początkowy

d – krok

f – rozważana funkcja

i szukamy takiej trójki kolejnych punktów (x-d), (x), (x+d) aby zachodziły nierówności:

f(x-d) > f(x) i f(x+d) > f(x)

Przedział [x-d, x+d] jest wynikiem – tj. podejrzewamy że jest przedziałem w którym funkcja f jest unimodalna (rys. a).

Działanie algorytmu ilustrują rysunki poniżej. Tak naprawdę nie mamy pewności że funkcja jest unimodalna w znalezionym w wyniku jego działania przedziale (rys. b). Algorytm powinien się jednak sprawdzić w typowych sytuacjach (funkcje niezbyt szybko zmieniające się). Dokładność (i czas pracy numerycznej) tej metody jest tym większa im mniejszy jest krok d.


a) Znaleziony przedział unimodalności

b) Nieprawidłowo znaleziony przedział