第2章 Red Hat build of OptaPlanner 8.38 の新機能

このセクションでは、Red Hat build of OptaPlanner 8.38 の新機能について説明します。

注記

Bavet は、高速スコア計算に使用される機能です。Bavet は現在、OptaPlanner のコミュニティーバージョンでのみ利用できます。Red Hat build of OptaPlanner 8.38 では使用できません。

2.1. ピラーの移動と周辺の選択のパフォーマンスの向上

OptaPlanner は、複数のピラー移動セレクターが事前計算されたピラーキャッシュを共有し、移動セレクターごとにピラーキャッシュを再計算する代わりにそれを再利用できる状況を自動検出できるようになりました。PillarChangeMovePillarSwapMove など のピラーの移動を組み合わせると、パフォーマンスが大幅に向上するはずです。

これは、周辺の選択範囲を使用する場合にも当てはまります。OptaPlanner は、事前計算された距離行列が複数の移動セレクター間で共有できる状況を自動検出できるようになり、メモリーと CPU 処理時間を節約できます。

この機能強化の結果、次のインターフェイスの実装はステートレスになることが期待されます。

  • org.optaplanner.core.impl.heuristic.selector.common.nearby.NearbyDistanceMeter
  • org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionFilter
  • org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionProbabilityWeightFactory
  • org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionSorter
  • org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionSorterWeightFactory

一般に、ソルバー設定がユーザーにインターフェイスの実装を要求する場合、その実装はステートレスであるか、外部状態を含めようとしないことが期待されます。これらのパフォーマンスの向上により、ソルバーが適切と判断した場合にこれらのインスタンスを再利用するようになるため、この要件に従わない場合、微妙なバグやスコアの破損が発生します。