[jboss-svn-commits] JBL Code SVN: r15456 - in labs/jbossrules/trunk/drools-solver: drools-solver-core/src/main/java/org/drools/solver/config/localsearch/evaluation/scorecalculator and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Sep 30 07:13:28 EDT 2007


Author: ge0ffrey
Date: 2007-09-30 07:13:28 -0400 (Sun, 30 Sep 2007)
New Revision: 15456

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/XmlSolverBenchmarker.java
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/evaluation/scorecalculator/ScoreCalculatorConfig.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkNQueens.sh
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkSmartTravelingTournament.sh
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/app/CommonBenchmarkApp.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/app/NQueensBenchmarkApp.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/app/smart/SmartTravelingTournamentBenchmarkApp.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml
Log:
allow different benchmarker configs with a program argument

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/XmlSolverBenchmarker.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/XmlSolverBenchmarker.java	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/XmlSolverBenchmarker.java	2007-09-30 11:13:28 UTC (rev 15456)
@@ -42,7 +42,11 @@
     // ************************************************************************
 
     public XmlSolverBenchmarker configure(String resource) {
-        return configure(getClass().getResourceAsStream(resource));
+        InputStream in = getClass().getResourceAsStream(resource);
+        if (in == null) {
+            throw new IllegalArgumentException("Resource not found: " + resource);
+        }
+        return configure(in);
     }
 
     public XmlSolverBenchmarker configure(InputStream in) {

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/evaluation/scorecalculator/ScoreCalculatorConfig.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/evaluation/scorecalculator/ScoreCalculatorConfig.java	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/evaluation/scorecalculator/ScoreCalculatorConfig.java	2007-09-30 11:13:28 UTC (rev 15456)
@@ -64,7 +64,7 @@
                 case HARD_AND_SOFT_CONSTRAINTS:
                     return new StaticHardAndSoftConstraintScoreCalculator();
                 case DYNAMIC_HARD_AND_SOFT_CONSTRAINTS:
-                    return new DynamicHardAndSoftConstraintScoreCalculator();
+                    return new DynamicHardAndSoftConstraintScoreCalculator(10000.0, 1000000.0, 100.0, 1.2);
                 default:
                     throw new IllegalStateException("scoreCalculatorType (" + scoreCalculatorType + ") not implemented");
             }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkNQueens.sh
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkNQueens.sh	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkNQueens.sh	2007-09-30 11:13:28 UTC (rev 15456)
@@ -1 +1,2 @@
-mvn exec:java -Dexec.mainClass="org.drools.solver.examples.nqueens.app.NQueensBenchmarkApp"
+
+mvn exec:exec -Dexec.mainClass="org.drools.solver.examples.nqueens.app.NQueensBenchmarkApp"

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkSmartTravelingTournament.sh
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkSmartTravelingTournament.sh	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/benchmarkSmartTravelingTournament.sh	2007-09-30 11:13:28 UTC (rev 15456)
@@ -1 +1,8 @@
-mvn exec:exec -Dexec.mainClass="org.drools.solver.examples.travelingtournament.app.smart.SmartTravelingTournamentBenchmarkApp"
+
+mainClass=org.drools.solver.examples.travelingtournament.app.smart.SmartTravelingTournamentBenchmarkApp
+if [ $# -ge 1 ];
+  then
+    mvn exec:exec -Dexec.mainClass="${mainClass}" -Dexec.programArgs="$*"
+  else
+    mvn exec:exec -Dexec.mainClass="${mainClass}"
+fi

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/pom.xml	2007-09-30 11:13:28 UTC (rev 15456)
@@ -32,17 +32,23 @@
                     <configuration>
                         <executable>${JAVA_HOME}/bin/java</executable>
                         <arguments>
-                            <argument>-mx128m</argument>
+                            <argument>-Xmx128M</argument>
+                            <!--<argument>-Xbatch</argument>-->
                             <argument>-server</argument>
                             <argument>-classpath</argument>
                             <classpath/>
                             <argument>${exec.mainClass}</argument>
+                            <argument>${exec.programArgs}</argument><!-- Empty string by default -->
                         </arguments>
                     </configuration>
                 </plugin>
             </plugins>
         </pluginManagement>
     </build>
+    <properties>
+        <!-- default is a workaround for http://jira.codehaus.org/browse/MEXEC-35 -->
+        <exec.programArgs>default</exec.programArgs>
+    </properties>
 
     <dependencies>
         <!-- Internal dependencies -->

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/app/CommonBenchmarkApp.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/app/CommonBenchmarkApp.java	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/app/CommonBenchmarkApp.java	2007-09-30 11:13:28 UTC (rev 15456)
@@ -2,6 +2,7 @@
 
 import java.io.File;
 
+import org.apache.commons.logging.LogFactory;
 import org.apache.log4j.xml.DOMConfigurator;
 import org.drools.solver.benchmark.XmlSolverBenchmarker;
 
@@ -13,9 +14,15 @@
     private static final String LOGGING_CONFIG = "/org/drools/solver/examples/common/app/log4j-benchmark.xml";
 
     protected XmlSolverBenchmarker solverBenchmarker;
+    private String solverBenchmarkConfig;
+    private File resultFile;
 
-    public CommonBenchmarkApp() {
+    protected CommonBenchmarkApp(String solverBenchmarkConfig, File resultFile) {
+        this.solverBenchmarkConfig = solverBenchmarkConfig;
+        this.resultFile = resultFile;
         DOMConfigurator.configure(getClass().getResource(LOGGING_CONFIG));
+         // Workaround to make sure logging reports uncaught exceptions
+        LogFactory.getLog(getClass()).debug("Logging configured.");
         solverBenchmarker = new XmlSolverBenchmarker().configure(getSolverBenchmarkConfig());
     }
 
@@ -24,8 +31,12 @@
         solverBenchmarker.writeResults(getResultFile());
     }
 
-    protected abstract String getSolverBenchmarkConfig();
+    protected String getSolverBenchmarkConfig() {
+        return solverBenchmarkConfig;
+    }
 
-    protected abstract File getResultFile();
+    protected File getResultFile() {
+        return resultFile;
+    }
 
 }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/app/NQueensBenchmarkApp.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/app/NQueensBenchmarkApp.java	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/app/NQueensBenchmarkApp.java	2007-09-30 11:13:28 UTC (rev 15456)
@@ -15,17 +15,11 @@
             = new File("local/data/nqueens/nqueensSolverBenchmarkResult.xml");
 
     public static void main(String[] args) {
-        new NQueensBenchmarkApp().process();
+        new NQueensBenchmarkApp(SOLVER_BENCHMARK_CONFIG, SOLVER_BENCHMARK_RESULT_FILE).process();
     }
 
-    @Override
-    protected String getSolverBenchmarkConfig() {
-        return SOLVER_BENCHMARK_CONFIG;
+    public NQueensBenchmarkApp(String solverBenchmarkConfig, File resultFile) {
+        super(solverBenchmarkConfig, resultFile);
     }
 
-    @Override
-    protected File getResultFile() {
-        return SOLVER_BENCHMARK_RESULT_FILE;
-    }
-
 }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/app/smart/SmartTravelingTournamentBenchmarkApp.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/app/smart/SmartTravelingTournamentBenchmarkApp.java	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/app/smart/SmartTravelingTournamentBenchmarkApp.java	2007-09-30 11:13:28 UTC (rev 15456)
@@ -9,23 +9,26 @@
  */
 public class SmartTravelingTournamentBenchmarkApp extends CommonBenchmarkApp {
 
+    public static final String SOLVER_BENCHMARK_CONFIG_PREFIX
+            = "/org/drools/solver/examples/travelingtournament/benchmark/smart/";
     public static final String SOLVER_BENCHMARK_CONFIG
-            = "/org/drools/solver/examples/travelingtournament/benchmark/smart/smartTravelingTournamentSolverBenchmarkConfig.xml";
+            = SOLVER_BENCHMARK_CONFIG_PREFIX + "smartTravelingTournamentSolverBenchmarkConfig.xml";
     public static final File SOLVER_BENCHMARK_RESULT_FILE
             = new File("local/data/travelingtournament/smart/smartTravelingTournamentSolverBenchmarkResult.xml");
 
     public static void main(String[] args) {
-        new SmartTravelingTournamentBenchmarkApp().process();
+        String solverBenchmarkConfig;
+        // default is a workaround for http://jira.codehaus.org/browse/MEXEC-35
+        if (args.length > 0 && !args[0].equals("default")) {
+            solverBenchmarkConfig = SOLVER_BENCHMARK_CONFIG_PREFIX + args[0] + "SolverBenchmarkConfig.xml";
+        } else {
+            solverBenchmarkConfig = SOLVER_BENCHMARK_CONFIG;
+        }
+        new SmartTravelingTournamentBenchmarkApp(solverBenchmarkConfig, SOLVER_BENCHMARK_RESULT_FILE).process();
     }
 
-    @Override
-    protected String getSolverBenchmarkConfig() {
-        return SOLVER_BENCHMARK_CONFIG;
+    public SmartTravelingTournamentBenchmarkApp(String solverBenchmarkConfig, File resultFile) {
+        super(solverBenchmarkConfig, resultFile);
     }
 
-    @Override
-    protected File getResultFile() {
-        return SOLVER_BENCHMARK_RESULT_FILE;
-    }
-
 }

Added: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml	2007-09-30 11:13:28 UTC (rev 15456)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<solverBenchmarkSuite>
+    <solvedSolutionVerbosity>ALL</solvedSolutionVerbosity>
+    <solvedSolutionFilesDirectory>local/data/travelingtournament/smart/solved</solvedSolutionFilesDirectory>
+    <sortSolverBenchmarks>false</sortSolverBenchmarks>
+    <!-- solverBenchmarkResultComparator -->
+    <inheritedUnsolvedSolutionFile>data/travelingtournament/smart/unsolved/1-nl14.xml</inheritedUnsolvedSolutionFile>
+    <inheritedLocalSearchSolver>
+        <scoreDrl>/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl</scoreDrl>
+        <scoreCalculator>
+            <scoreCalculatorType>DYNAMIC_HARD_AND_SOFT_CONSTRAINTS</scoreCalculatorType>
+        </scoreCalculator>
+        <selector>
+            <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.SmartTravelingTournamentMoveFactory</moveFactoryClass>
+        </selector>
+        <accepter>
+            <completeSolutionTabuSize>3000</completeSolutionTabuSize>
+        </accepter>
+        <forager>
+            <foragerType>MAX_SCORE_OF_ALL</foragerType>
+        </forager>
+    </inheritedLocalSearchSolver>
+
+    <solverBenchmark>
+        <localSearchSolver>
+            <finish>
+                <finishCompositionStyle>AND</finishCompositionStyle>
+                <feasableScore>-188727.0</feasableScore><!-- 188728 (Van Hentenryck and Vergados, May 18 2006) -->
+                <maximumUnimprovedStepCount>20</maximumUnimprovedStepCount>
+            </finish>
+        </localSearchSolver>
+    </solverBenchmark>
+</solverBenchmarkSuite>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml	2007-09-30 05:20:14 UTC (rev 15455)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml	2007-09-30 11:13:28 UTC (rev 15456)
@@ -5,7 +5,8 @@
         <scoreCalculatorType>HARD_AND_SOFT_CONSTRAINTS</scoreCalculatorType>
     </scoreCalculator>
     <finish>
-        <maximumHouresSpend>2</maximumHouresSpend>
+        <!--<maximumHouresSpend>2</maximumHouresSpend>-->
+        <maximumStepCount>100</maximumStepCount>
     </finish>
     <selector>
         <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.SmartTravelingTournamentMoveFactory</moveFactoryClass>




More information about the jboss-svn-commits mailing list