gurobipy.Constr#

class Constr#

Gurobi 约束对象。约束总是与特定模型相关联。您通过向模型添加约束(使用 Model.addConstr)来创建约束对象,而不是使用 Constr 构造函数。

约束对象有许多属性。完整的列表可以在本文档的属性部分找到。一些约束属性只能查询,而其他属性也可以设置。请记住,Gurobi优化器采用延迟更新方法,因此对属性的更改在下次调用Model.updateModel.optimizeModel.write之前不会生效。

我们应该指出一些关于约束属性的事情。考虑rhs属性。它的值可以使用constr.rhs来查询。Gurobi库在属性名称中忽略字母大小写,因此它也可以作为constr.rhs来查询。它可以使用标准的赋值语句来设置(例如,constr.rhs = 0)。然而,如前所述,属性修改是以一种懒散的方式完成的,因此你不会立即看到更改的效果。而且一些属性不能被设置(例如,Pi属性),因此尝试为它们分配新值将会引发异常。

你也可以使用Constr.getAttr/ Constr.setAttr来访问属性。属性 名称可以作为字符串传递给这些例程,或者你可以使用 GRB.Attr类中定义的常量(例如, GRB.Attr.RHS)。

getAttr(attrname)#

查询约束属性的值。完整的可用属性列表可以在属性部分找到。

如果请求的属性不存在或无法查询,则引发AttributeError。如果Constr对象存在问题(例如,它已从模型中移除),则引发GurobiError

Parameters:

attrname – 被查询的属性。

Returns:

请求属性的当前值。

Example:
print(constr.getAttr(GRB.Attr.Slack))
print(constr.getAttr("slack"))
property index#

此属性返回约束在基础约束矩阵中的当前索引或顺序。

请注意,约束的索引可能会在后续模型修改后发生变化。

Returns:

-2: 已移除, -1: 不在模型中, 否则: 模型中约束的索引

Example:
c = model.getConstrs()[0]
print(c.index) # Index will be 0
sameAs(constr2)#

检查两个约束对象是否引用相同的约束。

Parameters:

constr2 – 另一个约束。

Returns:

布尔结果指示两个约束对象是否引用相同的模型约束。

Example:
print(model.getConstrs()[0].sameAs(model.getConstrs()[1]))
setAttr(attrname, newvalue)#

设置约束属性的值。请注意,由于我们采用延迟更新的方法,更改实际上不会生效,直到您更新模型(使用Model.update)、优化模型(使用Model.optimize)或将模型写入磁盘(使用Model.write)。

可用属性的完整列表可以在 属性 部分找到。

如果指定的属性不存在或无法设置,则引发AttributeError。如果Constr对象存在问题(例如,它已从模型中移除),则引发GurobiError

Parameters:
  • attrname – 正在修改的属性。

  • newvalue – 属性的期望新值。

Example:
constr.setAttr(GRB.Attr.RHS, 0.0)
constr.setAttr("rhs", 0.0)