[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