2016-09-30 119 views
0

我使用Ilog Cplex和C++實現了我的數學模型。我的大部分決策變量在最優解中都有分數值。它們中的一些非常小,cplex將它們輸出爲0.有沒有辦法提高精度,以便我仍然可以看到這些變量的值?計算精度C++ Cplex

此外,當我使用cplex.getBestObjValue(),它給了我「-Inf」。 (這是一個最大化問題。)

回答

0

,你可以嘗試使用設置IloCplex ::帕拉姆::重點::數值

強調在數值上不穩定或疑難問題的精度。通過此參數,您可以向CPLEX指定它應該強調數值困難或不穩定問題的精度,從而在時間和內存方面進行性能折衷。

關於你的第二個問題,你的模型是LP嗎?

問候

+0

感謝您的回答。當我使用IloCplex :: Param :: Emphasis :: Numerical設置時,如何指定精度?你能給我一個如何使用這個參數的例子嗎?是的,我的模型是一個LP。 – user2147241

+0

默認值爲0:不強調數值精度;但是1意味着在計算中要格外小心 –

1

具有整型變量是接近(但不完全)的整數值是很正常的值。 CPLEX具有完整性容差,因此這些值被接受爲足夠接近正確的整數值。只需使用標準的C++輸出函數將這些值輸出到任何你想要的精度。

大多數情況下這不是問題,但如果需要,您可以將完整性公差設置爲較小的值。我通常將這些值舍入到最接近的整數值,並將其用作我的解決方案。您也可以嘗試使用固定爲四捨五入整數值的決策變量重新解決模型,以確保解決方案真正有效。如果您不確定這是否足夠,請嘗試亞歷克斯的數字精度強調建議。