Skip to content

PuLP 中文导航

原文: PuLP - Linear Programming in Python
分类: 运筹优化
大小: 29 MB
语言: Python


📚 仓库简介

PuLP 是一个用 Python 编写的线性规划建模库,可以方便地定义和求解线性规划 (LP) 和整数规划 (MIP) 问题。它支持多种求解器后端,包括 CBC (默认)、GLPK、CPLEX、Gurobi 等。

GitHub: https://github.com/coin-or/pulp


🔧 核心功能

功能 描述 特点
线性规划建模 Pythonic 的建模语法 简洁易读
整数规划 支持 0-1 和整数变量 组合优化
多求解器支持 CBC/GLPK/CPLEX/Gurobi 灵活选择
问题导入 支持 MPS/LP 格式 兼容标准格式
求解器链 自动尝试多个求解器 提高成功率

📁 目录结构

pulp/
├── examples/              # 示例代码
│   ├── test1.py          # 简单示例
│   ├── test2.py          # 整数规划
│   ├── test3.py          # 运输问题
│   └── ...               # 更多示例
├── pulp/                  # 核心库
│   ├── apis/             # 求解器接口
│   ├── constants.py      # 常量定义
│   ├── pulp.py           # 主模块
│   └── sparse.py         # 稀疏矩阵
├── tests/                 # 测试用例
├── requirements.txt       # 依赖
└── README.md              # 主文档

🚀 快速开始

安装

# 安装 PuLP (包含 CBC 求解器)
pip install pulp

# 验证安装
python -c "import pulp; print(pulp.pulpTestAll())"

第一个示例:简单线性规划

import pulp

# 创建问题
prob = pulp.LpProblem("生产优化", pulp.LpMaximize)

# 创建决策变量
x = pulp.LpVariable('产品 A', lowBound=0, cat='Continuous')
y = pulp.LpVariable('产品 B', lowBound=0, cat='Continuous')

# 目标函数:最大化利润
prob += 3*x + 2*y, "总利润"

# 约束条件
prob += x + 2*y <= 14, "资源 1 限制"
prob += 3*x - y >= 0, "技术要求"
prob += x - y <= 2, "市场约束"

# 求解
prob.solve()

# 输出结果
print(f"状态:{pulp.LpStatus[prob.status]}")
print(f"生产产品 A: {x.var_value}")
print(f"生产产品 B: {y.var_value}")
print(f"最大利润:{pulp.value(prob.objective)}")

整数规划示例

import pulp

# 0-1 整数规划
prob = pulp.LpProblem("背包问题", pulp.LpMaximize)

# 决策变量:是否选择物品 i
items = ['A', 'B', 'C', 'D']
values = [10, 20, 30, 40]  # 价值
weights = [2, 3, 5, 7]     # 重量
capacity = 8               # 容量限制

x = pulp.LpVariable.dicts('选择', items, cat='Binary')

# 目标:最大化总价值
prob += pulp.lpSum([values[i]*x[items[i]] for i in range(len(items))])

# 约束:总重量不超过容量
prob += pulp.lpSum([weights[i]*x[items[i]] for i in range(len(items))]) <= capacity

prob.solve()

print("选择的物品:")
for item in items:
    if pulp.value(x[item]) > 0.5:
        print(f"  - {item}")

运行示例

cd /workspace/code-examples/pulp
python examples/test1.py
python examples/test2.py

📖 关键文档

文档 链接 说明
官方文档 pythonhosted.org/PuLP 完整 API
示例代码 examples/ 50+ 示例
求解器指南 docs/solvers.md 求解器配置

💡 典型应用场景

1. 生产计划

# 多产品、多机器、多时期的生产优化
# 最小化成本或最大化利润

2. 运输问题

# 多供应点、多需求点的物流优化
# 最小化运输成本

3. 排班问题

# 员工排班优化
# 满足技能需求和劳动法约束

4. 投资组合

# 资产配置优化
# 最大化收益,控制风险

🎓 学习路径

1. 线性规划基础 → examples/test1.py
2. 整数规划入门 → examples/test2.py
3. 运输问题 → examples/test3.py
4. 实际项目 → 参考 docs/ 中的案例

📊 求解器对比

求解器 类型 速度 适用问题 PuLP 支持
CBC 开源 中等 MIP ✅ 默认
GLPK 开源 较慢 LP/MIP ✅ 支持
CPLEX 商业 很快 LP/MIP/QP ✅ 支持
Gurobi 商业 最快 LP/MIP/QP ✅ 支持
SCIP 学术 MIP ✅ 支持

🔗 相关资源


🛠️ 常见问题

Q1: 如何安装商业求解器?

# Gurobi (需要许可证)
pip install gurobipy

# CPLEX (需要许可证)
pip install cplex

Q2: 如何选择求解器?

# 使用 Gurobi
prob.solve(pulp.GUROBI())

# 使用 CPLEX
prob.solve(pulp.CPLEX())

# 使用 CBC (默认)
prob.solve()

Q3: 如何处理大规模问题?

  • 使用商业求解器 (Gurobi/CPLEX)
  • 利用问题结构 (分解、启发式)
  • 增加计算资源 (并行、分布式)

本地路径: /workspace/code-examples/pulp/
创建时间: 2026-06-01
难度: ⭐⭐ (入门级)


**PuLP 中文导航 | 线性规划建模利器** [返回代码索引](../../README_UPDATED.md) | [决策科学资源](../../docs/resources/decision-science-comprehensive-resources.md)