优化状态代码#
一旦优化调用返回,Gurobi优化器会将模型的状态属性设置为几个可能的值之一。该属性采用整数值,但我们建议您在程序中检查状态时使用预定义的状态常量。每个代码都有一个名称,并且每种语言都需要在此名称前加上前缀以获得适当的常量。您可以通过以下方式从可用的Gurobi接口访问状态代码OPTIMAL
:
语言 |
状态码 |
---|---|
C |
|
C++ |
|
Java |
|
.NET |
|
Python |
|
在MATLAB和R中,状态码以字符串形式返回(例如
'OPTIMAL'
)。
可能的状态码如下。请注意,对于涉及限制或其他优化提前终止的状态,如果报告解决方案的可行性从状态中不明显,您可以通过访问适当的解决方案质量属性来评估可行性。
状态码 |
值 |
描述 |
---|---|---|
|
1 |
模型已加载,但没有可用的解决方案信息。 |
|
2 |
模型已解决至最优(在容忍度范围内),并且可获得最优解。 |
|
3 |
模型被证明是不可行的。 |
|
4 |
模型被证明是不可行或无界的。为了获得更明确的结论,请将DualReductions参数设置为0并重新优化。 |
|
5 |
模型被证明是无界的。重要提示:无界状态表明存在一个无界射线,使得目标可以无限改进。这并不说明模型是否有可行解。如果你需要关于可行性的信息,你应该将目标设为零并重新优化。 |
|
6 |
模型的最优目标被证明比截止参数中指定的值更差。没有可用的解决方案信息。 |
|
7 |
优化终止,因为执行的单纯形迭代总数超过了IterationLimit参数中指定的值,或者因为障碍迭代总数超过了BarIterLimit参数中指定的值。 |
|
8 |
优化终止,因为探索的分支切割节点总数超过了NodeLimit参数中指定的值。 |
|
9 |
优化终止,因为所花费的时间超过了时间限制参数中指定的值。 |
|
10 |
优化终止,因为找到的解的数量达到了SolutionLimit参数中指定的值。 |
|
11 |
优化已被用户终止。 |
|
12 |
由于无法恢复的数值困难,优化已终止。 |
|
13 |
无法满足最优性容差;可获得次优解。 |
|
14 |
进行了异步优化调用,但相关的优化运行尚未完成。 |
|
15 |
|
|
16 |
优化终止,因为消耗的工作量超过了工作限制参数中指定的值。 |
|
17 |
优化终止,因为分配的内存总量超过了SoftMemLimit参数中指定的值。 |