Python Don';无法理解model.getAttr()的参数

Python Don';无法理解model.getAttr()的参数,python,gurobi,Python,Gurobi,我不熟悉Python和Gurobi,我正在阅读model.getAttr的手册,我知道返回的参数是model.getAttr(attrname,objs=None) 我不理解的是手册中提供的以下示例代码: 打印(model.getAttr(“Pi”,model.getConstrs()) attrname“Pi”不在我的代码中,为什么它仍然能够返回值 请帮忙 try: # Create a new model m = Model("simplelp") # Crea

我不熟悉Python和Gurobi,我正在阅读model.getAttr的手册,我知道返回的参数是model.getAttr(attrname,objs=None)

我不理解的是手册中提供的以下示例代码:

打印(model.getAttr(“Pi”,model.getConstrs())

attrname“Pi”不在我的代码中,为什么它仍然能够返回值

请帮忙

 try:

    # Create a new model
    m = Model("simplelp")

    # Create variables
    x1 = m.addVar(ub = 10, name="x1")
    x2 = m.addVar(name="x2")
    x3 = m.addVar(name="x3")

    # Set objective
    m.setObjective(x1 + 2 * x2 + 5 * x3, GRB.MAXIMIZE)

    # Add constraint: 
    m.addConstr(-x1 + x2 + 3*x3 <= -5, "c0")

    # Add constraint: 
    m.addConstr(x1 + 3*x2 - 7*x3 >= 10, "c1")

    m.optimize()

    # print optimal solutions
    for v in m.getVars():                     #m.getVars() retrieves all the variables in the model, contains v 
        print('%s %g' % (v.varName, v.x))     #v.varName returns name, v.x returns value

    # print optimal value
    print('Obj: %g' % m.objVal)

    # print dual values to all constraints
    print(m.getAttr("Pi", m.getConstrs()))

except GurobiError as e:
    print('Error code ' + str(e.errno) + ": " + str(e))

except AttributeError:
    print('Encountered an attribute error')


试试看:
#创建一个新模型
m=模型(“simplelp”)
#创建变量
x1=m.addVar(ub=10,name=“x1”)
x2=m.addVar(name=“x2”)
x3=m.addVar(name=“x3”)
#设定目标
m、 设定目标(x1+2*x2+5*x3,GRB最大化)
#添加约束:
m、 addConstr(-x1+x2+3*x3=10,“c1”)
m、 优化()
#打印最佳解决方案
对于m.getVars()中的v:#m.getVars()检索模型中的所有变量,包含v
打印(“%s%g%”(v.varName,v.x))#v.varName返回名称,v.x返回值
#打印最佳值
打印('对象:%g'%m.objVal)
#将双值打印到所有约束
打印(m.getAttr(“Pi”,m.getConstrs())
除Gurobie错误外,其他错误为e:
打印('错误代码'+str(e.errno)+':“+str(e))
除属性错误外:
打印('遇到属性错误')

我想你弄错了什么。“Pi”是使用
m.addConstr()
方法创建的线性约束对象的属性。有关所有可用属性的概述,请参阅

让我们考虑一下:

from gurobipy import Model, GRB

# Create a new model
m = Model("simplelp")

# Create variables
x1 = m.addVar(ub = 10, name="x1")
x2 = m.addVar(name="x2")
x3 = m.addVar(name="x3")

# Set objective
m.setObjective(x1 + 2 * x2 + 5 * x3, GRB.MAXIMIZE)

# Add constraint: 
con0 = m.addConstr(-x1 + x2 + 3*x3 <= -5, "c0")

# Add constraint: 
con1 = m.addConstr(x1 + 3*x2 - 7*x3 >= 10, "c1")

m.optimize()
m.getAttr(attrname,objectslist)
为objectslist中的所有对象返回属性attrname的值:

In [18]: print(m.getAttr("Pi", [con0, con1]))                                                                                                               
Out[18]: [2.0, 0.0]

In [19]: print(m.getAttr("Pi", m.getConstrs()))                                                                                                         
Out[19]: [2.0, 0.0]

In [20]: print([con0.Pi, con1.Pi])                                                                                                                          
Out[20]: [2.0, 0.0]
In [18]: print(m.getAttr("Pi", [con0, con1]))                                                                                                               
Out[18]: [2.0, 0.0]

In [19]: print(m.getAttr("Pi", m.getConstrs()))                                                                                                         
Out[19]: [2.0, 0.0]

In [20]: print([con0.Pi, con1.Pi])                                                                                                                          
Out[20]: [2.0, 0.0]