可变系数gurobi python

2024-05-23 20:43:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Gurobi和Python,我需要在我的MILP模型的所有约束中得到一个特定变量的系数。我知道有一些函数像m.gtColm.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))

有人能帮我吗?你知道吗


Tags: 函数in模型for定义方式binary系数
2条回答

您应该看看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] coef/row pair: 2.0/Cone
x[0] coef/row pair: -1.0/Ctwo

你可以看看:https://groups.google.com/forum/#!topic/gurobi/pQXRd37BQL8

[x for x in model.getVars() if x.VarName.find('w_1_1_1') != -1]

应该给出包含模式w_1_1_1的变量列表。你知道吗

相关问题 更多 >