非负线性最小二乘法,Solver-Based
这个例子展示了如何使用一些算法来求解一个线性约束最小二乘问题非负约束的解决方案。一个线性最小二乘问题的形式
。
在这种情况下,约束的解决方案是负的, 。
首先,加载阵列 和 到您的工作区。
负载粒子
查看每个数组的大小。
sizec =大小(C)
sizec =1×22000 400
尺寸的大小= (d)
大小=1×22000年1
的C
矩阵有2000行和400列。因此,矩阵乘法,合适的大小x
矢量有400行。代表nonnegativity约束,设置零在所有变量的下界。
磅= 0(大小(C, 2), 1);
解决问题用lsqlin
。
[x, resnorm残留,exitflag,输出]=…lsqlin (C, d,[]、[][],[],磅);
最低发现满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
看到的细节优化过程,检查输出结构。
disp(输出)
消息:“最低....发现满足约束”算法:“内点”firstorderopt: 3.6717 e-06 constrviolation: 0迭代:8 linearsolver:“稀疏”cgiterations: []
显示输出结构lsqlin
使用一个内部稀疏线性规划求解的内点算法和迭代需要8到3.7 e-6的一阶最优性措施。
改变算法
trust-region-reflective算法处理bound-constrained问题。看看这个问题上它执行。
选择= optimoptions (“lsqlin”,“算法”,“trust-region-reflective”);(x2, resnorm2 residual2、exitflag2 output2] =…lsqlin (C, d,[]、[][],[],磅,[],[],选项);
局部最小值。lsqlin停止,因为函数的相对变化值小于的平方根函数宽容和函数值的变化是缓慢的。
disp (output2)
迭代的算法:10个“trust-region-reflective”firstorderopt: 2.7870 e-05 cgiterations: 42 constrviolation: [] linearsolver:[]信息:“局部最小值可能....”
这一次,解算器需要更多的迭代和达到一个较高的解决方案(更糟糕的)一阶最优性措施。
提高一阶最优性措施,尝试设置SubproblemAlgorithm
选项“分解”
。
选项。SubproblemAlgorithm =“分解”;[x3, resnorm3 residual3、exitflag3 output3] =…lsqlin (C, d,[]、[][],[],磅,[],[],选项);
找到最优解。
disp (output3)
迭代:12算法:“trust-region-reflective”firstorderopt: 5.5907 e15汽油cgiterations: 0 constrviolation: [] linearsolver:[]信息:找到最优解。
使用此选项将一阶最优性测量几乎为零,这是最好的结果。
改变解算器
尝试解决t问题使用lsqnonneg
解算器,其目的是处理非负线性最小二乘法。
[x4, resnorm4 residual4、exitflag4 output4] = lsqnonneg (C, d);disp (output4)
迭代:184算法:“激活集”的信息:“优化终止。”
lsqnonneg
不报告一阶最优性措施。相反,研究残余规范。看到lower-significance数字减去22.5794每个剩余常态。
t =表(resnorm3 resnorm2 resnorm - 22.5794——22.5794——22.5794, resnorm4 - 22.5794,…“VariableNames”,{“默认”,“trust-region-reflective”,“分解”,“lsqnonneg”})
t =1×4表默认trust-region-reflective分解lsqnonneg __________ _______________________ _________________ __________ 7.5411 4.9179 4.9179 4.9186 e-05 e-05 e-05 e-05
默认的lsqlin
算法具有更高的比残留标准trust-region-reflective
算法。的分解
和lsqnonneg
残留标准更低,同样在这个级别的显示精度。看哪个更低。
disp (resnorm3 - resnorm4)
6.8212 e-13
的lsqnonneg
残留标准是最低的微不足道。然而,lsqnonneg
大多数迭代收敛。