0

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

它尝试使用以下代码:

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

这似乎是错误的,因为

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

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

4

2 回答 2

0

这里的问题是我使用

getStatus()

代替

getCplexStatus()
于 2014-03-06T18:29:22.660 回答
0

虽然,在手册中,许多函数(例如,IloObjective::setLinearCoef、IloRange::setExpr 等)的描述表明

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

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

因为,IloChange 没有记录(并且标题没有提供任何线索),似乎没有可行的方法,但保留一个布尔变量来说明模型是否在最后一次优化后被修改(例如bool isThereAnyChangeOnModel = true;)。

于 2013-08-31T22:20:55.920 回答