gurobi ()
gurobi ()
gurobi | (model, params=NULL, env=NULL) |
这个函数优化了给定的模型。用于优化的算法取决于模型类型(连续模型为单纯形或障碍;MIP模型的分支和切割)。一旦成功完成,它将返回列表变量包含解决方案信息。
请咨询本节讨论与使用有限精度浮点运算解决精确定义的数学模型有关的一些实际问题。
参数:
模型:模型列表必须包含有效的Gurobi模型。看到模型参数部分以获取更多信息。
参数个数:参数列表,包含修改后的Gurobi参数列表。看到参数个数参数部分以获取更多信息。
env: env列表,允许您使用Gurobi计算服务器或Gurobi即时云。看到env参数部分以获取更多信息。
使用示例:
Result <- gurobi(model, params$status == 'OPTIMAL'){打印结果$objval)打印(结果$} else {cat('优化返回状态:',formatC(结果$状态),' \ n ')}返回值:
优化的结果
的gurobi函数返回一个列表,并将优化的各种结果存储在其命名的组件中。具体结果取决于所求解模型的类型、所使用的参数和优化的状态。下面是可能在返回结果中可用的已命名组件的列表。在提供清单后,我们将讨论在何种情况下可以提供每种产品。
模型组件命名:
- 状态
- 优化的状态,以字符串形式返回。期望的结果是“最优”,表明该模型得到了最优解。其他状态也是可能的,例如,如果模型没有可行的解决方案,或者您设置了导致提前终止求解器的Gurobi参数。手机万博登录看到状态码节,以了解有关《古鲁布地位法典》的进一步信息。
- objval
- 计算解的客观值。注意对于多目标模型结果$objval是一个向量,在哪里结果$objval[[我]]存储的值模型$multiobj[[我]].
- objbound
- 解的最佳可用界(最小化的下界,最大化的上界)。
- objboundc
- 最优目标上的最优圆界。相比objbound,该属性不利用客观完整性信息来舍入到更紧密的绑定。例如,如果目标是取整数值,而当前的最佳界限是1.5,ObjBound将返回2.0ObjBoundC将返回1.5。
- mipgap
- 当前相对MIP最优缺口;计算为 (和分别为MIP目标界限和现有解决方案目标)。返回GRB_INFINITY当未找到现有解决方案时,当没有可用的目标边界时,或当当前现有目标为0时。这只适用于混合整数问题。
- 运行时
- 优化所经过的墙钟时间(以秒为单位)。
- itercount
- 执行的单纯迭代数。
- baritercount
- 执行的屏障迭代次数。
- nodecount
- 探索的分支和切割节点的数量。
- farkasproof
- 法卡斯不可行性证明中违反不可行性的程度。只有在模型不可行的情况下才可用。请参考FarkasProof获取详细信息。
变量命名组件:
- x
- 计算的解决方案。这个向量的每一列都包含一个元素一个.
- 钢筋混凝土
- 可变降低成本的计算解决方案。这个向量的每一列都包含一个元素一个.
- vbasis
- 可变的基础状态值为计算的最优基础。一般来说,您不应该关心这个向量的内容。如果您希望稍后使用高级启动,您只需复制vbasis和cbasis命名组件转换为对应的下一个模型的命名组件。这个向量的每一列都包含一个元素一个.
- unbdray
- 无限的射线。提供一个向量,当添加到任何可行的解决方案时,将产生一个同样可行但改进目标的新解决方案。仅当发现模型是无界的时可用。这个向量的每一列都包含一个元素一个.
线性约束命名组件:
- 松弛
- 计算解的约束松弛。这个向量的每一行都包含一个元素一个.
- π
- 计算解的对偶值(也称为影子价格).这个向量的每一行都包含一个元素一个.
- cbasis
- 约束基状态值为计算的最优基。这个向量的每一行都包含一个元素一个.
- farkasdual
- 法卡斯不可行性的证明。只有在模型不可行的情况下才可用。请参考FarkasDual获取详细信息。
二次约束命名组件:
- qcslack
- 当前解中的二次约束松弛。对于每个二次约束,这个向量都包含一个分量。
- qcpi
- 与二次约束相关的对偶值。对于每个二次约束,这个向量都包含一个分量。
解决方案池命名组件:
- 池
-
当在优化调用期间发现多个解决方案时,这些解决方案将在此命名组件中返回。列表的列表。当出现时,每个列表都有以下命名组件:
- objval
-
对象的客观值th解决方案结果$池[[我]]$objval.注意,当模型是多目标模型而不是单一值时,
结果$池[[我]]$objval [j]的值的目标函数th的解决方案。 - xn
- 存储th解决方案结果$池[[我]]$xn.这个向量的每一列都包含一个元素一个.
- poolobjbound
- 对于单目标MIP优化问题,这个值给出了未发现解的最佳可能目标的一个界。这个值和的差值objbound前者为未发现的解提供了一个客观的边界,而后者为任何解提供了一个边界。
什么是可用的
的状态命名组件将出现在所有情况下。它表明Gurobi是否能够找到一个被证明的模型的最优解。在找到模型的最佳或其他解的情况下objval和x命名的组件将会出现。
对于线性规划和二次规划,如果有解,则π和钢筋混凝土命名组件也将出现。对于具有二次约束的模型,如果参数qcpdual设置为1时,命名组件qcpi将礼物。如果最终解是a基本解(用单纯形计算),则vbasis和cbasis将礼物。如果模型是一个无界线性规划InfUnbdInfo参数设置为1时,指定的组件unbdray将礼物。最后,如果模型是一个不可行的线性规划InfUnbdInfo参数设置为1,则命名组件farkasdual和farkasproof将被设置。
对于混合整数问题,没有对偶信息。π,松弛,钢筋混凝土,vbasis,cbasis,qcslack,qcpi,ubdray或farkasdual)随时可用。当找到多个解时,池和poolobjbound命名的组件将会出现。根据状态命名组件值,命名组件nodecount,objbound,objbundc和mipgap可用。
对于连续和混合整数模型,在正常执行下,命名组件运行时,itercount和baritercount可用。