一、开源免费工具
1. GLPK (GNU Linear Programming Kit)
-
特点:
- 支持线性规划(LP)、混合整数规划(MIP)
- 使用MathProg语言建模,可通过
glpsol
命令行求解 - 适合中小规模问题,性能低于商业求解器
-
适用场景:学术研究、小规模优化问题
-
安装:Linux (
sudo yum install glpk
),Windows需手动安装 -
示例:
var x1 >= 0; var x2 >= 0; maximize obj: 0.6 * x1 + 0.5 * x2; s.t. c1: x1 + 2 * x2 <= 1; s.t. c2: 3 * x1 + x2 <= 2; solve; display x1, x2; end;
2. PuLP (Python库)
-
特点:
- 基于Python,支持多种求解器(包括GLPK、CBC)
- 语法简洁,适合熟悉Python的用户
-
适用场景:数据科学、自动化优化任务
-
示例:
from pulp import * prob = LpProblem("Bike Production", LpMaximize) x = LpVariable("x", 0, 3) # Mountain bikes y = LpVariable("y", 0, 4) # Racers prob += 15*x + 10*y, "Profit" prob += x + y <= 5, "Metal Finishing" prob.solve()
3. Google OR-Tools
-
特点:
- 支持线性规划、整数规划、约束编程
- 提供Python、C++、Java等接口
- 适合大规模问题
-
适用场景:物流优化、排产调度
-
安装:
pip install ortools
-
示例:
from ortools.linear_solver import pywraplp solver = pywraplp.Solver.CreateSolver('GLOP') x = solver.NumVar(0, solver.infinity(), 'x') y = solver.NumVar(0, solver.infinity(), 'y') solver.Add(x + 2*y <= 14) solver.Maximize(3*x + 4*y) solver.Solve()
4. PyMathProg
-
特点:
- Python接口,底层调用GLPK
- 支持高级建模(如参数化、动态约束)
-
适用场景:复杂优化模型
-
示例:
python
复制
from pymprog import * begin('bike production') x, y = var('x, y') maximize(15*x + 10*y, 'profit') x <= 3 # Mountain bike limit y <= 4 # Racer limit x + y <= 5 # Metal finishing solve()
二、商业工具(部分提供免费版本)
1. Gurobi
- 特点:高性能,支持大规模LP/MIP
- 免费版:学术免费,商业需付费
- 适用场景:工业级优化
2. CPLEX
- 特点:IBM开发,支持复杂优化问题
- 免费版:学术免费,商业需授权
- 适用场景:金融、供应链优化
3. LINGO
- 特点:支持非线性规划、整数规划
- 免费版:功能受限
- 适用场景:工程优化
三、替代方案对比
工具 | 类型 | 适用规模 | 编程需求 | 优势 |
---|---|---|---|---|
GLPK | 开源 | 中小规模 | 中(需建模) | 免费、轻量 |
PuLP | 开源 | 中小规模 | 高(Python) | 灵活,支持多种求解器 |
Google OR-Tools | 开源 | 大规模 | 中(Python) | 高性能,支持多种优化问题 |
Gurobi | 商业 | 超大规模 | 中 | 速度最快,企业级支持 |
四、如何选择?
- 小规模/个人使用:GLPK 或 PuLP(免费)
- 中等规模/自动化:Google OR-Tools(免费)
- 企业级/高性能需求:Gurobi 或 CPLEX(商业)
如需更详细的安装及使用指南,可参考对应工具的官方文档或社区教程。