model.feasrelaxs()


model.feasrelaxs()

feasrelax(Lookobjtype,Minrelax,Vrelax,Crelax)

修改了模型对象创建可行性放松。请注意,您需要打电话优化结果计算实际的放松解决方案。还要注意,这是此方法的简化版本 - 使用feasrelax.更好地对放松进行的控制。

可行性放松是一个模型,当解决时,最小化解决方案违反原始模型的线性约束的量。此方法提供了许多用于指定放松的选项。

如果您指定Lookobjtype = 0.,可行性放松的目的是最小化绑定和约束违规的大小的总和。

如果您指定Lookobjtype = 1,可行性放松的目的是最小化绑定和约束违规的平方和。

如果您指定Lookobjtype = 2,可行性放松的目的是最大限度地减少违规的界限和约束的总数。

为了举个例子,如果约束被2.0违反,则会贡献2.0对可行性放松目标Lookobjtype = 0.这将是贡献2.0 * 2.0为了Lookobjtype = 1,它会贡献1.0为了Lookobjtype = 2

minrelax.参数是一个布尔值,可控制创建的可行性放松类型。如果minrelax = false.,优化返回的模型提供了一种最大限度地减少违规成本的解决方案。如果minrelax =真实,优化返回的模型找到一个最小化原始目标的解决方案,但只能从最小化违规成本的解决方案中。注意feasrelax必须解决优化问题,以找到最低可能的放松minrelax =真实,这可能是非常昂贵的。

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

论点:

松弛jtype.:在找到最低成本放松时使用的成本函数。

minrelax.:执行可行性放松的类型。

vrelax.:表示是否可以放宽可变界限。

CRELAX.:表示是否可以放宽约束。

返回值:

minrelax.是假的。如果minrelax.是真的,返回值是放松所执行的客观值。如果值小于0,则表示该方法未能创建可行性放松。

示例用法:

如果model.status == grb.infeasible:model.feasrelaxs(1,false,false,true)model.optimize()