gurobipy.QConstr#
- class QConstr#
Gurobi 二次约束对象。二次约束总是与特定模型相关联。您通过向模型添加二次约束(使用
Model.addQConstr
)来创建二次约束对象,而不是通过使用QConstr
构造函数。二次约束对象具有多个属性。完整的列表可以在本文档的属性部分找到。一些约束属性只能查询,而其他属性也可以设置。请记住,Gurobi优化器采用延迟更新方法,因此对属性的更改在下次调用
Model.update
、Model.optimize
或Model.write
之前不会生效。我们应该指出一些关于二次约束属性的事情。 考虑
qcrhs
属性。它的值可以使用qconstr.qcrhs
来查询。Gurobi库在属性名称中忽略字母大小写,因此它也可以作为qconstr.QCRHS
来查询。它可以使用标准的赋值语句来设置(例如,qconstr.qcrhs = 0
)。 然而,如前所述,属性修改是以一种懒散的方式完成的,因此你不会立即看到更改的效果。而且一些属性不能被设置(例如,qcpi
属性),因此尝试为它们分配新值将会引发异常。你也可以使用
QConstr.getAttr
/QConstr.setAttr
来访问属性。属性 名称可以作为字符串传递给这些例程,或者你可以使用GRB.Attr
类中定义的常量(例如,GRB.Attr.QCRHS
)。- getAttr(attrname)#
查询二次约束属性的值。完整的可用属性列表可以在属性部分找到。
如果请求的属性不存在或无法查询,则引发
AttributeError
。如果QConstr
对象存在问题(例如,它已从模型中移除),则引发GurobiError
。- Parameters:
attrname – 被查询的属性。
- Returns:
请求属性的当前值。
- Example:
print(qconstr.getAttr(GRB.Attr.QCSense)) print(qconstr.getAttr("qcsense"))
- setAttr(attrname, newvalue)#
设置二次约束属性的值。请注意,由于我们采用延迟更新方法,更改实际上不会生效,直到您更新模型(使用
Model.update
)、优化模型(使用Model.optimize
)或将模型写入磁盘(使用Model.write
)。可用属性的完整列表可以在 属性 部分找到。
如果指定的属性不存在或无法设置,则引发
AttributeError
。如果QConstr
对象存在问题(例如,它已从模型中移除),则引发GurobiError
。- Parameters:
attrname – 正在修改的属性。
newvalue – 属性的期望新值。
- Example:
constr.setAttr(GRB.Attr.QCRHS, 0.0) constr.setAttr("qcrhs", 0.0)