2012-04-09 15 views
1

質問のように言います。その後壊れたハード(またはソフト)制約を取得します

solver.solve(); 

違反した特定のルール(値付き)を確認したいと思います。ソリューションからそれらを取得するにはどうすればよいですか?

org.drools.planner.examples.common.business.SolutionBusiness#getScoreDetailList() 

をしかし、それはthis issueを参照してください、まだ標準化されていないです:

+0

こんにちは。あなたの問題を解決しましたか? – Nurlan

+0

私はそれを試してみません**まだ**私は縛られています。しかし、私は、不可能ではあるが非常に望ましくないすべての状態に対してソフト・コンストレイン(大きな負のスコアを持つ)を使用することを個人的に保証し、計画エンティティの難しさを使用してDroolsにより厳格な割り当てエンティティを割り当てるよう指示します。私のプログラムでは、多くのユーザーからの "不正な"ルールを処理する必要があるため、ハードな制約を取り除くと役立ちます。 – aitchnyu

答えて

1

例はすでにこれを行うには、この方法を見てみましょう。

+0

このメソッドを自分のコードに変更しましたが、フローは常に 'if(workingMemory == null){return Collections.emptyList();に行きます。 } '。これの理由は何でしょうか?ドキュメンテーションでDroolsScoreDirector.getWorkingMemory()がnullを返すことはないと言われているので、奇妙です。マニュアルの – kolobok

+0

@akapelko、guiScoreDirectorを探してください。私の推測では、あなたのためにScoreDirectorを作成するためにSolver.getScoreDirectorFactory()を使用していないということです。または、ScoreDirector.resetSolution()を呼び出さずに、あなたの解決策について教えてください。 –

関連する問題