如何使用通过我在 gurobi 中复制的模型的变量定义的表达式添加二次约束?

问题描述

我正在尝试在 gurobipy 中执行以下操作:

  • 创建模型
  • 添加变量
  • 定义包含这些变量的二次表达式
  • 创建一个新模型,该模型是第一个模型的副本
  • 使用二次表达式为新模型定义约束

当使用 linear(使用 addLConstr())表达式执行此操作时,一切正常,但我在使用二次函数时遇到了一些麻烦(尝试了 addQConstr() 和 {{ 1}})。 我已经看过 here 但我无法弄清楚如何使这件事起作用,因为我得到了我想用作传递给函数的参数的二次表达式。 在下面找到代码错误代码

addConstr()

错误

from gurobipy import Model
from gurobipy import GRB

m = Model()

x1 = m.addVar(vtype = GRB.CONTINUOUS,name = 'x1',ub = 5,lb = 0)
x2 = m.addVar(vtype = GRB.CONTINUOUS,name = 'x2',lb = 0)

# a linear expression
lin_expr = x1 + x2

# a quadratic expression
quad_expr = x1 * x2

m.addLConstr(lin_expr <= 3)
m.addQConstr(quad_expr <= 6)
m.update()

m_copy = m.copy()

# works
m_copy.addLConstr(lin_expr <= 2)
# doesn't work
m_copy.addQConstr(quad_expr <= 5)

P.S.:在线性表达式中使用 Traceback (most recent call last): File "quadtest.py",line 24,in <module> m_copy.addQConstr(quad_expr <= 5) File "src/gurobipy/model.pxi",line 3398,in gurobipy.Model.addQConstr File "src/gurobipy/model.pxi",line 3234,in gurobipy.Model.__addConstr gurobipy.GurobiError: Variable not in model 时,会抛出同样的错误...

编辑:添加了 P.S.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)