微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何使用通过我在 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 举报,一经查实,本站将立刻删除。