0

droolsプランナーのソルバーの作業メモリーにグローバル変数を追加して、スコアdroolで使用できるようにするにはどうすればよいですか。これはhttps://issues.jboss.org/browse/JBRULES-2700に似ていますが、解決策を見つけることができませんでした。

4

4 に答える 4

1

最初の説教:サービス(グローバルとして設定)を使用してスコアの一部を計算すると、デルタベースのスコア計算(そのトピックの手動セクションを読む)が壊れ、1秒あたりのスコア計算がはるかに少なくなります(たとえば、1秒あたり5000ではなく50)ビッグデータセットで2番目)。

次に、ハックソリューション:StartingSolutionInitializer(まもなくCustomSolverPhaseCommandとして知られる)で実行しますsolverScope.getWorkingMemory().setGlobal("key", value)

次に、実際の長期的な解決策:これを実行できるようにする必要がある理由を動機付けできますか?オプションのようなものでこれのサポートを追加することを考えることができますWorkingMemoryPreperator

于 2011-07-29T11:42:11.847 に答える
1

計画問題を設定した後:

solver.setPlanningProblem(planningProblem);

solutionDirector(HACK) 経由で workingMemory にアクセスできます。

DefaultSolutionDirector solutionDirector = ((DefaultSolver)solver).getSolverScope().getSolutionDirector();
solutionDirector.getWorkingMemory().setGlobal("list", new ArrayList<String>());

乾杯!

于 2012-03-19T15:31:50.860 に答える