我正在使用CPLEX求解一个线性二进制优化模型。我已经用MATLAB和JAVA编写了模型。JAVA和MATLAB编程得到的目标函数的最优值是一致的。然而,最优变量值是不同的。我的模型有几个最优解是可能的。我想知道,在MATLAB和JAVA中应用CPLEX,是否有可能对变量有不同的最优值?
发布于 2014-08-21 13:04:44
是的,完全正确。在这种情况下,这些语言的作用完全不同,而不仅仅是字节代码与编译代码的差异。您可以用C代码编写代码,并通过不同的编译器运行它,并使运行代码的结果有所不同。如果完成任何浮点运算,编译器就会进行不同的优化,以加快代码的速度。理想情况下,在优化后,单个编译器总是以相同的顺序执行浮点运算(因此,即使代码与相同的预期输出略有不同,它也是相同的),这种假设不能在多个编译器/语言/硬件之间保留,因为浮点数是非常挑剔的。
我还没有看过整个文档,但是您可能会对它感兴趣:http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/
https://stackoverflow.com/questions/25435303
复制