我可以将lp文件读入pulp.LpProblem对象

时间:2017-04-13 19:43:38

标签: python pulp

我有一个非常大的LP问题保存为lp文件。有没有办法用PuLP将该文件作为LpProblem对象读取?花了很多时间来构建这个问题(大约7个小时),我只想使用我需要的代码来添加更多的约束。

提前致谢!

4 个答案:

答案 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')