pulp

https://travis-ci.org/coin-or/pulp.svg?branch=master PyPI PyPI - 下载

PuLP 是一个用 Python 编写的 LP 建模工具。PuLP 可以生成 MPS 或 LP 文件,并调用 GLPK、COIN-OR CLP/CBCCPLEXGUROBIMOSEKXPRESSCHOCOMIPCLHiGHSSCIP/FSCIP 来解决线性问题。

安装

安装 pulp 最简单的方法是通过 PyPi

如果 pip 在你的系统中可用:

python -m pip install pulp

否则,请按照 PyPi 页面上的下载说明进行操作。

如果你想从github安装最新版本,你可以运行以下命令:

python -m pip install -U git+https://github.com/coin-or/pulp

在Linux和OSX系统上,必须运行测试以使默认求解器可执行。

sudo pulptest

示例

请参阅示例目录以获取示例。

PuLP 需要 Python 3.7 或更新版本。

这些示例使用默认的求解器(CBC)。要使用其他求解器,它们必须可用(已安装并可访问)。有关如何操作的更多信息,请参阅 配置求解器指南

文档

文档可以在 https://coin-or.github.io/pulp/ 找到。

使用 LpVariable() 创建新变量。要创建一个变量 0 <= x <= 3:

x = LpVariable("x", 0, 3)

要创建一个变量 0 <= y <= 1:

y = LpVariable("y", 0, 1)

使用 LpProblem() 创建新问题。创建“myProblem”:

prob = LpProblem("myProblem", LpMinimize)

将变量组合以创建表达式和约束,然后将它们添加到问题中:

prob += x + y <= 2

如果你添加一个表达式(不是约束),它将成为目标:

prob += -4*x + y

使用默认包含的求解器来解决:

status = prob.solve()

使用另一个求解器来解决问题:

status = prob.solve(GLPK(msg = 0))

显示解决方案的状态:

LpStatus[status]
> 'Optimal'

你可以使用 value() 获取变量的值。例如:

value(x)
> 2.0

导出的类:

  • LpProblem – 线性规划问题的容器类

  • LpVariable – 添加到 LP 约束中的变量

  • LpConstraint – 一种一般形式的约束

    a1x1+a2x2 …anxn (<=, =, >=) b

  • LpConstraintVar – 用于在列式建模中构造模型的一列

导出的函数:

  • value() – 查找变量或表达式的值

  • lpSum() – 给定一个形式为 [a1*x1, a2x2, …, anxn] 的列表,将构造一个线性表达式,用于约束或变量

  • lpDot() –给定两个形式为 [a1, a2, …, an] 和 [x1, x2, …, xn] 的列表,将构造一个线性表达式,用于约束或变量

构建文档

PuLP 文档是使用 Sphinx 构建的。我们建议使用 虚拟环境 在本地构建文档。

要在终端窗口中构建,请在 PuLP 根目录下运行以下命令

cd pulp
python -m pip install -r requirements-dev.txt
cd doc
make html

将在 build/ 目录内创建一个名为 html 的文件夹。文档的主页是 doc/build/html/index.html,可以在浏览器中打开。

欢迎提供评论、错误报告、补丁和建议。