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.0relaxobjtype = 1,它会有所贡献1.0relaxobjtype = 2

minrelax参数是一个布尔值,它控制所创建的可行性松弛的类型。如果minrelax = False,优化返回的模型提供了一个解决方案,可以将违规的代价降至最低。如果minrelax = True,优化返回的模型可以找到一个最小化原始目标的解决方案,但只能从那些最小化违反成本的解决方案中找到。请注意,feasRelaxS必须解决一个优化问题才能找到最小可能松弛的时候minrelax = True,这可能相当昂贵。

注意,这是一个破坏性的方法:它修改调用它的模型。如果您不想修改您的原始模型,请使用复制在调用此方法之前创建副本。

参数:

relaxobjtype:求最小成本松弛时所用的成本函数。

minrelax:实施可行性放宽的类型。

vrelax:表示是否可以放宽变量边界。

crelax:表示是否可以放松约束。

返回值:

零,如果minrelax是假的。如果minrelax为True时,返回值为所执行放松的客观值。如果该值小于0,则表明该方法创建可行性松弛失败。

使用示例:

如果模型。状态= =伽马线暴。不可行:模型。feasRelaxS(1, False, False, True) model.optimize()