访问解状态

描述解状态。

调用 solve 将返回一个布尔值,该值指定是否已找到可行解(但不一定是最优解)。要获取有关 CPLEX 在调用 solve 方法期间找到的模型的更多信息,请调用 getStatus 方法。 它返回嵌套枚举 IloAlgorithm_Status 的成员。 这些符号的标准名称具有 IloAlgorithm 前缀。 表 表 1 列出对于所抽取的模型,每种返回状态的含义。
表 1. 关于模型的算法状态和信息
返回状态 抽取的模型
Feasible 已证明可行。 可以查询可行解。
Optimal 已求解为获得最优解。 可以查询最优解。
Infeasible 已证明不可行。
Unbounded 已证明无界。 IloCplex 所采用的无界性表示法不包括已证明模型可行。 相反,已证明的情况是,如果有目标值为 x* 的可行解,那么存在目标值为 x*-1(对于最小化问题)或 x*+1(对于最大化问题)的可行解。
InfeasibleOrUnbounded 已证明不可行或无界。
Unknown 尚未能够处理到足以给出任何有关模型的证明的程度。 一种常见原因是达到时间限制。
Error 尚未能够处理,或者优化期间发生错误。

如您所见,这些状态指示 CPLEX 优化器在最近一次调用 solve 方法期间已能够证明的模型的相关信息。

另外,CPLEX 优化器还将提供有关其如何终止的信息。 例如,因为达到限制,或者因为用户回调终止优化,优化器在只获得可行解(但并非最优解)的情况下终止。 可以通过调用解查询例程来访问更多信息,例如调用 getCplexStatus 方法(它将返回嵌套枚举类型 IloCplex::CplexStatus 的成员),或者调用 cplex.isPrimalFeasiblecplex.isDualFeasible 方法。

有关这些状态码的更多信息,请参阅《CPLEX 参考手册》