我计算约束线性最小二乘问题的解决方案如下:lsqlin优化计算(MATLAB)
lb = zeros(7,1);
ub = ones(7,1);
for i = 1:size(b,2)
x(:,i) = lsqlin(C,b(:,i),[],[],[],[],lb,ub);
end
其中C
是m x 7
和b
是m x n
。 n
相当大,导致计算时间较慢。有没有什么办法可以加快这个程序,并摆脱慢循环的for
。我正在使用lsqlin
而不是pinv
或\
,因为我需要将我的解决方案限制在0-1的边界(lb
和ub
)。
您可以随时尝试切换默认解算器。尝试'''内部点'''。不知道该循环是什么,以及你期望我们如何处理它。 – sascha
我尝试了不同的求解器,但问题是一样的。我正在使用for循环,因为如果我试图给出'x = lsqlin(C,b,[],[],[],[],lb,ub);'我得到一个'Inner matrix dimensions must agree错误。另一方面,如果我使用'pinv(C)* b'或'C \ b',它就像一个魅力,但对于'lsqlin'我需要通过'for'循环来完成,因为我需要约束我需要使用'lsqlin'。因此,我只是问是否有任何可能性来优化或放弃'for'循环。 – ThT