在同一版本的Julia中,一个优化问题如何可能具有不同的解决方案?

时间:2019-08-05 12:26:03

标签: julia cplex julia-jump

在两台不同的计算机上运行的相同版本的Julia中的优化代码是否可能提供不同的解决方案? 例如在笔记本电脑中运行了一个代码,就获得了这两种解决方案

[712.0, 645.0], [1515.39, 322.625], "R", "V")
 ([1515.4, 322.5], [1683.3, 0.0], "R", "V")

该代码在功能更强大的PC上运行,但解决方案如下:


 ([712.0, 645.0], [NaN, 322.625], "R", "V")
([1515.4, 322.5], [1683.3, 0.0], "R", "V")

请您帮我解决这个问题,以及如何解决这个问题。在这段代码中,NaN是如何发生的?有什么办法可以在PC中获得第一个解决方案呢?  感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

是的,使用CPLEX可以在不同的计算机上获得不同的解决方案。

具体来说,在determinism and the timing interface的文档中,内容为:

  

系统时间(如以秒为单位的CPU时间或挂钟时间)   以秒为单位)不是确定性的;换句话说,它可能会有所不同   从一个运行到另一个。例如,其他应用程序的负载   在系统上运行会影响性能,从而影响系统时间。   因此,即使有相同的时间限制,也可能连续两次运行   产生不确定的结果。

如果您想提高获得确定性结果的机会,可以设置deterministic time limit。但是,鉴于您正在两台不同的计算机上运行(具有不同的规格?具有不同的操作系统?),这可能仍然不够。

编辑:

注释中的链接显示如何使用JuMP设置CPLEX参数。例如,可以设置确定性的时间限制,如下所示:

m = Model(with_optimizer(CPLEX.Optimizer, CPX_PARAM_DETTILIM=1000))