我的目标是找到
服从和,
和 I 和 J 将分成两组。
很容易做因为 D 是对角线而 F 是离散傅里叶变换。但实际上在 F 上存储和计算是不切实际的。
MATLAB 的 lsqlin 适用于小案例。如果问题混合了等式和不等式约束,它看起来像使用直接方法 qpsub。
您可以参考我的任何求解器或快速实现吗?
我的目标是找到
服从和,
和 I 和 J 将分成两组。
很容易做因为 D 是对角线而 F 是离散傅里叶变换。但实际上在 F 上存储和计算是不切实际的。
MATLAB 的 lsqlin 适用于小案例。如果问题混合了等式和不等式约束,它看起来像使用直接方法 qpsub。
您可以参考我的任何求解器或快速实现吗?
存在有界约束最小二乘问题的迭代方法;我很快发现的一个例子是Bierlaire、Toint 和 Tuyttens 的On Iterative Algorithms for Linear Least Squares Problems With Bound Constraints 。
通过为函数提供一些选项,您仍然应该能够使用 MATLAB lsqlin
。要使用迭代算法,在调用之前lsqlin
,使用
options = optimoptions(@lsqlin, 'Algorithm', 'trust-region-reflective', ...
'JacobMult', YourMatrixFreeObjectiveFunction)
% Your lsqlin call should look something like...
x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)
有关更多详细信息,请参阅lsqlin
文档。
为了使用信任区域算法,您需要稍微改变您的问题;信任区域反射算法不允许任何等式,因此您必须在目标函数中为,并且只求解使得。