gurobipy.SOS#

class SOS#

Gurobi SOS约束对象。SOS约束总是与特定模型相关联。您通过向模型添加SOS约束(使用Model.addSOS)来创建SOS对象,而不是通过使用SOS构造函数。同样,SOS约束通过Model.remove方法移除。

SOS约束可以是类型1或类型2(GRB.SOS_TYPE1GRB.SOS_TYPE2)。类型1的SOS约束是一组变量,其中 最多只有一个变量可以取非零值。类型 2的SOS约束是一组有序的变量,其中最多有两个 变量可以取非零值。如果有两个变量取非零 值,它们必须在有序集中是连续的。

SOS约束对象有一个属性,IISSOS,可以通过SOS.getAttr方法进行查询。

getAttr(attrname)#

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

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

Parameters:

attrname – 被查询的属性。

Returns:

请求属性的当前值。

Example:
print(sos.getAttr(GRB.Attr.IISSOS))
property index#

此属性返回基础模型中SOS约束的当前索引或顺序。

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

Returns:

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

setAttr(attrname, newvalue)#

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

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

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

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

  • newvalue – 属性的期望新值。

Example:
sos.setAttr(GRB.Attr.IISSOSForce, 1)
var.setAttr("IISSOSForce", 0.0)