首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PuLP编程输出

PuLP编程输出
EN

Stack Overflow用户
提问于 2018-04-24 16:15:41
回答 1查看 1.5K关注 0票数 1

我正在与一位合作者合作进行一个涉及线性规划的优化项目。我们都用硬币或分支和切割的解决方法来解决问题。我使用基于Python的.LP包构建PuLP文件。我不完全确定协作者如何创建他们的.LP文件(肯定不使用.LP ),但本质上,我们有两个不同的系统为完全相同的问题生成.LP文件,即目标函数、变量、约束是完全相同的。

我通常在Python (myProblm.solve())中解决我的问题,但我也一直在生成一个.LP文件,并从命令行调用一个CBC解决程序来解决这个文件(问题)。接下来,我将从我的系统( Python或命令行)获得的输出与我的协作者获得的输出进行比较。请注意,无论是在PuLP中还是在命令行中,我这边问题的输出都是完全相同的。

我们之间的目标函数的值是很好的匹配,但其他细节并不完全匹配。例如,如果我们要解决这个威士忌混合问题,配料的总成本将是完全相同的,但成分的比例不同。知道为什么会这样吗?

我手动比较了我们的.LP文件,并注意到了一些不同之处。首先,约束和变量的顺序是不同的。换句话说,如果有5个约束,我的文件将它们列为C1,C2,C5,C4,C3,而相同的约束将被列为C1,C2,C3,C4,C5。此外,我的Python代码将所有的数字都舍入10的位置,而他的系统则将它们循环到1的位置。因此,其中一些变量的系数值略有不同。

这些差异在求解器的精确输出中起着作用吗?

另外,下一个问题是:在求解线性规划优化问题时,我们应该做些什么才能得到完全相同的输出?哪些因素影响LP问题的解决?像.LP文件的结构这样的因素是否起作用?如果在不同的计算机上运行相同的LP文件,条件完全相同,我会得到完全相同的输出吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-25 23:05:54

由于具有相同最优目标函数的LP问题有多个解,不同的求解者不能保证返回相同的解。当MIP问题使用分支和边界时,这个问题就变得更加复杂。使用多线程或多处理几乎是不可能的。

总之,为了得到相同的解决方案,要么生成完全相同的LP文件,要么用相同的求解器进行求解。或者改变你的目标函数,这样就只有一个最优的解决方案(也许更喜欢一些配料的排序,而对成分的成本有一点改变)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50006447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档