2016-11-17 38 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