[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