在两台不同的计算机上运行的相同版本的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中获得第一个解决方案呢? 感谢您的帮助。
答案 0 :(得分:1)
是的,使用CPLEX可以在不同的计算机上获得不同的解决方案。
具体来说,在determinism and the timing interface的文档中,内容为:
系统时间(如以秒为单位的CPU时间或挂钟时间) 以秒为单位)不是确定性的;换句话说,它可能会有所不同 从一个运行到另一个。例如,其他应用程序的负载 在系统上运行会影响性能,从而影响系统时间。 因此,即使有相同的时间限制,也可能连续两次运行 产生不确定的结果。
如果您想提高获得确定性结果的机会,可以设置deterministic time limit。但是,鉴于您正在两台不同的计算机上运行(具有不同的规格?具有不同的操作系统?),这可能仍然不够。
编辑:
注释中的链接显示如何使用JuMP设置CPLEX参数。例如,可以设置确定性的时间限制,如下所示:
m = Model(with_optimizer(CPLEX.Optimizer, CPX_PARAM_DETTILIM=1000))