[jboss-svn-commits] JBL Code SVN: r27135 - in labs/jbossrules/trunk/drools-solver: drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 25 13:19:13 EDT 2009


Author: ge0ffrey
Date: 2009-06-25 13:19:13 -0400 (Thu, 25 Jun 2009)
New Revision: 27135

Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmark.java
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml
Log:
bnechmark config should have a name, that is generated if null

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmark.java	2009-06-25 17:18:17 UTC (rev 27134)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmark.java	2009-06-25 17:19:13 UTC (rev 27135)
@@ -14,6 +14,8 @@
 @XStreamAlias("solverBenchmark")
 public class SolverBenchmark {
 
+    private String name = null;
+
     @XStreamAlias("localSearchSolver")
     private LocalSearchSolverConfig localSearchSolverConfig = null;
     @XStreamImplicit(itemFieldName = "unsolvedSolutionFile")
@@ -22,6 +24,14 @@
     @XStreamImplicit(itemFieldName = "solverBenchmarkResult")
     private List<SolverBenchmarkResult> solverBenchmarkResultList = null;
 
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
     public LocalSearchSolverConfig getLocalSearchSolverConfig() {
         return localSearchSolverConfig;
     }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java	2009-06-25 17:18:17 UTC (rev 27134)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java	2009-06-25 17:19:13 UTC (rev 27135)
@@ -13,6 +13,8 @@
 import java.util.Comparator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Set;
+import java.util.HashSet;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
@@ -105,7 +107,18 @@
     // ************************************************************************
 
     public void benchmarkingStarted() {
+        Set<String> nameSet = new HashSet<String>(solverBenchmarkList.size());
+        Set<SolverBenchmark> noNameBenchmarkSet = new HashSet<SolverBenchmark>(solverBenchmarkList.size());
         for (SolverBenchmark solverBenchmark : solverBenchmarkList) {
+            if (solverBenchmark.getName() != null) {
+                boolean unique = nameSet.add(solverBenchmark.getName());
+                if (!unique) {
+                    throw new IllegalStateException("The benchmark name (" + solverBenchmark.getName()
+                            + ") is used in more than 1 benchmark.");
+                }
+            } else {
+                noNameBenchmarkSet.add(solverBenchmark);
+            }
             if (inheritedLocalSearchSolverConfig != null) {
                 solverBenchmark.inheritLocalSearchSolverConfig(inheritedLocalSearchSolverConfig);
             }
@@ -113,11 +126,23 @@
                 solverBenchmark.inheritUnsolvedSolutionFileList(inheritedUnsolvedSolutionFileList);
             }
         }
+        int generatedNameIndex = 0;
+        for (SolverBenchmark solverBenchmark : noNameBenchmarkSet) {
+            String generatedName = "Config_" + generatedNameIndex;
+            while (nameSet.contains(generatedName)) {
+                generatedNameIndex++;
+                generatedName = "Config_" + generatedNameIndex;
+            }
+            solverBenchmark.setName(generatedName);
+            generatedNameIndex++;
+        }
     }
 
     public void benchmark(XStream xStream) { // TODO refactor out xstream
         benchmarkingStarted();
-        solvedSolutionFilesDirectory.mkdirs();
+        if (solvedSolutionFilesDirectory != null) {
+            solvedSolutionFilesDirectory.mkdirs();
+        }
         for (SolverBenchmark solverBenchmark : solverBenchmarkList) {
             Solver solver = solverBenchmark.getLocalSearchSolverConfig().buildSolver();
             for (SolverBenchmarkResult result : solverBenchmark.getSolverBenchmarkResultList()) {
@@ -128,7 +153,7 @@
                 result.setTimeMillesSpend(solver.getTimeMillisSpend());
                 result.setScore(solver.getBestScore());
                 Solution solvedSolution = solver.getBestSolution();
-                writeSolvedSolution(xStream, result, solvedSolution);
+                writeSolvedSolution(xStream, solverBenchmark, result, solvedSolution);
             }
         }
         benchmarkingEnded();
@@ -148,14 +173,19 @@
         return unsolvedSolution;
     }
 
-    private void writeSolvedSolution(XStream xStream, SolverBenchmarkResult result, Solution solvedSolution) {
+    private void writeSolvedSolution(XStream xStream, SolverBenchmark solverBenchmark, SolverBenchmarkResult result,
+            Solution solvedSolution) {
+        if (solvedSolutionFilesDirectory == null) {
+            return;
+        }
         File solvedSolutionFile = null;
         Writer writer = null;
         try {
             String baseName = FilenameUtils.getBaseName(result.getUnsolvedSolutionFile().getName());
+            String solverBenchmarkName = solverBenchmark.getName().replaceAll(" ", "_").replaceAll("[^\\w\\d_\\-]", "");
             String scoreString = result.getScore().toString().replaceAll("[\\/ ]", "_");
             String timeString = TIME_FORMAT.format(result.getTimeMillesSpend()) + "ms";
-            solvedSolutionFile = new File(solvedSolutionFilesDirectory, baseName
+            solvedSolutionFile = new File(solvedSolutionFilesDirectory, baseName + "_" + solverBenchmarkName
                     + "_score" + scoreString + "_time" + timeString + ".xml");
             writer = new OutputStreamWriter(new FileOutputStream(solvedSolutionFile), "utf-8");
             xStream.toXML(solvedSolution, writer);

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml	2009-06-25 17:18:17 UTC (rev 27134)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml	2009-06-25 17:19:13 UTC (rev 27135)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <solverBenchmarkSuite>
-    <solvedSolutionVerbosity>ALL</solvedSolutionVerbosity>
     <solvedSolutionFilesDirectory>local/data/nqueens/solved</solvedSolutionFilesDirectory>
-    <sortSolverBenchmarks>true</sortSolverBenchmarks>
-    <!-- solverBenchmarkResultComparator -->
     
-    <inheritedUnsolvedSolutionFile>data/nqueens/unsolved/unsolvedNQueens08.xml</inheritedUnsolvedSolutionFile>
-    <inheritedUnsolvedSolutionFile>data/nqueens/unsolved/unsolvedNQueens16.xml</inheritedUnsolvedSolutionFile>
     <inheritedUnsolvedSolutionFile>data/nqueens/unsolved/unsolvedNQueens32.xml</inheritedUnsolvedSolutionFile>
+    <inheritedUnsolvedSolutionFile>data/nqueens/unsolved/unsolvedNQueens64.xml</inheritedUnsolvedSolutionFile>
     <inheritedLocalSearchSolver>
         <scoreDrl>/org/drools/solver/examples/nqueens/solver/nQueensScoreRules.drl</scoreDrl>
         <scoreDefinition>
@@ -24,7 +20,7 @@
     </inheritedLocalSearchSolver>
 
     <solverBenchmark>
-        <unsolvedSolutionFile>data/nqueens/unsolved/unsolvedNQueens64.xml</unsolvedSolutionFile>
+        <name>Move tabu</name>
         <localSearchSolver>
             <accepter>
                 <completeMoveTabuSize>5</completeMoveTabuSize>
@@ -35,6 +31,7 @@
         </localSearchSolver>
     </solverBenchmark>
     <solverBenchmark>
+        <name>Undo move tabu</name>
         <localSearchSolver>
             <accepter>
                 <completeUndoMoveTabuSize>5</completeUndoMoveTabuSize>
@@ -45,6 +42,7 @@
         </localSearchSolver>
     </solverBenchmark>
     <solverBenchmark>
+        <name>Solution tabu</name>
         <localSearchSolver>
             <accepter>
                 <completeSolutionTabuSize>1000</completeSolutionTabuSize>




More information about the jboss-svn-commits mailing list