Gurobipy:矩阵约束

Gurobipy: matrix constraints

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")

它给出错误:

File "src/gurobipy/model.pxi", line 3325, in gurobipy.Model.addConstr

File "src/gurobipy/model.pxi", line 3586, in gurobipy.Model.addMConstr

TypeError: must be real number, not MLinExpr

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

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

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