已解决模型的CPLEX状态代码,Java-API



如果当前模型(包括其所有组件)尚未优化,我只想重新优化模型。

它尝试使用以下代码:

if (masterProblem.getStatus() == IloCplex.Status.Optimal) {
  // do something
} else {
  // re-optimize
}

这似乎是错误的,因为

masterProblem.getStatus() == IloCplex.Status.Optimal

在我向模型中添加了新列之后,结果为true。我想要一个声明,这是真的,如果问题是用它的所有元素优化的。

尽管在手册中,许多功能的描述(例如,IloObjective::setLinearCoef、IloRange::setExpr等)表明

并且它创建未记录类的适当实例IloChange,以通知算法关于模型中可提取对象的此更改。

注意:成员函数。。。将此调用对象的此更改通知Concert Technology算法。

由于IloChange是未记录的(并且标头没有提供任何线索),似乎没有可行的方法,只能保留一个布尔变量,该变量说明模型是否在上次优化后进行了修改(例如bool isThereAnyChangeOnModel = true;)。

这里的问题是我使用了

getStatus()

而不是

getCplexStatus()

最新更新