这个例子展示了如何用基于问题的方法来表达一个线性最小二乘问题。
问题是找出到原点(该点)的最短距离(0, 0, 0)
上飞机
。换句话说,这个问题是最小化的
受限制
。这个函数f(x)被称为目标函数和
是一个等式约束。更复杂的问题可能包含其他等式约束、不等式约束、上界或下界约束。
为了使用基于问题的方法来规划这个问题,创建一个优化问题对象,称为pointtoplane
。
pointtoplane = optimproblem;
创建一个问题变量x
作为一个有三个分量的连续变量。
x = optimvar (“x”3);
创建目标函数,并把它放在客观的
的属性pointtoplane
。
obj =总和(x ^ 2);pointtoplane。客观的=obj;
创建线性约束并放入问题中。
v =(1、2、4);pointtoplane。约束=点(x,v) == 7;
问题的表述已经完成。要检查错误,请回顾问题。
显示(pointtoplane)
最小化:sum(x.^2) subject: x(1) + 2*x(2) + 4*x(3) == 7
公式是正确的。
通过打电话解决问题解决
。
[溶胶,fval exitflag、输出]=解决(pointtoplane);
使用lsqlin解决问题。满足约束条件的最小值。优化是由于目标函数在可行方向上不递减,到最优容差值范围内,且约束条件满足到约束容差值范围内而完成的。
disp (sol.x)
0.3333 0.6667 1.3333
验证解决方案,分析解决问题。回想一下,对于任何非零的t
,向量(1、2、4)t * t * v =
垂直于这个平面吗
。所以解决方案是xopt
是t * v
为了价值t
这满足方程点(t * v, v) = 7
。
t = 7 /点(v, v)
t = 0.3333
xopt = t * v
xopt =1×30.3333 0.6667 1.3333
事实上,向量xopt
等于这个点吗sol.x
那解决
发现。