gurobi_feasrelax ()
gurobi_feasrelax ()
gurobi_feasrelax | (model, relaxobjtype, minrelax,点球,params=NULL, env=NULL) |
这个函数计算输入的可行性松弛模型论点。可行性松弛是一种模型,当求解时,使解违反原模型的边界和线性约束的数量最小化。您必须提供一个惩罚,以与放松每个单独的约束或约束(通过处罚参数)。这些惩罚有不同的解释方式,取决于价值relaxobjtype论点。
参数:
模型:模型列表必须包含有效的Gurobi模型。看到模型参数部分以获取更多信息。
relaxobjtype:对违规行为进行处罚的方法。
如果您指定relaxobjtype = 0,可行性松弛的目标是使边界违例和约束违例的加权幅度和最小。
如果您指定relaxobjtype = 1,可行性松弛的目标是使边界违例和约束违例的平方和最小。
如果您指定relaxobjtype = 2,可行性松弛的目标是最小化边界和约束违反的加权计数。
在所有情况下,重量都是从处罚$磅,处罚$乌兰巴托和处罚$园艺学会.你可以提供特殊的罚款值正表示不能放松相应的界限或约束。
minrelax:minrelax参数是一个布尔值,它控制所创建的可行性松弛的类型。如果minrelax = False,优化返回的模型提供了一个最小化违规成本的解决方案。如果minrelax = True,优化返回的模型可以找到最小化原始目标的解决方案,但只能从最小化违规成本的解决方案中找到。请注意,gurobi_feasrelax必须解决一个优化问题,以找到最小可能的松弛minrelax = True,这是相当昂贵的。
处罚:处罚参数是列表的列表,具有以下可选的命名组件(默认:all)正):
磅违反每一个下限的惩罚。
乌兰巴托违反每一个上限的惩罚。
园艺学会违反约束的惩罚。
举个例子,如果一个约束penalties.rhs价值p被2.0所违背,它会有贡献吗2 * p以可行性放宽为目标relaxobjtype = 0,2 * 2 * p为relaxobjtype = 1,p为relaxobjtype = 2.
env: env列表,允许您使用Gurobi计算服务器或Gurobi即时云。看到env参数部分以获取更多信息。
返回值:
一个列表包含两个命名组件:
结果$模型的列表变量,如模型论证部分。
结果$feasobj一个标量。如果minrelax = = true这是松弛问题的目标值,否则为0.0。
使用示例:
处罚< -列表()
模型< - gurobi_read(“stein9.mps”)
处罚$磅< -代表(1、长度(模型$磅))
处罚$乌兰巴托< -代表(1、长度(模型$乌兰巴托))
处罚$rhs < -代表(1,长度(模型$rhs))
feasrelaxresult <- gurobi_feasrelax(model, 0, False,罚金)