第8章 OptaPlanner ソルバー


ソルバーは、計画の問題に対する最適で最適なソリューションを見つけます。ソルバーで解決できる計画問題インスタンスは度に 1 つずつです。ソルバーは、SolverFactory メソッドを使用して構築されます。

public interface Solver<Solution_> {

    Solution_ solve(Solution_ problem);

    ...
}
Copy to Clipboard

スレッドセーフであることが javadoc に具体的に記載されているメソッドを除いて、ソルバーには単一のスレッドからアクセスする必要があります。solve() メソッドは、現在のスレッドを占有します。スレッドを占有すると、REST サービスの HTTP タイムアウトが発生する可能性があり、複数のデータセットを並行して解決するために追加のコードが必要になります。このような問題を回避するには、代わりに SolverManager を使用してください。

8.1. 問題の解決

ソルバーを使用して、計画の問題を解決します。

前提条件

  • ソルバー設定で構築された Solver
  • 計画問題インスタンスを表す @PlanningSolution アノテーション

手順

計画問題を solve() メソッドの引数として提供します。ソルバーは、見つかった最良の解を返します。

次の例は、NQueens の問題を解決します。

    NQueens problem = ...;
    NQueens bestSolution = solver.solve(problem);
Copy to Clipboard

この例では、 solve() メソッドは、すべての QueenRow に割り当てられた NQueens インスタンスを返します。

注記

solve (Solution) メソッドに指定されたソリューションインスタンスは、部分的または完全に初期化できます。これは、繰り返して計画する場合によくあります。

図8.1 8ms のフォークイーンズパズルのベストソリューション (最適なソリューションでもあります)

solvedNQueens04

solve (Solution) メソッドは、問題のサイズとソルバーの設定によっては時間がかかる場合があります。Solver は、可能な解決策の検索スペースをインテリジェントに処理し、解決中に遭遇した最良の解決策を記憶します。問題の大きさ、Solver が持っているどのくらいの時間、ソルバーの設定、等々の数ある要因により、最善の 解決策は、最適な 解決策ではない可能性もあります、

注記

メソッド solve (Solution) に 与えられたソリューションインスタンスは Solver によって変更されますが、それを最良のソリューションと間違えないでください。

solve (Solution) または getBestSolution() メソッドによって返されたソリューションのインスタンスは、solve (Solution) に渡された計画インスタンスのクローンである可能性が高いです。この場合、つまりは別のインスタンスであることを意味しています。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat