Альтернатива алгоритму Левенберга-Марквардта - PullRequest
0 голосов
/ 04 мая 2019

Я получил какой-то старый код, который использует функцию fmincon и алгоритм LevenbergMarquardt для оптимизации моих параметров.Однако этот алгоритм больше не доступен в этой функции.Поскольку я новичок в Matlab, я не уверен в том, что является лучшей альтернативой.Я попытался просто изменить функцию на те, которые совместимы с LevenbergMarquardt, но это, похоже, не работает.

Ниже приведен вектор параметров и функция fmincon.«S», «A» и «b» - начальные значения параметров, «lb» и «ub» - верхняя и нижняя границы.

Пожалуйста, напишите, если что-то неясно, или вам нужна дополнительная информация.

options_ = optimset('LevenbergMarquardt', 'on','TolFun',1e-6,'TolX',1e-6, 'HessUpdate', 'steepdesc', 'Display','iter', 'LargeScale', 'off', 'MaxFunEvals', 100000, 'MaxIter', 100000);

[ out_p, fval, exitfflag ] = fmincon(@MyLikelihoodFunction, S, A, b, [], [], lb, ub, [], options_);

1 Ответ

0 голосов
/ 06 мая 2019

Что вы пробовали и что пошло не так?

Я бы начал с fmincon со всеми параметрами по умолчанию. Это даст вам алгоритм внутренней точки. Установите «Display» в «iter», чтобы увидеть, как работает алгоритм. Если проблема велика (хотя в старом коде отключено «LargeScale»), вы можете попробовать установить «HessianApproximation» в «lbfgs».

A и b не являются частью начальной точки. Они определяют ограничения линейного неравенства. Больше информации об этом есть в приведенной выше ссылке на документацию.

...