Mam układ równań nieliniowych, które chcę rozwiązać numerycznie:
f = ( f 1 , … , f n )
Ten system ma wiele cech, które sprawiają, że jest szczególnie trudny w obsłudze. Szukam pomysłów, jak efektywniej radzić sobie z systemem.
Dlaczego system jest trudny?
Funkcje są podobne do tej (ale oczywiście w wielu wymiarach):
Mają płaskie płaskowyże oddzielone regionem płynnych zmian. W 2D możesz sobie wyobrazić coś takiego dla jednego :
Ogólnie rzecz biorąc, każdy ma dwa plateau oddzielone płynną zmianę wokół n - 1 hiperpłaszczyznę wymiarowej.
Funkcje są bardzo powolne do obliczenia. Szukam metody, która może uzyskać rozsądne przybliżenie katalogu głównego w jak najmniejszej liczbie iteracji.
Funkcje są obliczane metodą Monte Carlo. Oznacza to, że za każdym razem, gdy są obliczane, otrzymuję nieco inną losową wartość. Pochodne są trudne do oszacowania. Kiedy będziemy już wystarczająco blisko korzenia, hałas zacznie dominować i konieczne jest zastosowanie uśrednienia w celu zwiększenia precyzji. Idealnie powinno być możliwe uogólnienie metody na równoważną stochastyczną wersję aproksymacyjną (np. Newton → Robbins-Monro).
Co jeszcze wiem o systemie?
Jest dokładnie jeden pierwiastek (z wyników teoretycznych).
źródło
Odpowiedzi:
Ponieważ istnieje jeden pierwiastek i nie ma żadnych ograniczeń, możesz mieć szczęście, przedstawiając go jako problem optymalizacji: zminimalizuj sumę (wzdłuż każdego wymiaru) kwadratów oryginalnej funkcji.
Metody optymalizacji klasycznej prawdopodobnie zawiodą, ale metody heurystyczne, takie jak algorytmy genetyczne lub CME-ES (kowariant itp. Adaptacja macierzy - strategia ewolucyjna) mogą działać.
źródło