13.6. 分数陷阱


确保您的任何分数限制都不会导致分数陷阱。陷阱的 score 约束对多个约束匹配应用相同的权重。将这个组约束匹配在一起,并为该约束创建一个 flatlined score 功能。这可能导致解决方案状态,其中必须完成几项移动才能解决或降低该单一约束的权重。以下示例演示了分数陷阱:

  • 每个操作表都需要两个文档,但您一次只移动一个文档。solver 没有激励地将文档组织移到没有文档人员的表中。要修复这个问题,请在分数函数中仅有一个 doctors 以上的表。
  • 两个考试必须同时进行,但您一次只能移动一个考试。解决者必须在不移动同一迁移的情况下,将一项考试移至另一个时间插槽。要解决此问题,请添加一个粗粒度迁移,同时移动两个考试。

下图显示了分数陷阱:

如果蓝色项目从过载计算机移到空计算机,则硬分数应该提高。但是,陷阱得分的实施无法做到这一点。solver 最终应该会遇到这个陷阱,但会花费大量努力,特别是在过载计算机上有更多进程时。在这段操作之前,实际上可能开始将更多的进程移到该超载计算机中,因为这样做没有损失。

注意

避免分数陷阱并不意味着您的分数功能应该足够智能,以避免本地 optima。保留为优化算法以处理本地 optima。

避免分数陷阱意味着可以单独避免每个分数约束。

重要

始终指定责任程度。业务经常表示"如果解决方案可行,则这并不重要"。 虽然这对业务而言是如此,对分数计算而言并不重要,因为从了解解决方案不良的分数计算中受益。在实践中,软限制通常以自然方式执行此操作,而这只是出于硬限制而做的一个问题。

可以通过多种方式处理分数陷阱:

  • 改进 score 约束,以区分分数权重。例如,为每个缺少的 CPU 而不是 -1hard (如果没有任何 CPU )进行 penalize -1hard
  • 如果业务视角不允许更改分数约束,请添加一个较低分数,分数约束。例如,如果缺少任何 CPU,在每个缺少的 CPU 上 penalize -1 subsoft。业务会忽略子软分数级别。
  • 使用现有的细粒度移动添加粗粒度移动和取消选择它们。粗粒度移动有效执行多次移动,通过单一移动直接获得分数陷阱。例如,将多个项从同一容器移动到另一个容器。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat