【问题标题】:0-1 optimization with absolute value (equiv., with two inequalities)0-1 绝对值优化(等价,有两个不等式)
【发布时间】:2013-07-11 22:55:46
【问题描述】:

Optimization Toolbox 中的 bintprog 命令解决了具有不等式约束和可选等式约束的 0-1 编程问题:Ax

我有一个 |Ax| 形式的问题

【问题讨论】:

    标签: matlab mathematical-optimization integer-programming


    【解决方案1】:

    如果 size(A) = [n,m],你的约束是这样的

    for each {i in 1..m}
      -b <= sum {j in 1..n} a_{ij} * x_{ij} <= b
    

    这与两组约束相同

    for each {i in 1..m}
      sum {j in 1..n} a_{ij} * x_{ij} <= b
      sum {j in 1..n} a_{ij} * x_{ij} >= -b
    

    因为你必须把它写成 Ax

    for each {i in 1..m}
      sum {j in 1..n} a_{ij} * x_{ij} <= b
      sum {j in 1..n} -a_{ij} * x_{ij} <= b
    

    在 MATLAB 中,给定您原来的 A 和 b,您可以使用

    制作这些“加倍”约束矩阵
    A = [A; -A];
    b = [b; b];
    

    并用这些新的 (A,b) 求解您的整数程序。

    【讨论】:

      【解决方案2】:

      这很容易:

      你有|Ax| &lt;= b。这相当于(正如您自己指出的)-b &lt;= Ax &lt;= b
      所以,你有额外的不等式约束:Ax &lt;= b -Ax &lt;= b
      因此,您可以在所有 AA = [ A ; -A ]bb = [b;b] 中定义您的绝对值约束:

      x = bintprog( f, AA, bb );   
      

      【讨论】:

      • 看起来你比我早了 43 秒得到了相同的答案!不错的工作。这里有两个相同答案的礼仪是什么?我应该删除我的吗?
      • @raoulcousins:请保留!
      猜你喜欢
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 2016-03-04
      • 2019-12-23
      • 2020-01-16
      • 2013-12-21
      相关资源
      最近更新 更多