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