У меня есть система из нелинейных уравнений, которые я хочу решить численно:
f = ( f 1 , … , f n )
Эта система имеет ряд характеристик, которые делают ее особенно сложной в обращении. Я ищу идеи о том, как работать с системой более эффективно.
Почему система сложна?
Функции похожи на эту (но, конечно, в нескольких измерениях):
У них плоские плато, разделенные областью плавного изменения. В 2D вы можете представить что-то вроде этого для одного :
Как правило, у каждого есть два плато, разделенных плавным изменением вокруг n - 1- мерной гиперплоскости.
Функции очень медленно вычисляются. Я ищу метод, который может получить разумное приближение корня за как можно меньшее количество итераций.
Функции рассчитываются методом Монте-Карло. Это означает, что каждый раз, когда они вычисляются, я получаю немного другое случайное значение. Производные сложно оценить. Как только мы подойдем достаточно близко к корню, шум начнет доминировать, и для повышения точности необходимо использовать усреднение. В идеале должна быть возможность обобщения метода на эквивалентную версию стохастической аппроксимации (например, Ньютон → Роббинс-Монро).
Что еще я знаю о системе?
Существует ровно один корень (из теоретических результатов).
Ответы:
Поскольку существует один корень и нет ограничений, вам может повезти, представив это как задачу оптимизации: минимизируйте сумму (по каждому измерению) квадратов вашей исходной функции.
Классические методы оптимизации, скорее всего, потерпят неудачу, но эвристические методы, такие как генетические алгоритмы или CME-ES (ковариантная и т. Д. Адаптация матрицы - эволюционная стратегия), могут работать.
источник