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

时间:2013-06-21 22:40:32

标签: cplex

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

尝试使用以下代码:

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

这似乎是错误的,因为

masterProblem.getStatus() == IloCplex.Status.Optimal
将新列添加到模型后,

产生true。如果问题是用其所有元素进行优化的话,我想要一个声明,这是真的。

2 个答案:

答案 0 :(得分:0)

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

  

...它创建了未记录的类 IloChange 的相应实例,以通知算法有关模型中可提取对象的此更改。

     
    

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

  

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

答案 1 :(得分:0)

这里的问题是我用过

getStatus()

而不是

getCplexStatus()