13.5. 内置硬性限制

硬约束有时可以构建在内,而不是实现硬约束。例如,在 school timetabling 示例中,如果 Lecture A 不应分配给 Room X,但它使用 Solution 上的 ValueRangeProvider 类,Solver 通常会尝试将其分配给 Room X,以发现它会破坏硬约束。在规划实体或过滤的选择中使用 ValueRangeProvider,以定义 Lecture A 应该只分配与 X 不同的 Room A。

这可在一些用例中获得良好的性能,不仅是因为分数计算速度更快,但大多数优化算法将花费较少的时间评估不良的解决方案。但是,这通常不是个好主意,因为交易短期的好处会带来长期的危害。

  • 许多优化算法依赖于自由在更改计划实体时中断硬限制,而不是利用本地 optima。
  • 这两种实施方法都有限制,如功能兼容性和禁用自动性能优化。