0

我收到了一些旧代码,它使用函数 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_);
4

1 回答 1

0

你尝试了什么,出了什么问题?

我将从具有所有默认选项的fmincon开始。这将为您提供内点算法。将“显示”设置为“迭代”以查看算法的进展情况。如果问题很大(尽管旧代码关闭了“LargeScale”),您可以尝试将“HessianApproximation”设置为“lbfgs”。

A 和 b 不是起点的一部分。这些定义了线性不等式约束。我在上面给出的文档链接中有更多信息。

于 2019-05-06T01:38:38.330 回答