【问题标题】:Gurobipy: matrix constraintsGurobipy:矩阵约束
【发布时间】:2021-06-18 21:36:18
【问题描述】:

x 为定义为x = M.addMVar(shape = n, vtype = GRB.BINARY, name = "x") 的n 个变量的向量。让A 是一个 n × n 矩阵。让v 是一个由正整数组成的 n × 1 常量向量。我感兴趣的约束:

np.multiply(v, x) <= A @ x

但是,当我在 gurobi 中添加此约束时:

M.addConstr(np.multiply(v, x) <= A @ x, name = "c1")

它给出了错误:

文件“src/gurobipy/model.pxi”,第 3325 行,在 gurobipy.Model.addConstr 中

文件“src/gurobipy/model.pxi”,第 3586 行,在 gurobipy.Model.addMConstr 中

TypeError: 必须是实数,不是MLinExpr

知道为什么会这样吗?我已经研究了几个小时的解决方案。我目前的猜测是 Gurobi 对不平等两边出现的变量不满意。但是,我还没有找到解决方法。

【问题讨论】:

    标签: python optimization gurobi integer-programming


    【解决方案1】:

    这不起作用,因为 Gurobi Python 接口中的矩阵表示需要规范形式 Ax = b。所以你需要将 v 合并到 A 矩阵中,你的代码变成这样:

    A2 = A-v*np.eye(n)
    M.addConstr(A2 @ x >= 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-15
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多