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

使用MATLAB中的CPLEX和Java中的CPLEX求解模型是否可能得到不同的结果?,java,matlab,cplex,Java,Matlab,Cplex,我正在用CPLEX求解一个线性二元优化模型。我已经用MATLAB和JAVA编写了模型。JAVA和MATLAB编程得到的目标函数的最优值是相同的。然而,最优变量值是不同的。对于我的模型,可能有几个最佳解决方案。我想知道在MATLAB和JAVA中应用CPLEX后,变量是否可能有不同的最优值 是的,绝对是。在幕后,这些语言的行为完全不同,不仅仅是字节码和编译码的区别。您可以用C代码编写代码,并在不同的编译器中运行,这样运行代码的结果就不同了。如果完成了任何浮点运算,编译器将进行不同的优化以加快代码的速

我正在用CPLEX求解一个线性二元优化模型。我已经用MATLAB和JAVA编写了模型。JAVA和MATLAB编程得到的目标函数的最优值是相同的。然而,最优变量值是不同的。对于我的模型,可能有几个最佳解决方案。我想知道在MATLAB和JAVA中应用CPLEX后,变量是否可能有不同的最优值

是的,绝对是。在幕后,这些语言的行为完全不同,不仅仅是字节码和编译码的区别。您可以用C代码编写代码,并在不同的编译器中运行,这样运行代码的结果就不同了。如果完成了任何浮点运算,编译器将进行不同的优化以加快代码的速度。理想情况下,一个编译器在优化后总是以相同的顺序执行浮点运算(因此,即使代码与相同的预期输出略有不同,它也将是相同的),这种假设不能在多个编译器/语言/硬件之间保持,因为浮点数非常挑剔

我尚未阅读整个文档,但您可能会感兴趣:

非常感谢您。知道这一点很有帮助!阅读@TheBat答案,在CPLEX的帮助部分有一个关于确定性算法的文档。“要强制CPLEX在所有情况下使用确定性算法,请将并行模式参数设置为1”。”。我不知道CPLEX认为。。。