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