2013-06-21 88 views
0

如果當前模型未包括其所有組件在內的最優化模型,我只想重新優化模型。模型的CPLEX狀態代碼已解決,Java-API

它試圖用下面的代碼:

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

這似乎是錯誤的,因爲

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

產生true,之後我添加了新列模型。我想要一個聲明,那是真的,如果問題的所有元素都被優化了。

回答

0

的問題是,我使用的

getCplexStatus() 

getStatus() 

代替

0

雖然,在手冊中,許多功能的描述(例如,IloObjective :: setLinearCoef,IloRange :: setExpr等)狀態

...和它創造的相應實例未公開的類別IloChange以通知關於模型中可提取對象的這種改變的算法。

注意:成員函數...通知Concert Technology算法關於此調用對象的此更改。

因爲,IloChange是無證(和頭不給任何線索)似乎沒有可行的辦法,但保持它規定的模式是否是最後的優化後修改的布爾變量(例如bool isThereAnyChangeOnModel = true;) 。這裏