9.2. スコア制約の重み
すべてのスコア制約が同じように重要であるわけではありません。1 つの制約を 1 回破るのが、別の制約を複数回破るのと同じくらい悪い場合、これら 2 つの制約は、同じスコアレベルであっても異なる重みを持ちます。
すべてにコストを割り当てることができるユースケースでは、スコアの重み付けが簡単です。この場合、正の制約により収益が最大化され、負の制約により経費が最小化され、合わせて利益が最大化されます。
あるいは、社会的公平性を確保するためにスコアの重み付けもよく使用されます。たとえば、休日を希望した看護師は、大晦日には通常の日よりも高い料金を支払います。
制約一致の重みは、関係する計画エンティティーによって異なります。たとえば、クラウドバランシング問題では、アクティブなコンピューターのソフト制約一致の重みはそのコンピューターのメンテナンスコストであり、これはコンピューターごとに異なります。
制約に適切な重みを付けることは、他の制約に対して選択とトレードオフを行うことになるため、多くの場合、分析上の決定が困難になります。利害関係者が異なれば、優先順位も異なります。
実装の開始時に制約の重みを議論して時間を無駄にしないでください。代わりに、@constraintConfiguration
アノテーションを追加し、ユーザーが UI を通じて変更できるようにします。次の図に示すように、不正確な重み付けは、平凡なアルゴリズムよりも被害が少なくなります。

ほとんどのユースケースでは、HardSoftScore
などの int
重みを持つスコアを使用します。