[jboss-svn-commits] JBL Code SVN: r18126 - in labs/jbossrules/trunk/drools-solver: drools-solver-core/src/main/java/org/drools/solver/core/localsearch and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 25 13:12:52 EST 2008


Author: ge0ffrey
Date: 2008-01-25 13:12:52 -0500 (Fri, 25 Jan 2008)
New Revision: 18126

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/selector/TopListSelector.java
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/decider/selector/SelectorConfig.java
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolver.java
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/Decider.java
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml
Log:
topList selector

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/decider/selector/SelectorConfig.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/decider/selector/SelectorConfig.java	2008-01-25 18:03:08 UTC (rev 18125)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/decider/selector/SelectorConfig.java	2008-01-25 18:12:52 UTC (rev 18126)
@@ -8,6 +8,7 @@
 import org.drools.solver.core.localsearch.decider.selector.CompositeSelector;
 import org.drools.solver.core.localsearch.decider.selector.MoveFactorySelector;
 import org.drools.solver.core.localsearch.decider.selector.Selector;
+import org.drools.solver.core.localsearch.decider.selector.TopListSelector;
 import org.drools.solver.core.move.factory.MoveFactory;
 
 /**
@@ -24,6 +25,8 @@
     protected Boolean shuffle = null;
     protected Double relativeSelection = null;
 
+    private Integer topSize = null;
+
     public List<SelectorConfig> getSelectorConfigList() {
         return selectorConfigList;
     }
@@ -64,6 +67,10 @@
         this.relativeSelection = relativeSelection;
     }
 
+    public void setTopSize(Integer topSize) {
+        this.topSize = topSize;
+    }
+
     // ************************************************************************
     // Builder methods
     // ************************************************************************
@@ -103,6 +110,10 @@
                 selector.setRelativeSelection(relativeSelection);
             }
             return selector;
+        } else if (topSize != null) {
+            TopListSelector selector = new TopListSelector();
+            selector.setTopSize(topSize);
+            return selector;
         } else {
             throw new IllegalArgumentException("A selector with a moveFactory or moveFactory class is required.");
         }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java	2008-01-25 18:03:08 UTC (rev 18125)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java	2008-01-25 18:12:52 UTC (rev 18126)
@@ -60,6 +60,10 @@
         this.bestSolutionRecaller.setLocalSearchSolver(this);
     }
 
+    public Decider getDecider() {
+        return decider;
+    }
+
     public void setDecider(Decider decider) {
         this.decider = decider;
         this.decider.setLocalSearchSolver(this);
@@ -123,11 +127,12 @@
             Move nextStep = decider.decideNextStep();
             if (nextStep == null) {
                 logger.warn("No move accepted for step ({}) out of {} accepted moves. Finishing early.",
-                        getStepIndex(), decider.getAcceptedMovesSize());
+                        getStepIndex(), decider.getForager().getAcceptedMovesSize());
                 break;
             }
             logger.info("Step index ({}), time spend ({}) taking step ({}) out of {} accepted moves.",
-                    new Object[]{getStepIndex(), getTimeMillisSpend(), nextStep, decider.getAcceptedMovesSize()});
+                    new Object[]{getStepIndex(), getTimeMillisSpend(), nextStep,
+                            decider.getForager().getAcceptedMovesSize()});
             stepDecided(nextStep);
             nextStep.doMove(evaluationHandler.getStatefulSession());
             stepScore = evaluationHandler.fireAllRulesAndCalculateStepScore();

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolver.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolver.java	2008-01-25 18:03:08 UTC (rev 18125)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolver.java	2008-01-25 18:12:52 UTC (rev 18126)
@@ -1,6 +1,7 @@
 package org.drools.solver.core.localsearch;
 
 import org.drools.solver.core.Solver;
+import org.drools.solver.core.localsearch.decider.Decider;
 import org.drools.solver.core.solution.Solution;
 
 /**
@@ -28,4 +29,6 @@
 
     double calculateTimeGradient();
 
+    Decider getDecider();
+
 }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/Decider.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/Decider.java	2008-01-25 18:03:08 UTC (rev 18125)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/Decider.java	2008-01-25 18:12:52 UTC (rev 18126)
@@ -2,6 +2,7 @@
 
 import org.drools.solver.core.localsearch.LocalSearchSolverAware;
 import org.drools.solver.core.localsearch.LocalSearchSolverLifecycleListener;
+import org.drools.solver.core.localsearch.decider.forager.Forager;
 import org.drools.solver.core.move.Move;
 
 /**
@@ -11,6 +12,6 @@
 
     Move decideNextStep();
 
-    int getAcceptedMovesSize();
+    Forager getForager();
 
 }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java	2008-01-25 18:03:08 UTC (rev 18125)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java	2008-01-25 18:12:52 UTC (rev 18126)
@@ -42,6 +42,10 @@
         this.accepter = accepter;
     }
 
+    public Forager getForager() {
+        return forager;
+    }
+
     public void setForager(Forager forager) {
         this.forager = forager;
     }
@@ -103,7 +107,7 @@
         double score = evaluationHandler.fireAllRulesAndCalculateDecisionScore();
         double acceptChance = accepter.calculateAcceptChance(move, score);
         // TODO the move's toString() is ussually wrong because doMove has already been called
-        logger.debug("    Move ({}) with score ({}) and acceptChance ({}).", new Object[] {move, score, acceptChance});
+        logger.debug("    Move ({}) with score ({}) and acceptChance ({}).", new Object[]{move, score, acceptChance});
         forager.addMove(move, score, acceptChance);
     }
 

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/selector/TopListSelector.java (from rev 18084, labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/selector/MoveFactorySelector.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/selector/TopListSelector.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/selector/TopListSelector.java	2008-01-25 18:12:52 UTC (rev 18126)
@@ -0,0 +1,37 @@
+package org.drools.solver.core.localsearch.decider.selector;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class TopListSelector extends AbstractSelector {
+
+    private int topSize;
+
+    private List<Move> topList;
+
+    public void setTopSize(int topSize) {
+        this.topSize = topSize;
+    }
+
+    // ************************************************************************
+    // Worker methods
+    // ************************************************************************
+
+    public void solvingStarted() {
+        topList = Collections.emptyList();
+    }
+
+    public final List<Move> selectMoveList() {
+        return topList;
+    }
+
+    public void stepTaken() {
+        topList = localSearchSolver.getDecider().getForager().getTopList(topSize);
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml	2008-01-25 18:03:08 UTC (rev 18125)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml	2008-01-25 18:12:52 UTC (rev 18126)
@@ -48,40 +48,19 @@
         <localSearchSolver>
             <selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>
-                    <relativeSelection>0.05</relativeSelection>
+                    <topSize>10</topSize>
                 </selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeExaminationMoveFactory</moveFactoryClass>
-                    <relativeSelection>0.05</relativeSelection>
-                </selector>
-                <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchExaminationMoveFactory</moveFactoryClass>
-                    <relativeSelection>0.05</relativeSelection>
-                </selector>
-            </selector>
-            <accepter>
-                <completeSolutionTabuSize>1500</completeSolutionTabuSize>
-            </accepter>
-            <forager>
-                <foragerType>MAX_SCORE_OF_ALL</foragerType>
-            </forager>
-        </localSearchSolver>
-    </solverBenchmark>
-    <solverBenchmark>
-        <localSearchSolver>
-            <selector>
-                <selector>
                     <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>
-                    <relativeSelection>0.01</relativeSelection>
+                    <relativeSelection>0.002</relativeSelection>
                 </selector>
                 <selector>
                     <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeExaminationMoveFactory</moveFactoryClass>
-                    <relativeSelection>0.01</relativeSelection>
+                    <relativeSelection>0.002</relativeSelection>
                 </selector>
                 <selector>
                     <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchExaminationMoveFactory</moveFactoryClass>
-                    <relativeSelection>0.01</relativeSelection>
+                    <relativeSelection>0.002</relativeSelection>
                 </selector>
             </selector>
             <accepter>
@@ -92,4 +71,28 @@
             </forager>
         </localSearchSolver>
     </solverBenchmark>
+    <!--<solverBenchmark>-->
+        <!--<localSearchSolver>-->
+            <!--<selector>-->
+                <!--<selector>-->
+                    <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>-->
+                    <!--<relativeSelection>0.01</relativeSelection>-->
+                <!--</selector>-->
+                <!--<selector>-->
+                    <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeExaminationMoveFactory</moveFactoryClass>-->
+                    <!--<relativeSelection>0.01</relativeSelection>-->
+                <!--</selector>-->
+                <!--<selector>-->
+                    <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchExaminationMoveFactory</moveFactoryClass>-->
+                    <!--<relativeSelection>0.01</relativeSelection>-->
+                <!--</selector>-->
+            <!--</selector>-->
+            <!--<accepter>-->
+                <!--<completeSolutionTabuSize>1500</completeSolutionTabuSize>-->
+            <!--</accepter>-->
+            <!--<forager>-->
+                <!--<foragerType>MAX_SCORE_OF_ALL</foragerType>-->
+            <!--</forager>-->
+        <!--</localSearchSolver>-->
+    <!--</solverBenchmark>-->
 </solverBenchmarkSuite>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml	2008-01-25 18:03:08 UTC (rev 18125)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml	2008-01-25 18:12:52 UTC (rev 18126)
@@ -17,6 +17,9 @@
     </finish>
     <selector>
         <selector>
+            <topSize>10</topSize>
+        </selector>
+        <selector>
             <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>
             <relativeSelection>0.002</relativeSelection>
         </selector>




More information about the jboss-svn-commits mailing list