gurobi ()
gurobi ()
gurobi | (模型,params=NULL, env=NULL) |
这个函数优化给定的模型。用于优化的算法取决于模型类型(连续模型为单纯形或障碍;分支-切割MIP模型)。成功完成后,它将返回列表变量包含解决方案信息。
请咨询本节讨论用有限精度浮点算法求解精确定义的数学模型的一些实际问题。
参数:
模型:模型列表必须包含有效的Gurobi模型。看到模型参数部分获取更多信息。
参数个数:参数列表,包含修改后的Gurobi参数列表。看到参数个数参数部分获取更多信息。
env: env列表,允许您使用Gurobi计算服务器或Gurobi即时云。看到env参数部分获取更多信息。
使用示例:
Result <- gurobi(模型,参数)if(结果$status == 'OPTIMAL') {print(结果$objval)打印(结果$} else {cat('优化返回状态:',formatC(result . x)$状态),' \ n ')}返回值:
优化的结果
的gurobi函数返回一个列表,将优化的各种结果存储在其命名组件中。具体的结果取决于所解模型的类型、所使用的参数以及优化的状态。下面是返回结果中可能可用的已命名组件的列表。我们将在提交清单后讨论在何种情况下每个人都是可用的。
模型组件命名:
- 状态
- 优化的状态,作为字符串返回。期望的结果是“最优”,表明找到了模型的最优解。其他状态也是可能的,例如,如果模型没有可行的解决方案,或者设置了一个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可用。