我收到了一些使用函数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_);发布于 2019-05-06 09:38:38
你尝试了什么,出了什么问题?
我会从所有默认选项的fmincon开始。这将为您提供内点算法。将“Display”设置为“iter”以查看算法的进度。如果问题很大(尽管旧代码关闭了'LargeScale‘),您可以尝试将'HessianApproximation’设置为'lbfgs‘。
A和b不是起点的一部分。这些定义了线性不等式约束。在我上面给出的文档链接中有更多关于这方面的信息。
https://stackoverflow.com/questions/55984549
复制相似问题