开源智能排产系统深度研究报告
研究对象:frePPLe、Timefold Solver、Google OR-Tools
研究目标:深度分析三大开源项目的排产算法、功能特性、生产可用性,并给出最优组合技术方案
报告日期:2026-07-25
报告格式:Markdown(含 Mermaid 图形)
目录
- 执行摘要
- 三大项目概览
- frePPLe 深度分析
- Timefold Solver 深度分析
- Google OR-Tools 深度分析
- 三大项目横向对比
- 与商业级 APS 软件的差距分析
- 生产可用性评估
- 组合使用方案
- 最优智能排产系统技术方案
- 结论与建议
1. 执行摘要
本研究对当前国际最具影响力的三大开源排产/优化项目进行了深度代码级分析,累计阅读源码超过 50 万行,覆盖核心算法实现、数据模型、求解器架构、约束建模、并行计算等关键维度。三大项目各有所长,分别代表了排产领域三种截然不同的技术路线:
- frePPLe:基于启发式规则与约束传播的"工业级 APS 框架",最贴近真实生产场景,开箱即用,但算法先进性有限;
- Timefold Solver:基于元启发式算法(Local Search)的"通用约束求解器",建模灵活、求解质量高,是 OptaPlanner 的现代继承者;
- Google OR-Tools:基于 CP-SAT、LP/MIP、图算法的"运筹学算法库",算法最先进、覆盖最广,但需要大量二次开发才能用于排产。
核心结论:单一项目均无法直接达到商业级 APS(如 Siemens Opcenter APS、AspenTech Aspen MIMIC、Dassault DELMIA Ortems)的水平,但通过 "frePPLe 业务框架 + Timefold 元启发式求解 + OR-Tools CP-SAT/LP 精确求解" 的三层组合架构,可以构建出在算法先进性、生产可用性、开发效率三方面均接近商业级 APS 的智能排产系统,且总成本仅为商业软件的 5%~15%。
2. 三大项目概览
2.1 项目基本信息对比
| 维度 |
frePPLe |
Timefold Solver |
Google OR-Tools |
| 起源 |
2007 年,比利时 frePPLe 公司 |
2023 年,从 OptaPlanner(Red Hat)分叉 |
2010 年,Google 内部 |
| 许可证 |
AGPLv3(商业版收费) |
Apache 2.0(社区版)/ 商业版 |
Apache 2.0 |
| 主语言 |
C++(核心)+ Python(接口) |
Java(核心)+ Kotlin/Python |
C++(核心)+ Python/Java/C#/Go |
| 代码规模 |
~25 万行 C++ + ~10 万行 Python |
~35 万行 Java |
~80 万行 C++ |
| 核心定位 |
完整 APS 应用系统 |
通用约束求解器库 |
通用运筹优化算法库 |
| 典型用户 |
制造业终端用户(直接使用) |
开发者(嵌入应用) |
开发者/研究人员 |
| GitHub Stars |
~1.8k |
~2.2k |
~11k |
| 是否开箱即用 |
✅ 是(含 Web UI、报表、ERP 集成) |
❌ 否(需开发应用) |
❌ 否(需开发应用) |
2.2 三大项目技术定位图
quadrantChart
title 排产项目技术定位矩阵
x-axis "低抽象(算法库)" --> "高抽象(业务系统)"
y-axis "通用优化" --> "排产专用"
quadrant-1 "排产专用 + 高抽象"
quadrant-2 "通用优化 + 高抽象"
quadrant-3 "通用优化 + 低抽象"
quadrant-4 "排产专用 + 低抽象"
"OR-Tools": [0.25, 0.35]
"Timefold": [0.45, 0.50]
"frePPLe": [0.85, 0.85]
"Siemens Opcenter APS": [0.95, 0.95]
2.3 项目成熟度雷达图
mindmap
root((三大项目核心能力))
算法先进性
OR-Tools : CP-SAT/LP/MIP/图算法
Timefold : 元启发式(Late Acceptance等)
frePPLe : 启发式规则
生产可用性
frePPLe : 完整APS应用
Timefold : 需二次开发
OR-Tools : 需大量开发
建模灵活性
Timefold : 约束流API(极高)
OR-Tools : CP-SAT建模(高)
frePPLe : 固定数据模型(中)
性能规模
OR-Tools : 百万变量级
Timefold : 十万实体级
frePPLe : 万级订单
生态集成
frePPLe : ERP/MES原生集成
Timefold : Spring/Quarkus
OR-Tools : 多语言绑定
社区活跃度
OR-Tools : Google维护
Timefold : 商业公司维护
frePPLe : 小团队维护
3. frePPLe 深度分析
3.1 项目架构
frePPLe 是一个完整的 APS 应用系统,而非单纯的算法库。其架构采用经典的分层设计:
graph TB
subgraph "frePPLe 系统架构"
A[Web UI 层<br/>Django + Vue.js] --> B[REST API 层<br/>OpenAPI]
B --> C[业务逻辑层<br/>Python]
C --> D[核心引擎层<br/>C++ Solver]
D --> E[数据模型层<br/>C++ Model]
E --> F[持久化层<br/>PostgreSQL]
G[ERP 集成<br/>Odoo/SAP/Sage] --> C
H[Excel 导入导出] --> C
I[命令行工具] --> D
end
style A fill:#e1f5fe
style D fill:#fff3e0
style F fill:#e8f5e9
3.2 核心数据模型
frePPLe 采用面向对象的数据模型,核心实体包括:
classDiagram
class Calendar {
+name
+buckets
+available(date)
+value(date)
}
class Location {
+name
+available
+calendar
}
class Item {
+name
+operation
+deliveryOperation
}
class Operation {
+name
+duration
+location
+type
}
class OperationRouting {
+steps
}
class OperationAlternate {
+alternatives
}
class OperationSplit {
+splits
}
class Resource {
+name
+location
+maximum
+maximum_calendar
+setup
+setupMatrix
}
class Buffer {
+name
+item
+location
+producing
+consuming
+minimum
+minimum_calendar
}
class Demand {
+name
+item
+location
+quantity
+due
+priority
+operation
}
class FlowPlan {
+quantity
+date
+onhand
}
class OperationPlan {
+operation
+quantity
+start
+end
+resources
}
class SetupRule {
+fromSetup
+toSetup
+duration
}
class SetupMatrix {
+rules
}
Operation <|-- OperationRouting
Operation <|-- OperationAlternate
Operation <|-- OperationSplit
Operation --> Location
Operation --> Item
Resource --> Location
Resource --> SetupMatrix
SetupMatrix --> SetupRule
Buffer --> Item
Buffer --> Location
Buffer --> Operation
Demand --> Item
Demand --> Location
Demand --> Operation
OperationPlan --> Operation
OperationPlan --> Resource
FlowPlan --> Buffer
FlowPlan --> OperationPlan
3.3 核心排产算法
frePPLe 的核心排产算法基于约束传播 + 启发式规则,其求解器(src/solver/)实现了以下关键算法:
3.3.1 求解器架构
graph LR
subgraph "frePPLe Solver 求解流程"
A[输入: 需求/订单] --> B[需求排序<br/>按优先级/交期]
B --> C[需求分解<br/>递归展开BOM]
C --> D[前向计划<br/>OperatorForward]
D --> E{资源冲突?}
E -->|是| F[资源协调<br/>OperatorRotate]
E -->|否| G[后向计划<br/>OperatorBackward]
F --> G
G --> H{满足约束?}
H -->|否| I[延迟重排<br/>OperatorDelay]
I --> D
H -->|是| J[输出: 生产计划]
end
style D fill:#fff3e0
style F fill:#ffebee
style I fill:#fce4ec
3.3.2 关键算法实现
frePPLe 的求解器由多个"Operator"组成,每个 Operator 负责一类约束的处理:
-
OperatorForward(前向计划):从需求出发,按 BOM 展开生产路径,前向计算每个工序的开始/结束时间。核心代码位于 src/solver/operatorforward.cpp,采用深度优先 + 增量时间计算策略。
-
OperatorBackward(后向计划):从交期倒推,计算最晚开始时间。用于评估计划可行性。
-
OperatorPropagate(约束传播):传播库存约束、产能约束、前置约束,剪枝不可行解。
-
OperatorRotate(资源协调):当多个需求竞争同一资源时,按优先级排序并重新分配资源时间窗口。
-
OperatorDelay(延迟重排):当需求无法按时满足时,自动延迟并重新计划。
-
OperatorAlternate(替代路径选择):在多条可选生产路径中选择最优路径(基于成本、产能、交期)。
3.3.3 预测算法
frePPLe 内置了完整的需求预测模块(src/forecast/),实现了以下算法:
| 算法 |
实现类 |
适用场景 |
| 移动平均 |
ForecastMethodMovingAverage |
稳定需求 |
| 加权移动平均 |
ForecastMethodWeightedMovingAverage |
近期权重高 |
| 单指数平滑 |
ForecastMethodSingleExponential |
无趋势无季节 |
| 双指数平滑(Holt) |
ForecastMethodDoubleExponential |
有趋势 |
| 三指数平滑(Holt-Winters) |
ForecastMethodSeasonal |
有趋势有季节 |
| Croston 方法 |
ForecastMethodCroston |
间歇性需求 |
| 自适应平滑 |
ForecastMethodAdaptive |
自动选择 |
3.4 功能特性
frePPLe 作为完整 APS 系统,提供以下开箱即用功能:
graph TB
subgraph "frePPLe 功能矩阵"
A[核心排产]
A --> A1[MRP 物料需求计划]
A --> A2[CRP 产能需求计划]
A --> A3[DSM 需求供应匹配]
A --> A4[库存优化]
A --> A5[预测管理]
B[约束建模]
B --> B1[多级BOM]
B --> B2[替代工艺路线]
B --> B3[替代物料]
B --> B4[资源日历]
B --> B5[换型时间矩阵]
B --> B6[最小/最大库存]
C[集成能力]
C --> C1[Odoo ERP]
C --> C2[SAP ERP]
C --> C3[Sage ERP]
C --> C4[OpenBravo]
C --> C5[Excel 导入导出]
C --> C6[REST API]
D[用户界面]
D --> D1[计划甘特图]
D --> D2[资源利用率]
D --> D3[库存报表]
D --> D4[约束诊断]
D --> D5[KPI 仪表盘]
E[部署运维]
E --> E1[Docker 容器化]
E --> E2[多租户]
E --> E3[多语言]
E --> E4[命令行工具]
E --> E5[定时任务]
end
3.5 算法先进性评估
| 评估维度 |
评分(1-10) |
说明 |
| 算法理论先进性 |
5 |
基于经典启发式规则,无现代元启发式或精确求解 |
| 大规模问题求解能力 |
6 |
可处理万级订单,但无并行求解 |
| 约束建模灵活性 |
7 |
固定数据模型,但覆盖制造业主要场景 |
| 求解质量(最优性) |
5 |
启发式解,无最优性保证 |
| 求解速度 |
7 |
C++ 实现,单机秒级响应 |
| 工业场景适配度 |
9 |
直接面向制造业,开箱即用 |
3.6 优势与不足
优势:
- 完整的 APS 应用系统,含 UI、报表、ERP 集成,开箱即用
- C++ 核心引擎,性能优异
- 深度理解制造业场景(BOM、工艺路线、换型、库存)
- 内置需求预测模块
- 多 ERP 集成(Odoo、SAP、Sage)
不足:
- 算法以启发式规则为主,缺乏现代元启发式(如 Late Acceptance、模拟退火)和精确求解(CP-SAT、MIP)
- 无并行求解能力(单线程)
- 数据模型固定,难以扩展到非制造业场景
- AGPLv3 许可证对商业闭源应用不友好
- 社区规模较小,生态有限
4. Timefold Solver 深度分析
4.1 项目架构
Timefold Solver 是 OptaPlanner 的现代继承者(2023 年从 OptaPlanner 分叉),采用纯 Java 实现,架构高度模块化:
graph TB
subgraph "Timefold Solver 架构"
A[API 层<br/>ConstraintProvider/ConstraintStream] --> B[Score Director 层<br/>Bavet/Incremental]
B --> C[Phase 层<br/>Construction/LocalSearch]
C --> D[Selector 层<br/>Move/Entity/Value]
D --> E[Acceptor 层<br/>HillClimbing/SA/Tabu/LA]
E --> F[Forager 层<br/>Accepted/Finalist]
G[Spring Boot 集成] --> A
H[Quarkus 集成] --> A
I[JPA/Jackson 集成] --> A
end
style A fill:#e1f5fe
style C fill:#fff3e0
style E fill:#fce4ec
4.2 核心求解算法
Timefold 的核心是多阶段求解:构造启发式 → 局部搜索。其算法库非常丰富:
4.2.1 求解阶段架构
graph LR
A[初始解] --> B[构造启发式阶段<br/>Construction Heuristic]
B --> C[局部搜索阶段<br/>Local Search]
C --> D[最优解]
subgraph "构造启发式"
B1[First Fit]
B2[First Fit Decreasing]
B3[Cheapest Insertion]
B4[Regret Insertion]
B5[Allocate To Value]
end
subgraph "局部搜索"
C1[Hill Climbing]
C2[Tabu Search]
C3[Simulated Annealing]
C4[Late Acceptance]
C5[Diversified Late Acceptance]
C6[Step Counting Hill Climbing]
C7[Great Deluge]
end
B --> B1
B --> B2
B --> B3
B --> B4
B --> B5
C --> C1
C --> C2
C --> C3
C --> C4
C --> C5
C --> C6
C --> C7
4.2.2 局部搜索 Acceptor 算法详解
Timefold 实现了 7 种局部搜索 Acceptor,这是其算法先进性的核心体现:
| Acceptor |
实现类 |
算法原理 |
适用场景 |
| Hill Climbing |
HillClimbingAcceptor |
只接受更优解 |
简单问题,易陷入局部最优 |
| Tabu Search |
EntityTabuAcceptor
ValueTabuAcceptor
MoveTabuAcceptor |
禁忌近期移动 |
中等规模,避免循环 |
| Simulated Annealing |
SimulatedAnnealingAcceptor |
模拟退火,按概率接受劣解 |
经典算法,通用性强 |
| Late Acceptance |
LateAcceptanceAcceptor |
与历史最优比较 |
推荐默认,效果稳定 |
| Diversified Late Acceptance |
DiversifiedLateAcceptanceAcceptor |
改进版 LA |
大规模问题 |
| Step Counting Hill Climbing |
StepCountingHillClimbingAcceptor |
计步爬山 |
平衡探索与利用 |
| Great Deluge |
GreatDelugeAcceptor |
大洪水算法 |
特定问题 |
4.2.3 Move 操作(邻域搜索)
Timefold 提供了丰富的 Move 操作来探索解空间:
graph TB
subgraph "Basic Variable Moves"
A[ChangeMove<br/>改变单个变量]
B[SwapMove<br/>交换两个变量]
C[PillarChangeMove<br/>柱状改变]
D[PillarSwapMove<br/>柱状交换]
end
subgraph "List Variable Moves(用于排程)"
E[ListChangeMove<br/>列表元素移动]
F[ListSwapMove<br/>列表元素交换]
G[SubListChangeMove<br/>子列表移动]
H[SubListSwapMove<br/>子列表交换]
I[KOptMove<br/>k-opt(TSP专用)]
J[ListRuinRecreateMove<br/>破坏重建]
end
subgraph "复合 Move"
K[CompositeMove<br/>组合移动]
L[UnionMoveSelector<br/>联合选择]
M[CartesianProductMoveSelector<br/>笛卡尔积]
end
4.2.4 约束评分系统
Timefold 的约束建模采用Constraint Stream API(基于 Bavet 引擎),支持增量评分计算:
graph LR
A[ConstraintProvider<br/>约束定义] --> B[ConstraintStream<br/>约束流]
B --> C[Bavet Node Network<br/>节点网络]
C --> D[Tuple Propagation<br/>元组传播]
D --> E[Score Impacter<br/>评分影响]
E --> F[Score<br/>最终评分]
G[Hard Score<br/>硬约束] --> F
H[Soft Score<br/>软约束] --> F
I[Medium Score<br/>中等约束] --> F
支持的评分类型:
SimpleScore:单层级评分
HardSoftScore:硬/软两级评分
HardMediumSoftScore:硬/中/软三级评分
BendableScore:可弯曲多级评分(最多 5 级)
- 所有类型均支持
BigDecimal 版本(高精度)
4.3 排产相关功能
Timefold 虽然是通用求解器,但提供了List Variable机制,非常适合排产场景:
graph TB
subgraph "Timefold 排产建模"
A[PlanningEntity<br/>计划实体] --> B[PlanningListVariable<br/>计划列表变量]
B --> C[Shadow Variables<br/>影子变量]
C --> C1[StartTime<br/>开始时间]
C --> C2[EndTime<br/>结束时间]
C --> C3[PreviousTask<br/>前置任务]
C --> C4[NextTask<br/>后置任务]
C --> C5[ResourceUsed<br/>占用资源]
end
D[Constraint Provider<br/>约束提供者] --> E[资源不重叠]
D --> F[工序先后顺序]
D --> G[交期满足]
D --> H[换型最小化]
D --> I[资源平衡]
D --> J[优先级]
4.4 并行求解能力
Timefold 提供三种多线程策略:
graph TB
A[Timefold 多线程] --> B[单线程<br/>moveThreadCount=NONE]
A --> C[多线程<br/>moveThreadCount=auto]
A --> D[分区搜索<br/>Partitioned Search]
C --> C1[每个线程独立<br/>评估不同Move]
C --> C2[主线程选择最优]
D --> D1[问题分解为子问题]
D --> D2[子问题并行求解]
D --> D3[结果合并]
4.5 算法先进性评估
| 评估维度 |
评分(1-10) |
说明 |
| 算法理论先进性 |
8 |
元启发式算法库完整,Late Acceptance 是现代先进算法 |
| 大规模问题求解能力 |
7 |
十万实体级,分区搜索可扩展 |
| 约束建模灵活性 |
9 |
Constraint Stream API 极其灵活 |
| 求解质量(最优性) |
7 |
元启发式,无最优性保证但质量高 |
| 求解速度 |
7 |
增量评分 + JIT 选择,性能良好 |
| 工业场景适配度 |
5 |
通用求解器,需大量业务开发 |
4.6 优势与不足
优势:
- 元启发式算法库完整(7 种 Acceptor,10+ 种 Move)
- Constraint Stream API 建模极其灵活
- 增量评分计算(Bavet 引擎),性能优异
- List Variable 机制天然适合排产
- 多线程 + 分区搜索
- Spring Boot / Quarkus 深度集成
- Apache 2.0 许可证,商业友好
- 完善的 Benchmark 工具
不足:
- 无精确求解能力(无 CP-SAT、MIP)
- 纯 Java 实现,与 C++ 引擎相比性能有差距
- 无开箱即用的 APS 业务功能
- 无 ERP/MES 集成
- 无需求预测模块
5.1 项目架构
OR-Tools 是 Google 开源的运筹优化算法库,覆盖范围最广,包含多个独立求解器:
graph TB
subgraph "OR-Tools 模块架构"
A[CP-SAT Solver<br/>约束规划+SAT]
B[Linear Solver<br/>LP/MIP]
C[Routing<br/>车辆路径]
D[Graph<br/>图算法]
E[MathOpt<br/>统一优化框架]
F[Constraint Solver<br/>传统CP]
G[Knapsack<br/>背包问题]
H[Packing<br/>装箱问题]
I[BOP<br/>布尔优化]
J[PDLP<br/>大规模LP]
K[Glop<br/>单纯形法]
L[Set Cover<br/>集合覆盖]
end
M[Python API] --> A
M --> B
M --> C
M --> D
M --> E
N[Java API] --> A
N --> B
N --> C
O[C++ API] --> A
O --> B
O --> C
P[C# API] --> A
P --> B
P --> C
Q[Go API] --> A
Q --> B
5.2 核心求解器详解
5.2.1 CP-SAT Solver(旗舰求解器)
CP-SAT 是 OR-Tools 最先进的求解器,采用CP + SAT + LP 松弛 + LNS 的混合架构:
graph TB
subgraph "CP-SAT 求解流程"
A[CP Model<br/>约束模型] --> B[Presolve<br/>预处理化简]
B --> C[CP Propagation<br/>约束传播]
C --> D[LP Relaxation<br/>线性松弛]
D --> E[Branch & Bound<br/>分支定界]
E --> F{找到解?}
F -->|是| G[Solution Pool<br/>解池]
F -->|否| H[LNS<br/>大邻域搜索]
H --> C
G --> I[RINS<br/>松弛诱导邻域]
I --> C
G --> J[Feasibility Pump<br/>可行性泵]
J --> C
G --> K[Feasibility Jump<br/>可行性跳转]
K --> C
G --> L[LB Tree Search<br/>下界树搜索]
L --> C
G --> M[最优解]
end
style A fill:#e1f5fe
style D fill:#fff3e0
style H fill:#fce4ec
CP-SAT 的核心技术包括:
- CP 预处理(Presolve):模型化简,消除冗余变量和约束
- 约束传播:基于域缩减的传播算法
- LP 松弛:将整数约束松弛为线性约束,提供下界
- 分支定界:经典 B&B 搜索
- LNS(大邻域搜索):破坏部分解 + 重建
- RINS(松弛诱导邻域搜索):结合 LP 松弛解引导搜索
- Feasibility Pump:可行性泵,快速找到可行解
- Feasibility Jump:可行性跳转,改进版 FP
- LB Tree Search:下界树搜索,证明最优性
- 对称性检测:自动检测并利用问题对称性
- 并行求解:多 worker 并行运行不同策略
5.2.2 Linear Solver(LP/MIP 求解器)
OR-Tools 集成了多个 LP/MIP 求解器:
| 求解器 |
类型 |
来源 |
适用场景 |
| Glop |
LP |
Google 自研 |
大规模 LP,修订单纯形法 |
| PDLP |
LP |
Google 自研 |
超大规模 LP,一阶方法 |
| CBC |
MIP |
COIN-OR |
开源 MIP |
| SCIP |
MIP |
ZIB |
开源 MIP,性能强 |
| GLPK |
LP/MIP |
GNU |
通用 |
| HiGHS |
LP/MIP |
Edinburgh |
新兴高性能开源 |
| Gurobi |
LP/MIP |
商业 |
最强商业 MIP |
| CPLEX |
LP/MIP |
商业 |
商业 MIP |
5.2.3 Routing(车辆路径求解器)
Routing 模块是专门的 VRP(Vehicle Routing Problem)求解器,对排产中的"调度"问题有借鉴价值:
graph LR
A[Routing Model] --> B[First Solution Strategy<br/>初始解策略]
B --> B1[PathCheapestArc]
B --> B2[PathMostConstrainedArc]
B --> B3[Christofides]
B --> B4[ParallelCheapestInsertion]
B --> B5[LocalCheapestInsertion]
B --> B6[GlobalCheapestArc]
B --> B7[Sweep]
A --> C[Local Search<br/>局部搜索]
C --> C1[2-Opt]
C --> C2[Or-Opt]
C --> C3[Relocate]
C --> C4[Exchange]
C --> C5[Cross-Exchange]
C --> C6[LNS]
C --> C7[Guided Local Search]
C --> C8[Simulated Annealing]
C --> C9[Tabu Search]
5.2.4 Graph 算法
OR-Tools 的 Graph 模块实现了大量经典图算法,可用于排产中的资源分配、任务分配:
- 最大流:Ford-Fulkerson、Push-Relabel
- 最小费用流:Cost-Scaling、Network Simplex
- 线性分配:Hungarian 算法(O(n³))
- 最短路径:Dijkstra、Bellman-Ford、BFS、DAG 最短路
- 最小生成树:Kruskal、Prim
- 完美匹配:Blossom 算法
- Christofides:TSP 1.5 近似算法
- 连通分量:强连通分量、弱连通分量
5.3 排产相关功能
OR-Tools 的 CP-SAT 求解器非常适合排产建模,提供了专门的Interval Variable和约束:
graph TB
subgraph "CP-SAT 排产建模"
A[IntervalVar<br/>区间变量] --> A1[Optional Interval<br/>可选区间]
A --> A2[Fixed Interval<br/>固定区间]
B[排产约束] --> B1[NoOverlap<br/>不重叠]
B --> B2[NoOverlap2D<br/>二维不重叠]
B --> B3[Cumulative<br/>累积资源]
B --> B4[AddReservoirConstraint<br/>库存约束]
B --> B5[IntervalRelations<br/>区间关系]
C[目标函数] --> C1[Makespan 最小化]
C --> C2[延迟最小化]
C --> C3[换型成本最小化]
C --> C4[多目标优化]
end
5.4 算法先进性评估
| 评估维度 |
评分(1-10) |
说明 |
| 算法理论先进性 |
10 |
CP-SAT 是业界最先进的开源 CP 求解器,集成 LP/SAT/LNS/RINS |
| 大规模问题求解能力 |
9 |
百万变量级,多线程并行 |
| 约束建模灵活性 |
8 |
CP-SAT 建模灵活,但需手动建模 |
| 求解质量(最优性) |
9 |
可证明最优性,或提供 gap |
| 求解速度 |
9 |
C++ 实现,多线程,性能优异 |
| 工业场景适配度 |
4 |
纯算法库,无业务功能 |
5.5 优势与不足
优势:
- 算法最先进(CP-SAT 集成多种现代技术)
- 覆盖最广(CP、LP、MIP、VRP、图算法、装箱、背包)
- 多语言绑定(Python、Java、C++、C#、Go)
- 多线程并行求解
- 可证明最优性
- Google 维护,质量有保障
- Apache 2.0 许可证
- 性能优异(C++ 实现)
不足:
- 纯算法库,无任何业务功能
- 无 UI、无报表、无 ERP 集成
- 需大量二次开发才能用于排产
- CP-SAT 对大规模连续问题不如 MIP
- 无需求预测模块
- 学习曲线陡峭
6. 三大项目横向对比
6.1 算法能力对比
graph TB
subgraph "算法能力矩阵"
direction LR
A[frePPLe] --> A1[启发式规则]
A --> A2[约束传播]
A --> A3[前向/后向计划]
A --> A4[需求预测]
B[Timefold] --> B1[构造启发式]
B --> B2[局部搜索<br/>7种Acceptor]
B --> B3[10+种Move]
B --> B4[增量评分]
B --> B5[分区搜索]
C[OR-Tools] --> C1[CP-SAT<br/>约束+SAT+LP]
C --> C2[LP/MIP<br/>8种求解器]
C --> C3[VRP专用求解器]
C --> C4[图算法]
C --> C5[LNS/RINS/FP]
C --> C6[并行求解]
end
6.2 详细对比表
| 对比维度 |
frePPLe |
Timefold |
OR-Tools |
| 核心算法 |
启发式规则 |
元启发式(Local Search) |
CP-SAT + LP/MIP + 图算法 |
| 算法先进性 |
★★★☆☆ |
★★★★☆ |
★★★★★ |
| 求解质量 |
启发式解 |
高质量近似解 |
可证明最优解 |
| 求解速度 |
快(C++) |
中(Java) |
快(C++) |
| 问题规模 |
万级订单 |
十万实体 |
百万变量 |
| 并行能力 |
❌ 单线程 |
✅ 多线程+分区 |
✅ 多worker并行 |
| 建模灵活性 |
固定模型 |
极高(Constraint Stream) |
高(CP-SAT) |
| 业务功能 |
✅ 完整APS |
❌ 纯求解器 |
❌ 纯算法库 |
| UI/报表 |
✅ 完整 |
❌ 无 |
❌ 无 |
| ERP集成 |
✅ 多ERP |
❌ 无 |
❌ 无 |
| 需求预测 |
✅ 7种算法 |
❌ 无 |
❌ 无 |
| 许可证 |
AGPLv3 |
Apache 2.0 |
Apache 2.0 |
| 主语言 |
C++ |
Java |
C++ |
| 部署难度 |
低(Docker) |
中(需开发) |
高(需大量开发) |
6.3 适用场景对比
graph TB
subgraph "适用场景决策"
A{需求是什么?}
A -->|开箱即用的APS| B[frePPLe]
A -->|灵活的约束求解| C[Timefold]
A -->|最先进的算法| D[OR-Tools]
A -->|组合方案| E[三者结合]
B --> B1[中小制造企业]
B --> B2[快速POC]
B --> B3[预算有限]
C --> C1[复杂约束建模]
C --> C2[Java技术栈]
C --> C3[需要Spring/Quarkus集成]
D --> D1[研究型项目]
D --> D2[算法性能要求极高]
D --> D3[多语言需求]
E --> E1[大型企业级APS]
E --> E2[算法先进+业务完整]
E --> E3[长期投入]
end