[jboss-svn-commits] JBL Code SVN: r31478 - in labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner: core/localsearch and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Feb 7 12:04:24 EST 2010


Author: ge0ffrey
Date: 2010-02-07 12:04:24 -0500 (Sun, 07 Feb 2010)
New Revision: 31478

Modified:
   labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/config/localsearch/LocalSearchSolverConfig.java
   labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/DefaultLocalSearchSolver.java
Log:
JBRULES-2391 Configuration: optional mode which can be "production" (random isn't seeded, etc), "reproducable" (the default) and "debug" (reproducable + turns verifyUndoMoveIsUncorrupted, etc on)

Modified: labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/config/localsearch/LocalSearchSolverConfig.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/config/localsearch/LocalSearchSolverConfig.java	2010-02-07 11:31:03 UTC (rev 31477)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/config/localsearch/LocalSearchSolverConfig.java	2010-02-07 17:04:24 UTC (rev 31478)
@@ -33,12 +33,14 @@
  */
 @XStreamAlias("localSearchSolver")
 public class LocalSearchSolverConfig {
+    
+    private static final long DEFAULT_RANDOM_SEED = 0L;
 
     // Warning: all fields are null (and not defaulted) because they can be inherited
     // and also because the input config file should match the output config file
 
-    private Long randomSeed = null; // TODO remove me, use environmentMode instead
     private EnvironmentMode environmentMode = null;
+    private Long randomSeed = null;
 
     @XStreamImplicit(itemFieldName = "scoreDrl")
     private List<String> scoreDrlList = null;
@@ -63,6 +65,14 @@
     @XStreamAlias("forager")
     private ForagerConfig foragerConfig = new ForagerConfig();
 
+    public EnvironmentMode getEnvironmentMode() {
+        return environmentMode;
+    }
+
+    public void setEnvironmentMode(EnvironmentMode environmentMode) {
+        this.environmentMode = environmentMode;
+    }
+
     public Long getRandomSeed() {
         return randomSeed;
     }
@@ -75,14 +85,6 @@
         return scoreDrlList;
     }
 
-    public EnvironmentMode getEnvironmentMode() {
-        return environmentMode;
-    }
-
-    public void setEnvironmentMode(EnvironmentMode environmentMode) {
-        this.environmentMode = environmentMode;
-    }
-
     public void setScoreDrlList(List<String> scoreDrlList) {
         this.scoreDrlList = scoreDrlList;
     }
@@ -158,10 +160,12 @@
 
     public LocalSearchSolver buildSolver() {
         DefaultLocalSearchSolver localSearchSolver = new DefaultLocalSearchSolver();
-        if (randomSeed != null) {
-            localSearchSolver.setRandomSeed(randomSeed);
-        } else {
-            localSearchSolver.setRandomSeed(0L);
+        if (environmentMode != EnvironmentMode.PRODUCTION) {
+            if (randomSeed != null) {
+                localSearchSolver.setRandomSeed(randomSeed);
+            } else {
+                localSearchSolver.setRandomSeed(DEFAULT_RANDOM_SEED);
+            }
         }
         localSearchSolver.setRuleBase(buildRuleBase());
         ScoreDefinition scoreDefinition = scoreDefinitionConfig.buildScoreDefinition();
@@ -235,12 +239,12 @@
     }
 
     public void inherit(LocalSearchSolverConfig inheritedConfig) {
+        if (environmentMode == null) {
+            environmentMode = inheritedConfig.getEnvironmentMode();
+        }
         if (randomSeed == null) {
             randomSeed = inheritedConfig.getRandomSeed();
         }
-        if (environmentMode == null) {
-            environmentMode = inheritedConfig.getEnvironmentMode();
-        }
         if (scoreDrlList == null) {
             scoreDrlList = inheritedConfig.getScoreDrlList();
         } else {

Modified: labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/DefaultLocalSearchSolver.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/DefaultLocalSearchSolver.java	2010-02-07 11:31:03 UTC (rev 31477)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-core/src/main/java/org/drools/planner/core/localsearch/DefaultLocalSearchSolver.java	2010-02-07 17:04:24 UTC (rev 31478)
@@ -20,7 +20,7 @@
 public class DefaultLocalSearchSolver extends AbstractSolver implements LocalSearchSolver,
         LocalSearchSolverLifecycleListener {
 
-    protected long randomSeed; // TODO refactor to AbstractSolver
+    protected Long randomSeed; // TODO refactor to AbstractSolver
 
     protected StartingSolutionInitializer startingSolutionInitializer = null; // TODO refactor to AbstractSolver
     protected BestSolutionRecaller bestSolutionRecaller;
@@ -138,8 +138,13 @@
 
     public void solvingStarted(LocalSearchSolverScope localSearchSolverScope) {
         localSearchSolverScope.resetTimeMillisSpend();
-        logger.info("Solving with random seed ({}).", randomSeed);
-        localSearchSolverScope.setWorkingRandom(new Random(randomSeed));
+        if (randomSeed != null) {
+            logger.info("Solving with random seed ({}).", randomSeed);
+            localSearchSolverScope.setWorkingRandom(new Random(randomSeed));
+        } else {
+            logger.info("Solving without a fixed random seed.");
+            localSearchSolverScope.setWorkingRandom(new Random());
+        }
         if (startingSolutionInitializer != null) {
             if (!startingSolutionInitializer.isSolutionInitialized(localSearchSolverScope)) {
                 logger.info("Initializing solution.");



More information about the jboss-svn-commits mailing list