1

我正在用C++編寫代碼並調用CPLEX來解決它。它很快找到了一個很好的解決方案,但需要很長時間才能改進。所以我想間隙設置爲一個較大的值,終止代碼,這是我使用:如何在用cplex解決問題時設置空隙

cplex_model.setParam(EpGap, 0.01); 

但是,編譯器給了我一個錯誤說EpGap是一個未聲明的標識符。相對差距的默認名稱是什麼?

回答

4

EpGap是類內枚舉的一部分IloCplex

cplex_model.setParam(IloCplex::EpGap, 0.01); 
+0

這消除了錯誤,但代碼仍然運行,即使它小於我的gam!我設置它cplex_model.setParam(IloCplex :: EpGap,1);但現在雖然差距爲0.46%,但它仍在運行! – Anna 2012-03-05 20:22:20

-1

cplex_model.setParam(IloCplex::EpGap, 0.01);是正確

如果EpGap爲1(1%)它進行到下一個可行的解決方案發現,給出了一個對偶1%或更少的差距,所以一旦它低於1%,它應該停止並給你解決方案。所以在你的情況下,它可能從二元差距大於1%到0.43%!