如果当前模型尚未优化,包括其所有组件,我想仅重新优化模型。
尝试使用以下代码:
if (masterProblem.getStatus() == IloCplex.Status.Optimal) {
// do something
} else {
// re-optimize
}
这似乎是错误的,因为
masterProblem.getStatus() == IloCplex.Status.Optimal
将新列添加到模型后,产生true。如果问题是用其所有元素进行优化的话,我想要一个声明,这是真的。
答案 0 :(得分:0)
虽然在手册中,许多函数的描述(例如,IloObjective :: setLinearCoef,IloRange :: setExpr等)表明
...它创建了未记录的类 IloChange 的相应实例,以通知算法有关模型中可提取对象的此更改。
注意:成员函数...通知Concert Technology算法有关此调用对象的此更改。
因为,IloChange是未记录的(并且标题没有提供任何线索)似乎没有可行的方法,但保留一个布尔变量,该变量表明模型是否在最后一次优化后被修改(例如bool isThereAnyChangeOnModel = true;
)。
答案 1 :(得分:0)
这里的问题是我用过
getStatus()
而不是
getCplexStatus()