Безградиентная оптимизация / Подгонка - PullRequest
0 голосов
/ 19 марта 2020

Черные точки - экспериментальные точки данных. В этом случае они взяты из кривой IV в солнечном элементе, но в принципе это не имеет значения.

Моя цель состоит в том, чтобы подогнать эту кривую с помощью симуляции, которая имеет определенные входные параметры (приблизительно около 5). После моего первоначального предположения (синего цвета) я могу получить «качество» подгонки (что в основном составляет квадрат ошибка χ² от точек данных до подгонки). Но так как это симуляция, а функция no analyti c , я не получаю градиент (вектор производных по всем входным параметрам) для оптимизации этого χ².
Более того, это бесполезно для численного аппроксимации этого градиента, так как оценка χ² для нового набора параметров занимает неоправданно много времени.

Или вкратце: мне нужен оптимизатор без градиента, который оптимизирует подгонку ( вероятно, минимизируя χ²) и используя как можно меньше новых оценок.

Я уже попробовал метод downhill-simplex-by от Nelder и Mead , но он занимает довольно много
Я читал, что NEWUOA от Пауэлла , как говорят, сходятся довольно быстро с меньшим количеством функциональных оценок. Есть ли реализация для C#?

Fit

...