2012-11-21 13 views
6

Czy ktoś wie o potężnej rutynie/algorytmie (najlepiej w scipy/python), aby zlokalizować "wszystkie" lokalne minima dla prawdziwej funkcji skalarnej N zmienne w zdefiniowanym ("prostokątnym") obszarze N-wymiarowej przestrzeni wektorowej?minimalizacja w scipy, algorytm znajdowania wszystkich lokalnych minimów N wymiarowej funkcji skalarnej

ograniczonego i swobodne algorytmy służące ograniczeniu w scipy wszystko powróci tylko jeden minimalny (globalne lub lokalne)

+9

Funkcja może mieć nieskończoną liczbę lokalnych minima w ograniczonym przedziale. Na przykład 'f (x) = sin (1/x)' dla '0 unutbu

+0

oczywiście ... moje złe. Przepraszam, że pytam. –

+0

To jest dobre pytanie. Po prostu myślę, że algorytm byłby trudny do wygenerowania wszystkich - nawet dla płynnych funkcji. – unutbu

Odpowiedz

2

scipy na basinhopping ma callback argumentu, który może być używany do zapisywania wszystkich znalezionych minimów.

Na przykład:

all_minima = [] 
def save_minima(x, f, accepted): 
    all_minima.append(x) 

basinhopping(func, x0, callback=save_minima) 

Oczywiście, to nie zwróci wszystkie lokalne minima niekoniecznie. Ale zwraca wszystko, co znajdzie.

Powiązane problemy