笔记 / Timefold Solver / 配置与运行
01 / 01 / 01

TimeFold 是什么与适用场景

Timefold Solver 是一个嵌入式规划求解器,用来在大量可行/不可行方案中搜索“尽量好的方案”。它不负责替你发现业务规则,而是要求你把业务对象、可变决策和约束评分讲清楚。

状态
持续整理
来源
Obsidian
创建
2026/05/14
公开整理
2026/07/31

30秒速览#

Timefold Solver 是一个嵌入式规划求解器,用来在大量可行/不可行方案中搜索“尽量好的方案”。它不负责替你发现业务规则,而是要求你把业务对象、可变决策和约束评分讲清楚。

最重要的一句话:Timefold 优化的是你写进 Score 的东西,不是你脑子里默认重要的东西。

它适合什么问题#

适合 Timefold 的问题通常有这些特征:

  • 有一批任务、订单、车辆、员工、工件或资源需要分配。
  • 决策变量是离散的,例如分配到哪台机器、排在第几个、选择哪个时间段。
  • 约束很多,且硬约束和软目标混在一起。
  • 业务希望在有限时间内得到一个足够好的方案,而不是穷举最优解。

典型场景:

  • 生产排程:订单分配到产线,并决定顺序。
  • 车辆路径:车辆访问客户的顺序和分配。
  • 员工排班:班次、人员、技能、休息和公平性。
  • 装箱/分配:物品放入有限容量的资源中。

它不适合什么问题#

  • 规则很少、直接排序或贪心就能稳定解决的问题。
  • 纯连续优化问题,例如只求一组连续参数最优。
  • 业务目标尚未定义清楚,无法写出约束评分的问题。
  • 需要严格证明全局最优,且问题规模又很大的场景。

和普通业务代码的区别#

普通业务代码通常是“按规则一步步构造结果”。Timefold 的方式是:

  1. 你给出模型:哪些对象能被改变。
  2. 你给出评分:什么方案更好。
  3. 求解器不断尝试改变方案。
  4. 分数更高的方案被保留,直到时间或条件结束。

因此,Timefold 项目的成败关键不在“调用 Solver”,而在:

  • 领域模型是否表达了真实决策。
  • 约束是否覆盖了业务底线和优化目标。
  • 分数权重是否能表达优先级。
  • 数据规模是否在可搜索范围内。

在生产排程里的直觉#

以订单排程为例:

  • 订单/任务 往往是规划实体,因为它们的位置、产线、时间会变。
  • 产线/模具/产品规格/换型矩阵 往往是问题事实,因为求解过程中它们不变。
  • 订单属于哪条产线、排在谁后面 是规划变量。
  • 开始时间、结束时间、所属产线 可以由规划变量推导,适合作为影子变量。
  • 延期、换型时间、产线不兼容、资源冲突 是约束。

易错点#

易错点正确理解
以为求解器会自动懂业务业务必须被写成约束和分数
只建模时间,不给换型惩罚求解器只优化分数,时间正确不代表换型会少
把所有规则都做成硬约束可能导致无可行解,软目标也失去优化空间
只在小数据集上验证小数据表现好不代表生产规模能跑

关联笔记#

待补#

  • 对照 2.0.0 文档补“PlanningAI”和开源 Solver / ready-made REST model 的边界。