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. Thelbpen
那ubpen
那andRhspen.
参数分别在下限,上限和线性约束中指定每单位违规的成本。
如果you specifyLookobjtype = 1
,可行性放松的目的是最小化绑定和约束违规的平方的加权之和。这lbpen
那ubpen
那andRhspen.
参数分别指定了下限,上限和线性约束违规的正方形的系数。
如果you specifyLookobjtype = 2
那the objective of the feasibility relaxation is to minimize the weighted count of bound and constraint violations. Thelbpen
那ubpen
那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,则表示该方法未能创建可行性放松。