python - 可变系数gurobi python
问题描述
我正在使用 Gurobi 和 Python,我需要在我的 MILP 模型的所有约束中获取特定变量的系数。我知道有一些功能,例如m.gtCol
orm.getCoeff
来获得所需的输出。但是,我无法以正确的方式使用它们来返回系数。我以这种方式定义了我的变量:
w = {}
for i in I:
for n in N:
for j in J:
w[i,n,j] = m.addVar(vtype=GRB.BINARY, name='w_%d_%d_%d' % (i,n,j))
任何人都可以帮助我吗?
解决方案
你应该看看 gurobipy 的Column类。它允许您访问给定Var
对象的关联信息。这是一个可以用作起点的简单示例:
import gurobipy as gp
m = gp.Model()
x = m.addVars(3)
m.addConstr(2 * x[0] + x[1] == 9, name="Cone")
m.addConstr(-x[0] + x[2] >= 1, name="Ctwo")
m.update()
col = m.getCol(x[0])
for i in range(col.size()):
coef = col.getCoeff(i)
row = col.getConstr(i)
print("x[0] coef/row pair: {}/{}".format(coef, row.ConstrName))
因此,我们创建了一个具有三个变量和两个约束的模型,并希望打印第一个变量的所有系数x[0]
,以及该变量所涉及的约束名称。在我的机器上运行上面的代码片段,我看到:
x[0] 系数/行对:2.0/锥
x[0] 系数/行对:-1.0/Ctwo
推荐阅读
- or-tools - ORTools - 车辆路线 - 最大限度地减少途中包裹时间
- scala - Spark get all rows with same values in array in column
- javascript - 如何使用打字稿键入此回调函数
- python - 谷歌云功能上的sshtunnel转发和mysql连接
- ruby - 登录网站并下载文件 - ruby
- javascript - 您如何摆脱警报框并恢复行动流程?- Javascript
- typescript - Jest 无法导入包,而我的其他打字稿代码导入它
- javascript - 打字稿:有条件地将对象属性标记为可选?
- java - 如何用 Jackson 序列化扩展 TreeSet 的类?
- mysql - 使用单个查询获取列中每个值的顶级类别