Skip to content

OR-Tools 中文导航

原文: Google OR-Tools
分类: 运筹优化
大小: 161 MB
语言: Python/C++/Java


📚 仓库简介

Google OR-Tools 是谷歌开源的运筹学工具集,用于解决各种优化问题。它提供了多种求解器接口,包括谷歌自研的 CP-SAT 求解器以及对 GLOP、SCIP 等的支持。

GitHub: https://github.com/google/or-tools


🔧 核心功能

功能 描述 适用场景
约束规划 (CP) 约束满足和优化 调度、排班
CP-SAT 求解器 混合整数规划求解器 复杂组合优化
线性规划 (LP) GLOP 求解器 资源分配
车辆路径问题 (VRP) 专门的 VRP 求解 物流配送
图优化 最短路径、最大流 网络优化
排程问题 机器调度、作业车间 生产制造

📁 目录结构

or-tools/
├── examples/              # 示例代码
│   ├── python/           # Python 示例
│   │   ├── assignment/   # 分配问题
│   │   ├── bin_packing/  # 装箱问题
│   │   ├── knapsack/     # 背包问题
│   │   ├── routing/      # 路径优化
│   │   ├── scheduling/   # 调度问题
│   │   └── vehicle_routing/ # 车辆路径
│   └── cpp/              # C++ 示例
├── ortools/              # 核心库
│   ├── constraint_solver/ # 约束求解器
│   ├── graph/            # 图算法
│   ├── linear_solver/    # 线性求解器
│   └── sat/              # SAT 求解器
├── Makefile              # 构建文件
└── README.md             # 主文档

🚀 快速开始

安装

# Python 安装
pip install ortools

# 验证安装
python -c "from ortools.linear_solver import pywraplp; print('OK')"

第一个示例:线性规划

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.Add(3 * x - y >= 0)
solver.Add(x - y <= 2)

# 设置目标函数
solver.Maximize(3 * x + 2 * y)

# 求解
status = solver.Solve()

if status == pywraplp.Solver.OPTIMAL:
    print(f'最优解: x={x.solution_value()}, y={y.solution_value()}')
    print(f'目标值: {solver.Objective().Value()}')

运行示例

# 车辆路径问题示例
cd /workspace/code-examples/or-tools
python examples/python/vehicle_routing/cvrp.py

# 调度问题示例
python examples/python/scheduling/jobshop_ft06.py

📖 关键文档

文档 链接 说明
官方文档 developers.google.com/optimization 完整教程
Python API 参考 github.com/google/or-tools/blob/stable/ortools API 文档
示例集合 examples/python/ 200+ Python 示例

💡 典型应用场景

1. 物流配送

# 车辆路径问题
# 最小化配送成本,满足客户需求

2. 生产排程

# 作业车间调度
# 最小化完工时间,满足工序约束

3. 人员排班

# 护士排班问题
# 满足技能需求和工作时间约束

4. 资源分配

# 背包问题
# 最大化价值,满足容量约束

🎓 学习路径

1. 线性规划基础 → examples/python/linear_programming/
2. 约束规划入门 → examples/python/cp_sat/
3. 车辆路径问题 → examples/python/routing/
4. 调度问题实战 → examples/python/scheduling/

📊 与其他工具对比

工具 优势 适用场景
OR-Tools 免费、易用、支持多种求解器 通用优化
Gurobi 性能最强、商业支持 大规模 LP/MIP
CPLEX 企业级、稳定可靠 工业优化
PuLP/Pyomo Python 原生、建模方便 快速原型

🔗 相关资源


本地路径: /workspace/code-examples/or-tools/
创建时间: 2026-06-01
难度: ⭐⭐⭐ (中等)


**OR-Tools 中文导航 | 运筹优化利器** [返回代码索引](../../README_UPDATED.md) | [决策科学资源](../../docs/resources/decision-science-comprehensive-resources.md)