当前位置: 首页 > 知识库问答 >
问题:

Cplex给出了两种不同的结果?

何灼光
2023-03-14

我在Cplex中使用Python API来解决一个线性编程问题。使用Cplex时,我的结果如下:

但随后我将LP prolem保存为LP文件,并再次使用Cplex进行求解,结果与第一个略有不同:

3601.png" width="100%" height="100%" />

下面是我的功能:

def SubProblem(myobj,myrow,mysense,myrhs,mylb):
c = cplex.Cplex()
c.objective.set_sense(c.objective.sense.minimize)
c.variables.add(obj = myobj,lb = mylb)
c.linear_constraints.add(lin_expr = myrow, senses = mysense,rhs = myrhs)
c.solve()
lpfile = "Save_models\clem.lp"
c.write(lpfile)
print("\nFile '%s' was saved"%(lpfile))

共有2个答案

权浩阔
2023-03-14

只是为了补充rkersh的评论。CPLEX在确定性模式下运行时,每次应给出相同的答案。然而,如果你把模型写成一个LP文件,你会在一些数字上失去一些精度,这会干扰问题,即使只是轻微的,这通常会导致不同的答案。SAV格式是最接近保存时CPLEX中模型的真实副本的格式。但即使如此,我也不确定CPLEX通过交互式解算器的行为是否与通过API的行为相同。如果您在相同的硬件上运行它们,我希望它们是相同的,但是在不同的机器上,您可能仍然会得到不同的行为(不同的cpu、内存等)

黄彬
2023-03-14

如果我理解正确,您将使用第一次运行中导出的LP文件第二次求解。写入LP格式时,可能会降低精度。尝试使用SAV格式。

 类似资料:
  • 当我跑的时候。使用CPLEX的NET 4应用程序,我在不同的机器上得到不同的输出。在我的开发机器上,CPLEX输出一个结果(异常并卡在某个大值上),在所有其他机器上,结果都可以。 首先,我认为它与操作系统有关,因为我的开发机器上同时有视窗7 x64和视窗8 x64,所以我尝试在两个系统上运行应用程序。结果是一样的——有缺陷。 然后我试着在两台不同的台式机上运行,效果很好。我甚至在虚拟机内部进行了尝

  • 我试图通过HTTP向服务器发送一个SHA256哈希字符串,在那里我想通过执行SHA256哈希并验证两个匹配来进行身份验证。出于测试目的,我使用相同的字符串,但是结果不匹配。这可能是我的base64_encode调用的默认编码方案吗?谢谢 在PHP中,我正在做: 我在做什么

  • 让我们有一个简单的测试代码: 在Oracle/SUN中,java输出为(带空格): 4. 但在IBM java中,我得到了: 四千 我的java: java版本“1.7.0_51”java(TM)SE运行时环境(构建1.7.0_51-b13)java热点(TM)64位服务器虚拟机(构建24.51-b03,混合模式) IBM java: java版本java版本"1.6.0"Java(TM)SE运行

  • 在使用docplex解决优化问题后,我在访问解决方案时遇到了问题。 下面我发布了我使用的完整代码,只要我得到结果(结果有注释): 优化问题在本文的优化后问题中得到了充分的解释 所以我有两个问题: 我不明白为什么要使用mdl函数。print_solution()给出的结果与我在mdl中枚举解决方案时的结果不同。解决方案 提前感谢您的帮助。问候。

  • 问题内容: 当我运行此代码时: 我在Eclipse的JUnit运行程序中得到以下结果: 这导致从命令行Maven: 如您所见,时间有所不同。 (同一台计算机,相同的Java版本,可能相隔30秒)。为什么? [编辑] 时区也不同。从Maven 启动和从Eclipse 启动时,为什么要使用Java ? 或换一种说法:如何强制Java使用两者? 问题答案: 要指定默认时区,您可以设置系统属性。您可以通过

  • 我在这里试图添加一个节点到一个单一的链接列表 这个有效,但如果我这么做- 有些人认为列表现在只包含一个节点