Gurobopy:矩阵约束



x为用定义的n个变量的向量:x = M.addMVar(shape = n, vtype = GRB.BINARY, name = "x")。设CCD_ 3是一个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号线,在古罗比。型号addConstr

文件";src/gurobipy/model.pxi";,第3586行,在古罗比。型号addMConstr

TypeError:必须是实数,而不是MLinExpr

知道为什么会发生这种情况吗?我已经研究了几个小时的解决方案。我目前的猜测是,古罗比对不平等双方出现的变量感到不满意。然而,我还没有想出一个变通办法。

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

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

最新更新