2012-04-09 48 views
1

就像問題所說。之後破硬(或軟)限制

solver.solve(); 

我想查看違反的具體規則(與值)。我如何從解決方案中獲得他們?

+0

嗨。你解決了你的問題嗎? – Nurlan 2012-04-19 05:35:24

+0

我還沒有嘗試過**但是**因爲被綁起來。但我個人會保證對所有非不可能的但非常不利的狀態使用軟約束(具有較大的負分),並使用計劃實體難度來告訴Drools分配更難以分配的實體。我的程序需要處理來自許多用戶的「流氓」規則,因此移除嚴格的約束條件會有所幫助。 – aitchnyu 2012-04-19 06:36:26

回答

1

的例子已經做到這一點,看看這個方法:

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

但它尚不規範,見this issue

+0

我修改了這個方法到我的代碼,但流程總是去'if(workingMemory == null){return Collections.emptyList(); }'。這可能是什麼原因?這很奇怪,因爲在文檔中說DroolsScoreDirector.getWorkingMemory()永遠不會返回null,但它確實如此。 – kolobok 2013-03-05 10:11:52

+0

@akapelko在手冊中,尋找guiScoreDirector。我的猜測是你沒有使用Solver.getScoreDirectorFactory()爲你創建一個ScoreDirector。或者你還沒有調用ScoreDirector.resetSolution()來告訴它你的解決方案。 – 2013-03-06 11:06:27