在MATLAB和CPLEX in Java中使用CPLEX求解模型是否有可能获得不同的结果?

时间:2014-08-21 20:23:27

标签: java matlab cplex

我正在使用CPLEX解决线性二进制优化模型。我在MATLAB和JAVA中编写了模型。 JAVA和MATLAB编程产生的目标函数的最佳值是相同的。然而,最佳变量值是不同的。我的模型可以有几种最佳解决方案。我想知道在MATLAB和JAVA中应用CPLEX是否有可能为变量提供不同的最优值?

1 个答案:

答案 0 :(得分:0)

是的,绝对的。在引擎盖下,这些语言完全不同,而不仅仅是字节代码与编译代码差异。您可以使用C代码编写代码并通过不同的编译器运行它,并使运行代码的结果不同。如果完成任何浮点数学运算,编译器将进行不同的优化以加速代码。理想情况下,单个编译器将始终在优化后以相同的顺序执行浮点数学运算(因此,即使代码与相同的预期输出略有不同,它也会相同),这种假设不能跨多个编译器/语言保持不变/硬件,因为浮点数非常挑剔。

我还没有阅读整篇文档,但您可能会感兴趣: http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/