我已经收到一些使用函数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_);
答案 0 :(得分:0)
您尝试了什么以及出了什么问题?
我将从所有默认选项的fmincon开始。这将为您提供内点算法。将“显示”设置为“ iter”以查看算法如何进行。如果问题很大(尽管旧代码已禁用“ LargeScale”),则可以尝试将“ HessianApproximation”设置为“ lbfgs”。
A和b不是起点。这些定义了线性不等式约束。我在上面提供的文档链接中有关于此的更多信息。