MATLAB中,如y=z1x1+z2x2+z3*x3
X=[1,2,3;
2,3,4;
3,4,5;
4,5,6;
5,6,7];
y=[40,50,60,70,80]';
若要求Z=[z1;z2;z3];
只需Z=A\b就可以了。
但如果额外需满足约束条件,比如0.54<z1<1.09,0<z2<0.9,0.54<z3<1.09,且z3<=x1。应该怎么处理呢?
遇到这种情况,matlab中有没有较好的算法进行优化。
此种情况只有最小范数解,因为方程组的数量大于位置量的数量,所有只能使用最优化方法求出近似的最优解,方法如下:
目标函数:min ||A*x-b||
约束条件:0.54<z1<1.09,0<z2<0.9,0.54<z3<1.09,且z3<=x1