如果当前模型(包括其所有组件)尚未优化,我只想重新优化模型。
它尝试使用以下代码:
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()