[jboss-svn-commits] JBL Code SVN: r32710 - in labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch: decider and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon May 3 15:43:42 EDT 2010
Author: ge0ffrey
Date: 2010-05-03 15:43:41 -0400 (Mon, 03 May 2010)
New Revision: 32710
Modified:
labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/LocalSearchSolverScope.java
labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/decider/DefaultDecider.java
Log:
buildConstraintOccurrenceSummary
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/LocalSearchSolverScope.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/LocalSearchSolverScope.java 2010-05-03 15:17:54 UTC (rev 32709)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/LocalSearchSolverScope.java 2010-05-03 19:43:41 UTC (rev 32710)
@@ -1,12 +1,20 @@
package org.drools.planner.core.localsearch;
+import java.util.Iterator;
+import java.util.Map;
import java.util.Random;
+import java.util.TreeMap;
+import org.drools.ClassObjectFilter;
import org.drools.RuleBase;
import org.drools.StatefulSession;
import org.drools.WorkingMemory;
import org.drools.planner.core.score.calculator.ScoreCalculator;
import org.drools.planner.core.score.Score;
+import org.drools.planner.core.score.constraint.ConstraintOccurrence;
+import org.drools.planner.core.score.constraint.DoubleConstraintOccurrence;
+import org.drools.planner.core.score.constraint.IntConstraintOccurrence;
+import org.drools.planner.core.score.constraint.UnweightedConstraintOccurrence;
import org.drools.planner.core.score.definition.ScoreDefinition;
import org.drools.planner.core.solution.Solution;
@@ -162,4 +170,39 @@
}
}
+ public String buildConstraintOccurrenceSummary() {
+ if (workingMemory == null) {
+ return " The workingMemory is null.";
+ }
+ Map<String, Number> scoreTotalMap = new TreeMap<String, Number>();
+ Iterator<ConstraintOccurrence> it = (Iterator<ConstraintOccurrence>) workingMemory.iterateObjects(
+ new ClassObjectFilter(ConstraintOccurrence.class));
+ while (it.hasNext()) {
+ ConstraintOccurrence occurrence = it.next();
+ Number scoreTotalNumber = scoreTotalMap.get(occurrence.getRuleId());
+ if (occurrence instanceof IntConstraintOccurrence) {
+ int scoreTotal = scoreTotalNumber == null ? 0 : (Integer) scoreTotalNumber;
+ scoreTotal += ((IntConstraintOccurrence) occurrence).getWeight();
+ scoreTotalMap.put(occurrence.getRuleId(), scoreTotal);
+ } else if (occurrence instanceof DoubleConstraintOccurrence) {
+ double scoreTotal = scoreTotalNumber == null ? 0 : (Double) scoreTotalNumber;
+ scoreTotal += ((DoubleConstraintOccurrence) occurrence).getWeight();
+ scoreTotalMap.put(occurrence.getRuleId(), scoreTotal);
+ } else if (occurrence instanceof UnweightedConstraintOccurrence) {
+ int scoreTotal = scoreTotalNumber == null ? 0 : (Integer) scoreTotalNumber;
+ scoreTotal += 1;
+ scoreTotalMap.put(occurrence.getRuleId(), scoreTotal);
+ } else {
+ throw new IllegalStateException("Cannot determine occurrenceScore of ConstraintOccurrence class: "
+ + occurrence.getClass());
+ }
+ }
+ StringBuilder summary = new StringBuilder();
+ for (Map.Entry<String, Number> scoreTotalEntry : scoreTotalMap.entrySet()) {
+ summary.append(" Score rule (").append(scoreTotalEntry.getKey()).append(") has score total (")
+ .append(scoreTotalEntry.getValue()).append(").\n");
+ }
+ return summary.toString();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/decider/DefaultDecider.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/decider/DefaultDecider.java 2010-05-03 15:17:54 UTC (rev 32709)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/decider/DefaultDecider.java 2010-05-03 19:43:41 UTC (rev 32710)
@@ -125,7 +125,8 @@
throw new IllegalStateException(
"Corrupted undo move (" + undoMove + ") received from move (" + move + ").\n"
+ "Unequal lastCompletedStepScore (" + lastCompletedStepScore + ") and undoScore ("
- + undoScore + ").");
+ + undoScore + ").\n"
+ + moveScope.getStepScope().getLocalSearchSolverScope().buildConstraintOccurrenceSummary());
}
}
logger.debug(" Move ({}) with score ({}) and acceptChance ({}).",
More information about the jboss-svn-commits
mailing list