我有一个非常大的LP问题保存为lp文件。有没有办法用PuLP将该文件作为LpProblem对象读取?花了很多时间来构建这个问题(大约7个小时),我只想使用我需要的代码来添加更多的约束。
提前致谢!
答案 0 :(得分:3)
在使用PuLP遇到了同样的问题(以及许多其他问题)之后,Freewheel的一群线性解决方案,具有开源意识的工程师开始开发Flipy,这是一个专门用于线性编程的Python软件包。一些关键功能:运行时性能和READ LP功能。随时通过https://github.com/freewheel/flipy
进行检查答案 1 :(得分:1)
据我所知,没有支持读取纸浆中的文件。
文档here表明有一个writeLP方法(这是所有这些解算器所需的核心功能;纸浆似乎很大程度上基于写lp - > lp文件上的调用解算器) ,但没有读/加载方法。
一个可能的原因,尽管许多用户不会使用一些额外的工作,但事实上,人们可能会使用它来加载任何lp文件。这会有问题,因为不同的解算器使用不同的标准(即使格式的核心思想是相同的)。
请记住,可能 lp格式强制执行一些需要转换约束的假设。这意味着,一些基于lp文件的读取方法永远不会让你回到原来的配方,但只是等同于。这进一步增强了这项任务的复杂性。
使用Python的内置序列化(如pickle)可能存储一些LpProblem(不同的方法:从python-perspective保存内部状态)。但这取决于实现,也不会对您的用例有所帮助。
答案 2 :(得分:0)
我发现Python-MIP是用Python读取LP文件的好方法。它也可以正确读取整数/二进制变量,而例如flipy则不能。它比IBM CPLEX或Gurobi的Python API更容易使用。
答案 3 :(得分:0)
这对我加载变量和实例/模型似乎工作正常。
import pulp
var, model = pulp.LpProblem.fromMPS('my_file.mps')