Red Hat JBoss BRMS Solverの設定ファイルについて(2013/12/20追記)

こんにちは、加藤です。
BRMSのルール定義を記述するxmlファイルについて、主だった箇所を調べました。
英語を訳しつつ書いたので間違っているかもしれません。


<scoreDirectorFactory>
スコアの設定を行います。

・内部項目
scoreDefinitionType:スコアの保持方法を設定
設定値は以下の通り
①SIMPLE
スコアを1種類だけ保持する
②HARD_SOFT
スコアをハード・ソフトの2種類保持する
③HARD_MEDIUM_SOFT
スコアをハード・ミディアム・ソフトの3種類保持する
④BENDABLE
スコアをハード・ソフトの2種類、指定した数だけ保持する

・記述例

<scoreDirectorFactory>
    <scoreDefinitionType>SIMPLE</scoreDefinitionType>
    ...
</scoreDirectorFactory>

<termination>
探索の終了条件を記述します。最適解を指定するのが望ましいです。

・内部項目
scoreAttained:上限スコアを定義
maximumStepCount:上限ステップ数を定義
terminationCompositionStyle:条件が複数ある場合、ANDやORを定義

・記述例

<termination>
	<terminationCompositionStyle>OR</terminationCompositionStyle>
	<maximumStepCount>100</maximumStepCount>
	<scoreAttained>0</scoreAttained>
</termination>

<constructionHeuristic>
初期化処理時のアルゴリズム設定を記述します。

・内部項目
constructionHeuristicType:アルゴリズムを定義
設定値はこちら

・記述例

<constructionHeuristic>
	<constructionHeuristicType>FIRST_FIT</constructionHeuristicType>
	<!-- <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType> -->
</constructionHeuristic>

<localSearch>
初期化処理後のアルゴリズム設定を記述します。
constructionHeuristicで初期化されたPlanningEntityを使用し、よりスコアが良い解を探索します。

・内部項目
selectionOrder:PlanningVariable(ルール適用中に変化する値)の選択方法を設定できる
設定値は以下の通り
①ORIGINAL
デフォルト順
②SORTED
ソート順(cacheType >= STEPが必要)
③RANDOM (default)
ランダム順(選択済みの値が複数回選択される可能性がある)
④SHUFFLED
ランダム順(選択済みの値が選択されることはない・cacheType >= STEPが必要)
⑤PROBABILISTIC
確率が高い順(選択済みの値が複数回選択される可能性がある・cacheType >= STEPが必要)

・記述例

<localSearch>
	<changeMoveSelector>
		...
		<selectionOrder>RANDOM</selectionOrder>
		...
	</changeMoveSelector>
</localSearch>

<acceptor>
アクセプターは、PlanningVariableの動きをキャッチする役割を持っていると思われます。
ここにはキャッチ時のタブーの設定を記述します。
タブーを破った回数が設定値を超えた場合、探索を打ち切り、他のツリーを探索すると思われます。

・記述例

<acceptor>
	<entityTabuSize>7</entityTabuSize>
</acceptor>

<Forager>
acceptorの動作を収集し、スコアが最も高いものをピックアップします。
スコア最高値が複数ある場合、ランダムで1つだけ選択します。
・内部項目
acceptedCountLimit:acceptorの動作数を設定する
pickEarlyType:Foragerの動作を設定する
設定値
①NEVER
デフォルト。全acceptor動作を評価する
②FIRST_BEST_SCORE_IMPROVING
最高スコアを更新したacceptor動作を評価する
③FIRST_LAST_STEP_SCORE_IMPROVING
最後のステップのスコアを更新したacceptor動作を評価する

※pickEarlyTypeはマニュアルにない項目が多数ある模様(サンプルでは使用されている)

・記述例

<forager>
	<pickEarlyType>NEVER</pickEarlyType>
</forager>

所感
基本的なところは多分抑えたので、サンプルと合わせて見ればなんとなく作成できると思います。
だいたいデフォルトの記述で済むようにしているので、動かしてみる程度ならわりとすぐできるかもしれません。
英語力の問題でアルゴリズムが2つしか紹介できなかったので、できれば他のアルゴリズムの概要や、詳細な動作が解読できれば書いておきたいところです。

2013/12/20追記:アルゴリズムについては別記事にまとめました

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です