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最优性差距;计算为 < span > < /美元跨度> \绿色ObjBound-ObjVal \绿色/ \绿色ObjVal \绿色< span > < / span >美元(< span > < /美元跨度> ObjBound < span > < / span >美元< span > < /美元跨度> ObjVal < span > < / span >美元分别为MIP目标边界和现有解决方案目标)。返回GRB_INFINITY当没有找到现有的解决方案时,当没有可用的目标边界时,或者当当前的现有目标为0时。这只适用于混合整数问题。

运行时
优化所经过的时钟时间(以秒为单位)。

itercount
执行的单工迭代数。

baritercount
执行的障碍迭代数。

nodecount
分支-切割节点数。

farkasproof
法尔卡斯的不可行性违反的严重程度不可行性证明。只有当模型被发现不可行时才可用。请参考FarkasProof获取详细信息。

变量命名组件:

x
计算的解决方案。这个向量的每一列都包含一个元素一个

钢筋混凝土
计算的解决方案的可变减少成本。这个向量的每一列都包含一个元素一个

vbasis
计算出的最优基的可变基状态值。你通常不应该关心这个向量的内容。如果您希望稍后使用高级启动,您只需复制vbasiscbasis为下一个模型将命名组件放入相应的命名组件中。这个向量的每一列都包含一个元素一个

unbdray
无限的射线。提供一个向量,当添加到任何可行解时,产生一个同样可行但改进了目标的新解。仅当发现模型是无边界时可用。这个向量的每一列都包含一个元素一个

线性约束命名组件:

松弛
计算解的约束松弛。的每一行都包含一个元素一个

π
对偶值的计算解(也称为影子价格).的每一行都包含一个元素一个

cbasis
约束基状态值的计算最优基。的每一行都包含一个元素一个

farkasdual
法卡斯不可行性的证明。只有当模型被发现不可行时才可用。请参考FarkasDual获取详细信息。

二次约束命名分量:

qcslack
当前解中的二次约束松弛。对于每个二次约束,这个向量包含一个元素。

qcpi
与二次约束相关的对偶值。对于每个二次约束,这个向量包含一个元素。

解决方案池命名组件:

当在优化调用期间找到多个解决方案时,这些解决方案将在此命名组件中返回。列表中的列表。当出现时,每个列表都有以下命名组件:
objval
对象的客观值< span > < /美元跨度>我< span > < / span >美元th解决方案结果池[[我]]objval.注意,当模型是一个多目标模型,而不是一个单一值时,
结果池[[我]]objval [j]对象的值< span > < / span > j < span >美元< / span >的目标函数< span > < /美元跨度>我< span > < / span >美元th的解决方案。

xn
存储< span > < /美元跨度>我< span > < / span >美元th解决方案结果池[[我]]xn.这个向量的每一列都包含一个元素一个
注意,要查询存储的解决方案数量,可以查询的长度结果

poolobjbound
对于单目标MIP优化问题,这个值给出了一个未发现解的最可能目标的界。和之间的差值objbound前者为未发现解给出了一个客观界,而后者为任何解给出了一个界。

什么是可用的

状态命名组件将在所有情况下出现。它表明Gurobi是否能够找到模型的一个被证明的最优解。在找到模型的解决方案的情况下,最优或其他,objvalx将提供命名组件。

对于线性和二次规划,如果有解,则π钢筋混凝土命名组件也会出现。对于具有二次约束的模型,如果参数qcpdual设置为1时,命名组件qcpi将礼物。如果最终解是a基本解(单形计算),则vbasiscbasis将礼物。如果模型是无界线性规划InfUnbdInfo参数设置为1,命名组件unbdray将礼物。最后,如果模型是一个不可行的线性规划InfUnbdInfo参数设置为1时,命名组件farkasdualfarkasproof将被设置。

对于混合整数问题,没有对偶信息(即。π松弛钢筋混凝土vbasiscbasisqcslackqcpiubdrayfarkasdual)是永远可用的。当找到多个解时,则poolobjbound将提供命名组件。根据状态命名组件值,命名组件nodecountobjboundobjbundcmipgap可用。

对于连续和混合整数模型,在正常执行下,命名组件运行时itercountbaritercount可用。