簡體   English   中英

通過使用MATLAB中的CPLEX和Java中的CPLEX求解模型是否可以獲得不同的結果?

[英]Is it possible to get different results from solving a model using CPLEX in MATLAB and CPLEX in Java?

我正在使用CPLEX解決線性二元優化模型。 我已經在MATLAB和JAVA中對模型進行了編碼。 JAVA和MATLAB編程產生的目標函數的最佳值相同。 但是,最佳變量值不同。 對於我的模型,可能有幾種最佳解決方案。 我想知道是否可能在MATLAB和JAVA中應用CPLEX導致變量具有不同的最佳值?

是的,一點沒錯。 在幕后,這些語言的行為完全不同,而不僅僅是字節碼與編譯碼的不同。 您可以用C代碼編寫代碼,並通過不同的編譯器運行它,並使代碼運行的結果不同。 如果完成了浮點數學運算,則編譯器將進行不同的優化以加速代碼。 理想情況下,在優化之后,單個編譯器將始終以相同的順序執行浮點數學運算(因此,即使代碼具有相同的預期輸出而略有不同,也將是相同的),這種假設不能在多個編譯器/語言之間保持不變/硬件,因為浮點數非常挑剔。

我尚未閱讀整個文檔,但您可能會對它感興趣: http : //gafferongames.com/networking-for-game-programmers/floating-point-determinism/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM