给定方程组
, 服从
其中是一个矩阵(其中)并且非常大且稀疏。例如可以有元素。每一行只有 4 或 5 个非零数字,只能是 1 或 -1。
我在 Matlab 上,我一直在使用 LSQR 但我需要不等式约束来对施加单调性。
您能否建议任何求解器使用线性约束来执行此操作?Matlab 或 C 上是否有任何实现?
给定方程组
, 服从
其中是一个矩阵(其中)并且非常大且稀疏。例如可以有元素。每一行只有 4 或 5 个非零数字,只能是 1 或 -1。
我在 Matlab 上,我一直在使用 LSQR 但我需要不等式约束来对施加单调性。
您能否建议任何求解器使用线性约束来执行此操作?Matlab 或 C 上是否有任何实现?
如果您可以访问 MATLAB 优化工具箱,则可以使用 quadprog() 函数轻松完成。您首先将目标以二次形式写为
然后相乘得到和。那么你的目标是
并准备好输入 quadprog()。矩阵只有 2740 x 2740,所以从 quadprog() 的角度来看,这不是一个很大的问题。
如果您没有优化工具箱的副本,我确信有一些免费的 MATLAB qp 求解器。
另请注意,您可能希望根据变量重新表述问题,其中
然后你可以用替换你的不等式约束。