2016-11-17 214 views
0

我要解决在MATLAB以下优化问题:L1范数最小化与Gurobi

Min sum(abs(x)) 
s.t. A*x = 0, 
    lb <= x <= ub 

其中x是一个致密的矢量,A是稀疏矩阵,LB和UB是真实的下部和上部界限分别。
使用函数linprog()或LP求解器Gurobi可能会很方便。
你知道如何制定这个问题吗?

感谢

回答

0

目标minimize sum(abs(x))可以翻译成:

  • minimize sum(u)
  • S.T. -u_i <= x_i <= u_i
  • (其中dim(x) == dim(u)
+0

钝地指出。不过,我很难将其转换为代码。当我得到它时我会回复你。 –

+0

最后,我用你的输入解决了这个问题,使用MATLAB的cvx工具箱和LP求解器gurobi 'cvx_begin cvx_solver gurobi 变量s(n); 变量x(n) 最小化sum(s); 受 A * x == 0; lb <= x <= ub; -s <= x <= s; cvx_end' –

+0

@GeorgeC如果你使用cvx,那么你不需要我的重新配置,因为l1/sum_abs已经在这个库中可用! [见这里](http://cvxr.com/cvx/doc/funcref.html)(规范函数非常一般)。但如果我的答案有帮助,请考虑接受或提升它。 – sascha