微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gurobipy:矩阵约束

如何解决Gurobipy:矩阵约束

x 是 n 个变量的向量,定义为:x = M.addMVar(shape = n,vtype = GRB.BINARY,name = "x")。令 A 为 n × n 矩阵。令 v一个由正整数组成的 n x 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: 必须是实数,而不是 minexpr

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。