【问题标题】:Returning the model in python gurobi interface from a function从函数返回python gurobi接口中的模型
【发布时间】:2020-05-06 15:59:02
【问题描述】:

在函数内部创建模型并由该函数返回后,我正在尝试在 python-gurobi 中处理模型。

例子:

def createmodel(params):
    m = Model()
    x = m.addVar(vtype = GRB.BINARY)
    m.addConstr(constraint)
    m.setObjective(objectivefunction)
    return m

接下来,我使用初始参数创建模型

model = createmodel(params)
print(model)

请注意,我已退回整个模型。打印模型给了我以下信息,这意味着模型已成功且正确地返回。

<gurobi.Model MIP instance Unnamed: 225 constrs, 230 vars>

接下来我试图改变模型的目标。使用model.setObjective(NewParam * x)。我收到以下错误。有人可以帮忙吗?

name 'x' is not defined'

【问题讨论】:

    标签: python gurobi


    【解决方案1】:

    x 是一个仅在函数createmodel() 范围内定义的局部变量。只需返回 mx 即可在函数外修改模型:

    def createmodel(params):
        m = Model()
        x = m.addVar(vtype = GRB.BINARY)
        m.addConstr(constraint)
        m.setObjective(objectivefunction)
        return m, x
    
    model, x = createmodel(params)
    

    或者,您可以像这样再次查询变量:

    x = model.getVars()
    

    不过,这是不必要的工作,因为您之前已经掌握了所有变量,所以我会采用第一个解决方案。

    【讨论】:

      猜你喜欢
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多