【发布时间】:2014-09-15 16:58:06
【问题描述】:
我希望通过将x1 更改为x5 来最小化以下等式。
y=[(x1*a+x2*b+x3*c+x4*d+x5*e)-z]
这里a,b,c,d,e 和z 都是向量。目标是找到a,b,c,d,e 的组合以尽可能与z 匹配。这可以作为线性程序或类似的东西来完成吗?我有 (x1 + x2)=0.6 和 (x3 +x4 x5)=0.4 的约束使用 lsqlin 设置为:
a=[1;2;3];
b=[2;5;1];
c=[8;1;3];
d=[6;2;1];
e=[5;4;3];
C=[a,b,c,d,e];
z=[6;5;2];
A=[1 1 0 0 0;
0 0 1 1 1] ;
bounds=[0.6; 0.4];
lb=zeros(5,1);
x = lsqlin(C,z,A,bounds,[],[],lb);
但这会返回错误:
警告:大规模算法至少需要与 变量 在 C 矩阵中;改为使用中等规模算法。
在 lsqlin 中 268 优化终止。
x =
0.0000 0.5319 -0.0000 0.5745 0.2979
这忽略了我所追求的平等。
【问题讨论】:
-
任何不等式约束,例如非负性?
-
是的。我相信 lb=zeros(5,1) 给出了这个?但是,是的,都是非负数。但如果需要,y 可以为负数——但无论以绝对值最小化 y。即使得 y 的元素之和尽可能接近 0
标签: matlab optimization vector minimize