gurobi()

gurobi()

gurobi (模型,params=NULL, env=NULL)

这个函数优化给定的模型。用于优化的算法取决于模型类型(连续模型为单纯形或障碍;分支-切割MIP模型)。成功完成后,它将返回列表变量包含解决方案信息。

请咨询本节讨论使用有限精度浮点算术求解精确定义的数学模型相关的一些实际问题。

论点:

模型: 该模型列表必须包含有效的Gurobi模型。看看模型参数部分获取更多信息。

参数个数:参数列表如果提供的时候,包含修改后的Gurobi参数列表。看看参数个数参数部分获取更多信息。

env.:env.列表如果提供的时候,允许您使用Gurobi Compute Server或Gurobi Instant Cloud。看看env.参数部分获取更多信息。

使用示例:

结果< -  gurobi(模型,参数)if(结果$status =='最佳'){print(结果$objval)打印(结果$x)}否则{cat('优化返回状态:',formatc(结果$状态),'\ n')}
返回值:

优化的结果

gurobi函数返回A.列表,将优化的各种结果存储在其命名组件中。具体的结果取决于所解模型的类型、所使用的参数以及优化的状态。下面是返回结果中可能可用的已命名组件的列表。我们将在提交清单后讨论在何种情况下每个人都是可用的。

模型名为组件:

状态
优化的状态,作为字符串返回。期望的结果是'最佳',这表明找到了对模型的最佳解决方案。其他状态是可能的,例如,如果模型没有可行的解决方案,或者设置导致早期求解器终止的Gurobi参数。手机万博登录看看状态码部分获取关于Gurobi状态代码的进一步信息。

objval
计算解的客观值。注意,对于多目标模型结果$objval将是矢量,在哪里结果$objval[[我]]存储值模型$multiobj [[i]]

objbound
解的最佳可用界(下界为最小化,上界为最大化)。

objboundc.
最佳目标的最佳无序界限。与此相反objbound,该属性没有利用客观完整性信息来将其舍入一个更紧的边界。例如,已知目标取整数值,且当前最佳边界为1.5,ObjBound将返回2.0ObjBoundC将返回1.5。

mipgap
目前的相对MIP最优性差距;计算为 <span> $ </ span> \ vert objbound-objval \ vert / \ vert objval \ vert <span> $ </ span>(< span > < /美元跨度> ObjBound < span > < / span >美元<span> $ </ span> objval <span> $ </ span>是MIP目标绑定和现任解决方案目标)。回报grb_infinity当没有找到现有的解决方案时,当没有可用的目标边界时,或者当当前的现有目标为0时。这只适用于混合整数问题。

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

itercount
执行的单纯性迭代数。

BariterCount.
执行的障碍迭代数。

nodecount
探索分支和剪切节点的数量。

farkasproof
Farkas Iffisility证明中的不可行性违规程度。只有在发现模型是不可行的。请参阅FarkasProof有关详细信息。

变量命名组件:

X
计算的解决方案。此矢量包含每列的一个条目一个

rc.
可变降低计算解决方案的成本。此矢量包含每列的一个条目一个

vbasis
可变基础状态值的计算最优基础。您通常不应该关心此矢量的内容。如果您希望稍后使用高级开始,您只需复制vbasiscbasis为下一个模型将命名组件放入相应的命名组件中。此矢量包含每列的一个条目一个

unbdray
无限的射线。提供一种向量,当添加到任何可行的解决方案时,产生一个也是可行的新解决方案,但提高了目标。仅在发现模型被发现无限制时才可用。此矢量包含每列的一个条目一个

线性约束命名组件:

松弛
计算解的约束松弛。此矢量包含每行的一个条目一个

π
计算解决方案的双重值(也称为影子价格)。此矢量包含每行的一个条目一个

cbasis
约束基础状态值的计算最优基础。此矢量包含每行的一个条目一个

farkasdual
Farkas不可用证明。只有在发现模型是不可行的。请参阅FarkasDual有关详细信息。

二次约束命名组件:

qcslack
当前解决方案中的二次约束松弛。此矢量包含每个二次约束的一个条目。

qcpi
与二次约束相关的对偶值。此矢量包含每个二次约束的一个条目。

解决方案池命名组件:

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

XN.
存储< span > < /美元跨度>我< span > < / span >美元-th解决方案结果$池[[i]]$XN.。此矢量包含每列的一个条目一个
请注意,要查询存储的解决方案数,您可以查询的长度结果$水池

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

什么是可用的

状态在所有情况下都将存在命名组件。它表示Gurobi是否能够找到模型的证明最佳解决方案。在找到模型解决方案的情况下,最佳或以其他方式,objvalX将存在命名组件。

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

对于混合整数问题,没有对偶信息(即。π松弛rc.vbasiscbasisqcslackqcpiUbdray.farkasdual)永远可用。找到多种解决方案时,水池poolobjbound将存在命名组件。取决于状态命名组件值,命名组件nodecountobjboundobjbundc.mipgap可用。

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