GRBfeasrelax

int GRBfeasrelax( GRBmodel *模型,
int relaxobjtype,
int minrelax,
* lbpen,
* ubpen,
* rhspen,
* feasobjP)

修改输入模型创建一个放松的可行性。注意,您需要调用GRBoptimize结果计算实际轻松的解决方案。

可行性放松是一个模型,当解决,最大限度地减少量的解决方案的范围和线性约束违反原来的模型。这个例程提供了许多选项指定放松。

如果您指定relaxobjtype = 0,可行性放松的目的是最小化加权之和的大小约束和约束违反。的lbpen,ubpen,rhspen参数指定单位成本违反下界,上界,分别和线性约束。

如果您指定relaxobjtype = 1,可行性放松的目的是最小化加权和广场的束缚和约束违反。的lbpen,ubpen,rhspen参数指定系数的广场上下界,上界,分别和线性约束违反。

如果您指定relaxobjtype = 2,可行性放松的目的是最小化加权计算的束缚和约束违反。的lbpen,ubpen,rhspen参数指定违反成本的一个下界,上界,分别和线性约束。

给一个例子,一个2.0违反约束会的贡献2 * rhspen[我]可行性放松的目的relaxobjtype = 0,它将贡献2 * 2 * rhspen[我]relaxobjtype = 1,它将贡献rhspen[我]relaxobjtype = 2

minrelax参数是一个布尔控制创建可行性放松的类型。如果minrelax = 0、优化返回模型给出了一个解决方案,最大限度地减少违规的成本。如果minrelax = 1、优化返回模型找到了一个解决方案,最大限度地减少最初的目标,但只从那些违规的成本最小化的解决方案。请注意,GRBfeasrelax必须找到解决优化问题的最小可能的放松minrelax = 1,这将是相当昂贵的。

在所有情况下,您可以指定一个点球GRB_INFINITY表明一个特定的绑定或线性约束不得违反。

注意,这是一个毁灭性的常规:修改模型传递给它。如果你不愿意修改你的原始模型,使用GRBcopymodel在调用这个例程之前创建一个副本。

返回值:

一个非零返回值表明计算可行性放松时发生问题。指的是错误代码表的列表可能的返回值。细节错误可以通过调用GRBgeterrormsg

参数:

模型:原始模型(不可行)的。这个例程的模型被修改。

relaxobjtype:成本函数时使用找到的最低成本放松。

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

lbpen:相关的处罚违反一个下界。可以,在这种情况下,不允许有违反下界。

ubpen:相关的处罚违反一个上界。可以,在这种情况下,不允许有上界侵犯。

rhspen:相关的处罚违反一个线性约束。可以,在这种情况下,不允许有约束违反。

feasobjP:当minrelax = 1,这将返回的客观价值最低成本放松。

使用示例:

双重处罚[];错误= GRBfeasrelax(模型中,0,0,空,空,罚款,NULL);错误= GRBoptimize(模型);