gurobipy.SOS#
- class SOS#
Gurobi SOS约束对象。SOS约束总是与特定模型相关联。您通过向模型添加SOS约束(使用
Model.addSOS
)来创建SOS对象,而不是通过使用SOS构造函数。同样,SOS约束通过Model.remove
方法移除。SOS约束可以是类型1或类型2(
GRB.SOS_TYPE1
或GRB.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)