Ich habe ein System von nichtlinearen Gleichungen, die ich numerisch lösen möchte:
f = ( f 1 , … , f n )
Dieses System weist eine Reihe von Eigenschaften auf, die die Handhabung besonders schwierig machen. Ich suche nach Ideen, wie ich effektiver mit dem System umgehen kann.
Warum ist das System schwierig?
Die Funktionen sind ähnlich (aber natürlich in mehreren Dimensionen):
Sie haben flache Plateaus, die durch einen Bereich sanften Wandels getrennt sind. In 2D können Sie sich so etwas für ein vorstellen :
Im Allgemeinen jeweils hat zwei Plateaus durch glatte Änderung um einen abgetrennten n - 1 dimensionale Hyperebene.
Die Funktionen sind sehr langsam zu berechnen. Ich suche nach einer Methode, mit der sich die Wurzel in möglichst wenigen Iterationen vernünftig annähern lässt.
Die Funktionen werden mit einer Monte-Carlo-Methode berechnet. Dies bedeutet, dass ich jedes Mal, wenn sie berechnet werden, einen etwas anderen Zufallswert erhalte. Derivate sind schwer abzuschätzen. Sobald wir nahe genug an der Wurzel sind, beginnt das Rauschen zu dominieren, und es ist notwendig, die Mittelung zu verwenden, um die Genauigkeit zu erhöhen. Idealerweise sollte es möglich sein, die Methode auf eine äquivalente stochastische Approximationsversion (z. B. Newton → Robbins-Monro) zu verallgemeinern .
Was weiß ich noch über das System?
Es gibt genau eine Wurzel (aus theoretischen Ergebnissen).
quelle
Antworten:
Da es eine einzelne Wurzel gibt und es keine Einschränkungen gibt, haben Sie möglicherweise Glück, wenn Sie dies als Optimierungsproblem darstellen: Minimieren Sie die Summe (entlang jeder Dimension) der Quadrate Ihrer ursprünglichen Funktion.
Klassische Optimierungsmethoden werden wahrscheinlich fehlschlagen, aber heuristische Methoden wie genetische Algorithmen oder CME-ES (kovariante usw. Matrixanpassung - Evolutionsstrategie) könnten funktionieren.
quelle