【问题标题】:L1-norm minimisation in MATLAB with GurobiMATLAB 中的 L1 范数最小化与 Gurobi
【发布时间】:2016-11-17 19:36:57
【问题描述】:

我想在 MATLAB 中解决以下优化问题:

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

其中 x 是密集向量,A 是稀疏矩阵,lb 和 ub 分别是实数下界和上界。
使用函数 linprog() 或 LP 求解器 Gurobi 会很方便。
你知道如何制定这个问题吗?

谢谢

【问题讨论】:

    标签: matlab linear-programming gurobi


    【解决方案1】:

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

    • minimize sum(u)
    • 标准-u_i &lt;= x_i &lt;= u_i
    • (其中dim(x) == dim(u)

    【讨论】:

    • 注意到了。但是,我很难将其转换为代码。收到后我会回复你的。
    • 最后我用你的输入解决了它,使用 MATLAB 的 cvx 工具箱和 LP 求解器 gurobi cvx_begin cvx_solver gurobi variable s(n); variable x(n) minimize sum(s); subject to A*x == 0; lb &lt;= x &lt;= ub; -s &lt;= x &lt;= s; cvx_end
    • @GeorgeC 如果您使用 cvx,那么您不需要我的重新表述,因为 l1 / sum_abs 在这个库中已经可用! See here(规范函数非常通用)。但如果我的回答有帮助,请考虑接受或支持它。
    • 我注意到 cvx 有一个 norm 函数,例如范数(x,1)。尽管如此,我意识到它并没有真正满足我的约束条件,例如,A.x 仅接近 0,并且误差非常高。当我使用上述公式时,这已解决,例如 A.x = 10^-10。接受并投票(如果没有显示是因为我刚刚注册)。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多