第 11 章 InitializingScoreTrend 类

您可以将 InitializingScoreTrend 类添加到优化算法中,以指定在附加变量初始化时分数的变化,并且已初始化的变量不会改变。某些优化算法,如结构 Heuristics 和 Exhaustive Search,在这些信息可用时更快地运行。

您可以为分数或每个分数级别分别指定以下趋势之一:

  • ANY (默认):初始化额外变量可能会以正数或负面的方式改变分数。这种趋势不提供性能提升。
  • ONLY_UP (rare):初始化额外变量只能以正的形式更改分数。ONLY_UP 趋势需要以下条件:

    • 只有正限制。
    • 初始化下一个变量无法匹配之前初始化的变量匹配的正约束。
  • ONLY_DOWN :初始化额外的变量只能更改分数。ONLY_DOWN 需要以下条件:

    • 只有负限制。
    • 初始化下一个变量无法匹配之前初始化的变量匹配的负约束。

大多数用例只有负限制。许多用例都有仅停机的 InitializingScoreTrend 类,如下例所示:

  <scoreDirectorFactory>
    <constraintProviderClass>org.optaplanner.examples.cloudbalancing.score.CloudBalancingConstraintProvider</constraintProviderClass>
    <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend>
  </scoreDirectorFactory>

另外,您还可以单独指定每个分数级别的趋势,如下例所示:

  <scoreDirectorFactory>
    <constraintProviderClass>org.optaplanner.examples.cloudbalancing.score.CloudBalancingConstraintProvider</constraintProviderClass>
    <initializingScoreTrend>ONLY_DOWN/ONLY_DOWN</initializingScoreTrend>
  </scoreDirectorFactory>