Tengo un sistema de ecuaciones no lineales que quiero resolver numéricamente:
f = ( f 1 , … , f n )
Este sistema tiene una serie de características que lo hacen particularmente difícil de manejar. Estoy buscando ideas sobre cómo lidiar con el sistema de manera más efectiva.
¿Por qué es difícil el sistema?
Las funciones son similares a esta (pero, por supuesto, en múltiples dimensiones):
Tienen mesetas planas separadas por una región de cambio suave. En 2D, se puede imaginar algo como esto para una :
Generalmente, cada tiene dos mesetas separadas por cambio suave alrededor de un n - 1 hiperplano dimensional.
Las funciones son muy lentas de calcular. Estoy buscando un método que pueda obtener una aproximación razonable de la raíz en la menor cantidad de iteraciones posible.
Las funciones se calculan con un método de Monte Carlo. Esto significa que cada vez que se calculan, obtengo un valor aleatorio ligeramente diferente. Los derivados son difíciles de estimar. Una vez que estemos lo suficientemente cerca de la raíz, el ruido comenzará a dominar, y es necesario usar el promedio para aumentar la precisión. Idealmente, debería ser posible generalizar el método a una versión de aproximación estocástica equivalente (por ejemplo, Newton → Robbins-Monro).
¿Qué más sé sobre el sistema?
Hay precisamente una raíz (de los resultados teóricos).
fuente
Respuestas:
Dado que hay una sola raíz y no hay restricciones, es posible que tenga la suerte de plantearla como un problema de optimización: minimice la suma (a lo largo de cada dimensión) de los cuadrados de su función original.
Los métodos de optimización clásicos probablemente fracasarán, pero los métodos heurísticos como los algoritmos genéticos o CME-ES (adaptación de matriz covariante, etc. - estrategia evolutiva) podrían funcionar.
fuente