第7章 OptaPlanner ソルバーの RedHat ビルドの設定
以下の方法を使用して、OptaPlanner のソルバーを設定できます。
- XML ファイルを使用します。
-
SolverConfig
API を使用します。 - ドメインモデルにクラスアノテーションと JavaBean プロパティーアノテーションを追加します。
- OptaPlanner がドメインにアクセスするために使用するメソッドを制御します。
- カスタムプロパティーを定義します。
7.1. XML ファイルを使用した OptaPlanner のソルバーの設定
XML ファイルを使用して Solver を設定できます。Maven ディレクトリー構造に従う一般的なプロジェクトでは、 SolverFactory
を使用して Solver
インスタンスをビルドした後、 solverConfig
XML ファイルは $ PROJECT_DIR / src / main / resources / org / optaplanner / examples / <PROJECT> / solver
ディレクトリーにあります。ここで、 <PROJECT>
は OptaPlanner プロジェクトの名前です。または、SolverFactory.createFromXmlFile()
で ファイルから SolverFactory
を作成することもできます。ただし、移植性の理由から、クラスパスのリソースが推奨されます。
Solver
と SolverFactory
の両方に、 Solution_
と呼ばれるジェネリック型があります。これは、計画の問題と解決策を表すクラスです。
OptaPlanner を使用すると、設定を変更することで、最適化アルゴリズムを比較的簡単に切り替えることができます。
手順
-
SolverFactory
でSolver
インスタンスをビルドします。 Solver 設定の XML ファイルを設定します。
- モデルを定義します。
- スコア機能を定義します。
必要に応じて、最適化アルゴリズムを設定します。
以下の例は、NQueens 問題に対するソルバー XML ファイルです。
<?xml version="1.0" encoding="UTF-8"?> <solver xmlns="https://www.optaplanner.org/xsd/solver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.optaplanner.org/xsd/solver https://www.optaplanner.org/xsd/solver/solver.xsd"> <!-- Define the model --> <solutionClass>org.optaplanner.examples.nqueens.domain.NQueens</solutionClass> <entityClass>org.optaplanner.examples.nqueens.domain.Queen</entityClass> <!-- Define the score function --> <scoreDirectorFactory> <scoreDrl>org/optaplanner/examples/nqueens/solver/nQueensConstraints.drl</scoreDrl> </scoreDirectorFactory> <!-- Configure the optimization algorithms (optional) --> <termination> ... </termination> <constructionHeuristic> ... </constructionHeuristic> <localSearch> ... </localSearch> </solver>
注記一部の環境では、OSGi や JBoss モジュールなどの一部の環境では、JAR ファイルのソルバー設定、スコア DRL、ドメインクラスなどのクラスパスリソースが
optaplanner-core
JAR ファイルのデフォルトのClassLoader
で利用できない場合もあります。このような場合は、クラスのClassLoader
をパラメーターとして提供します。SolverFactory<NQueens> solverFactory = SolverFactory.createFromXmlResource( ".../nqueensSolverConfig.xml", getClass().getClassLoader());
ClassLoader.getResource()
で定義されているクラスパスリソースとして提供されるソルバー設定 XML ファイルを使用してSolverFactory
を設定します。SolverFasctory<NQueens> solverFactory = SolverFactory.createFromXmlResource( "org/optaplanner/examples/nqueens/solver/nqueensSolverConfig.xml"); Solver<NQueens> solver = solverFactory.buildSolver();