笔记 / Timefold Solver / 求解算法配置
01 / 04 / 05

穷举搜索与适用边界

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

30 秒速览#

Exhaustive Search 能找到全局最优,但几乎只适合玩具数据、教学和小规模验证。真实排程一般不要指望穷举。

两类穷举#

类型含义
Brute Force枚举所有可能解
Branch and Bound用边界剪枝,但仍是指数级搜索

为什么不适合真实项目#

规划问题的搜索空间随实体和候选值指数增长。多几个订单、多几个产线、多几个时间段,搜索量就可能暴涨。

硬件提升通常追不上组合爆炸。

什么时候可以用#

  • 教学理解搜索空间。
  • 小数据验证模型是否能找到最优。
  • 对比 CH + LS 在小问题上的效果。
  • 为单元测试构造极小场景。

Branch and Bound#

Branch and Bound 会优先探索更有希望的节点,并用 optimistic bound / pessimistic bound 剪掉不可能更好的分支。

它比暴力枚举聪明,但仍然会碰到指数级墙。

排程项目建议#

不要用 ES 做生产排程主算法。更现实的路线:

Construction Heuristic -> Local Search -> Benchmark 调参
text

需要验证最优性时,只在非常小的数据集上用 ES 做对照。

易错点#

  • 看到“全局最优”就想用于生产。
  • 小数据能跑通就误判可扩展。
  • 忽略内存增长。
  • 没有设置 InitializingScoreTrend,导致剪枝弱。

关联笔记#