grbmodel :: feasrelax()


grbmodel :: feasrelax()

修改了grbmodel.object to create a feasibility relaxation. Note that you need to calloptimize结果计算实际的放松解决方案。

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

如果you specifyLookobjtype = 0.那the objective of the feasibility relaxation is to minimize the sum of the weighted magnitudes of the bound and constraint violations. Thelbpenubpen那andRhspen.参数分别在下限,上限和线性约束中指定每单位违规的成本。

如果you specifyLookobjtype = 1,可行性放松的目的是最小化绑定和约束违规的平方的加权之和。这lbpenubpen那andRhspen.参数分别指定了下限,上限和线性约束违规的正方形的系数。

如果you specifyLookobjtype = 2那the objective of the feasibility relaxation is to minimize the weighted count of bound and constraint violations. Thelbpenubpen那andRhspen.参数分别指定违反下限,上限和线性约束的成本。

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

minrelax.argument is a boolean that controls the type of feasibility relaxation that is created. Ifminrelax = false.,优化返回的模型提供了一种最大限度地减少违规成本的解决方案。如果minrelax =真实、优化返回t模型找到了一个解决方案hat minimizes the original objective, but only from among those solutions that minimize the cost of the violation. Note thatfeasrelax.必须解决优化问题,以找到最低可能的放松minrelax =真实,这可能是非常昂贵的。

此方法有两个签名。更复杂的一个是一个变量和约束列表,以及与放松相应的下限,上限和约束相关联的惩罚。如果其中一个列表中未包含在这些列表中的一个变量或约束,则可能不会违反相关的界限或约束。更简单的签名需要一对布尔参数,vrelax.andCRELAX.那that indicate whether variable bounds and/or constraints can be violated. Ifvrelax./CRELAX.true,然后允许每个绑定/约束分别违反,并且相关成本为1.0。

请注意,这是一种破坏性方法:它修改了调用它的模型。如果您不想修改原始模型,请使用grbmodel.约束uctorto create a copy before invoking this method.

双倍的 feasrelax. int 松弛jtype,
赃物 minrelax.那
int vlen,
const GRBVar* vars,
const double* lbpen,
const double* Ubpen,
int 克伦,
const GRBConstr* 约束,
const double* RHSPEN)
    创建一个可行性放松模型。

    论点:

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

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

    vlen:允许违反其范围的变量列表的长度。

    vars.: Variables whose bounds are allowed to be violated.

    lbpen: Penalty for violating a variable lower bound. One entry for each variable in argumentvars.

    ubpen:违反可变上限的惩罚。参数中每个变量的一个条目vars.

    克伦:允许侵犯线性染色列表的长度。

    约束:允许侵犯的线性约束。

    Rhspen.:违反线性约束的罚款。参数中每个变量的一个条目约束

    返回值:

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

双倍的 feasrelax. int 松弛jtype,
赃物 minrelax.那
赃物 vrelax.那
赃物 CRELAX.)
    Simplified method for creating a feasibility relaxation model.

    论点:

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

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

    vrelax.:表示是否可以放宽可变界限(任何违规行为的成本为1.0。

    CRELAX.:表示是否可以放宽线性约束(任何违规行为的成本为1.0。

    返回值:

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