gurobi()

gurobi()

gurobi ( 模型 )
gurobi (模型,参数)
gurobi (模型,Params,ENV)

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

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

论点:

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

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

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

使用示例:

Result = gurobi(模型,参数);如果比较字符串(结果。状态那'最佳'); fprintf('Optimal objective: %e\n', result.objval); disp(result.x) else fprintf('Optimization returned status: %s\n', result.status); end
返回值:

优化的结果

gurobi函数返回A.塑造,具有优化的各种结果存储在其字段中。可用的具体结果取决于解决的模型类型,所使用的参数以及优化的状态。以下是返回结果中可能可用的字段列表。我们将讨论在提交清单后的每个情况下的情况。

模型字段:

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

objval
计算解的客观值。注意,对于多目标模型结果.Objval.将是矢量,在哪里result.objval(我)存储值model.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解决方案结果.Pool(i).objval。请注意,当模型是多目标模型时,而不是单个值,
结果.Pool(i).objval(j)存储价值< span > < / span > j < span >美元< / span >的目标函数< span > < /美元跨度>我< span > < / span >美元th的解决方案。

XN.
存储< span > < /美元跨度>我< span > < / span >美元-th解决方案result.pool .xn(我)。此矢量包含每列的一个条目一种
请注意,要查询存储的解决方案数,您可以查询的长度结果.Pool.pool.

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

什么是可用的

状态Field将在所有情况下出现。它表明Gurobi是否能够找到模型的一个被证明的最优解。在找到模型的解决方案的情况下,最优或其他,objvalX字段将存在。

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

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

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