在LSQCurveFIT计算中执行的零步骤进行矩阵优化问题

25次浏览(最近30天)
电子回旋加速器
电子回旋加速器 2021年6月15日
评论道: 电子回旋加速器2021年6月21日15时47分
我正在尝试使用非线性最小二乘优化 lsqcurvefit .所涉及数据的维度如下:
x0 →(nxn)
xdata →[mxn]
ydata. →[MX1]
xdata F (x) →[MX1]
的初始值 x0 通过调用 兰德(n) 然后乘以一个比例因子,这样输出的均值 F 是在平均值的级别之内 ydata. .但是,无论是在还是没有这种缩放因子,我都会收到消息:
“初始点是局部最小值。
由于初始点的梯度尺寸小于最优公差值,优化完成。”
我尝试过传入options对象,这样我就可以将最佳性容差设置为1e-11或更小,但无论如何我都得到了相同的消息。我如何修复这个问题,以便执行实际的优化计算?提前谢谢!
更新:我尝试过切换到使用 fmincon 通过 解决(问题…) 用目标函数集模拟非线性最小二乘极小化。它正在进行超过10,000次的功能评估,但我还没有实现一个解决方案。
更新:这里是一个代码片段,显示了正交性的规定约束,选项对象和包含目标函数的段…
%%设置约束,opts和init
prob = OptimProblem;
一个= optimvar (“一个”, (n, n));
b = Optimvar(“B”, (n, n));
prob.constraints.orthoa =(a。'* a)==眼睛(n);
选择= optimoptions ('粉丝'...
“UseParallel”,1,“MaxFunctionEvaluations”,20000,'展示'“通路”...
'finitedifferencestepsize'1的军医);
init.a = inton(n);
init。B =诊断接头(的(n - 1))
然后在后面的代码中,我定义了D和P它们分别是num × n和num × 1矩阵。
% %目标函数
Tic,
j = optimexpr(1);
我= 1:num
J = + 0.5 * (D(我:)* (1 e33) *(。”* B *) * D(我:)- p (i)) ^ 2;
结束
TOC.
Tic,
概率。目标= J;
[x, fval exitflag,输出]=解决(概率,初始化,“选项”、选择);
TOC.
的比例因子 1E33 我在循环中包含定义的循环 J 似乎将最初括号内的第一项的大小与第二个术语相同的数量级, P(我) .我用直方图检查了这个,值应该关闭。有什么建议么?
4评论

登录评论。

接受的答案

马特·J
马特·J 2021年6月17日20:52分
编辑:马特·J 2021年6月17日20:55分
好像问题有一个简单的分析解决方案,
[A, B] = eig (D \诊断接头(P) / (D。');
a = a。';
3评论
电子回旋加速器
电子回旋加速器 2021年6月21日15时47分
哦,你是对的。我再试一次,看看是否有效。

登录评论。

更多的答案(0)

下载188bet金宝搏


发布

R2020a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!