Model.feasRelaxS ()
Model.feasRelaxS ()
feasRelaxS(relaxobjtype, minrelax, vrelax, crelax)修改模型
对象创建可行性放宽。注意你需要打电话优化对结果进行实际放宽解的计算。还要注意,这是该方法的简化版本——使用feasRelax为了更好地控制放松。
可行性松弛是一种模型,当求解时,使解违反原模型的边界和线性约束的量最小化。此方法提供了许多用于指定松弛的选项。
如果您指定relaxobjtype = 0
,可行性放宽的目标是最小化有界违反和约束违反的总和。
如果您指定relaxobjtype = 1
,可行性松弛的目标是最小化边界和约束违反平方和。
如果您指定relaxobjtype = 2
,可行性放宽的目标是最小化违反约束和约束的总数。
举个例子,如果2.0违反了一个约束,它就会做出贡献2.0
对可行性放宽的目的relaxobjtype = 0
,它将有助于2.0 * 2.0
为relaxobjtype = 1
,它会有所贡献1.0
为relaxobjtype = 2
.
的minrelax
参数是一个布尔值,它控制所创建的可行性松弛的类型。如果minrelax = False
,优化返回的模型提供了一个解决方案,可以将违规的代价降至最低。如果minrelax = True
,优化返回的模型可以找到一个最小化原始目标的解决方案,但只能从那些最小化违反成本的解决方案中找到。请注意,feasRelaxS
必须解决一个优化问题才能找到最小可能松弛的时候minrelax = True
,这可能相当昂贵。
注意,这是一个破坏性的方法:它修改调用它的模型。如果您不想修改您的原始模型,请使用复制在调用此方法之前创建副本。
参数:
relaxobjtype:求最小成本松弛时所用的成本函数。
minrelax:实施可行性放宽的类型。
vrelax:表示是否可以放宽变量边界。
crelax:表示是否可以放松约束。
返回值:
零,如果minrelax是假的。如果minrelax为True时,返回值为所执行放松的客观值。如果该值小于0,则表明该方法创建可行性松弛失败。
使用示例:
如果模型。状态= =伽马线暴。不可行:模型。feasRelaxS(1, False, False, True) model.optimize()