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

2024-04-20 09:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Cplex中使用pythonapi来解决一个线性规划问题。在使用Cplex时,我得到了以下结果:

The result is solved directly by Python API

但后来我把我的LP prolem保存为一个LP文件,并使用Cplex再次求解,结果与第一个有点不同:

enter image description here 有人给个解释吗?在

以下是我的职能:

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))

Tags: 文件addpythonapilp职能objectivesensemyobj
2条回答

如果我理解正确的话,您是在第二次使用第一次运行中导出的LP文件来解决问题。写入LP格式时,精度可能会降低。请改为使用SAV格式。在

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

相关问题 更多 >