[jboss-svn-commits] JBL Code SVN: r18327 - in labs/jbossrules/trunk/drools-solver: drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 5 15:57:47 EST 2008


Author: ge0ffrey
Date: 2008-02-05 15:57:46 -0500 (Tue, 05 Feb 2008)
New Revision: 18327

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java
   labs/jbossrules/trunk/drools-solver/src/main/assembly/emptydir/
   labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.odt
   labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.pdf
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java
   labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml
   labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh
Log:
ExaminationShellApp

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java	2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java	2008-02-05 20:57:46 UTC (rev 18327)
@@ -40,6 +40,10 @@
 		Annotations.configureAliases(xStream, aliasClass);
     }
 
+    public LocalSearchSolverConfig getConfig() {
+        return config;
+    }
+
     // ************************************************************************
     // Worker methods
     // ************************************************************************

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java (from rev 18175, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationApp.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java	2008-02-05 20:57:46 UTC (rev 18327)
@@ -0,0 +1,110 @@
+package org.drools.solver.examples.itc2007.examination.app;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.drools.solver.config.XmlSolverConfigurer;
+import org.drools.solver.core.Solver;
+import org.drools.solver.examples.common.app.LoggingMain;
+import org.drools.solver.examples.itc2007.examination.domain.Examination;
+import org.drools.solver.examples.itc2007.examination.persistence.ExaminationInputConvertor;
+import org.drools.solver.examples.itc2007.examination.persistence.ExaminationOutputConvertor;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class ExaminationShellApp extends LoggingMain {
+
+    public static final String SOLVER_CONFIG
+            = "/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml";
+
+    public static void main(String[] args) {
+        if (args.length != 1) {
+            System.out.println("Use exactly 1 program argument (maximumSecondsSpend). Exiting...");
+            System.exit(1);
+        }
+        long maximumSecondsSpend;
+        try {
+            maximumSecondsSpend = Long.parseLong(args[0]);
+        } catch (NumberFormatException e) {
+            System.out.println("The program argument maximumSecondsSpend (" + args[0] + ") is not a number."
+                    + " Exiting...");
+            System.exit(1);
+            maximumSecondsSpend = 0L; // unreachable statement
+        }
+        new ExaminationShellApp(maximumSecondsSpend).processs();
+    }
+
+    private ExaminationInputConvertor examinationInputConvertor = new ExaminationInputConvertor();
+    private ExaminationOutputConvertor examinationOutputConvertor = new ExaminationOutputConvertor();
+
+    private Solver solver;
+    private File inputDir;
+    private File outputDir;
+
+    private ExaminationShellApp(long maximumSecondsSpend) {
+        configureSolver(maximumSecondsSpend);
+        configureDataDir();
+    }
+
+    private void configureSolver(long maximumSecondsSpend) {
+        XmlSolverConfigurer configurer = new XmlSolverConfigurer();
+        configurer.configure(SOLVER_CONFIG);
+        configurer.getConfig().getFinishConfig().setMaximumSecondsSpend(maximumSecondsSpend);
+        solver = configurer.buildSolver();
+    }
+
+    private void configureDataDir() {
+        File dataDir =  new File("data/itc2007/examination/");
+        inputDir = new File(dataDir, "input");
+        if (!inputDir.exists()) {
+            throw new IllegalStateException("The directory inputDir (" + inputDir.getAbsolutePath()
+                    + ") does not exist. The working directory should be set to the script directory"
+                    + " or to drools-solver-examples.");
+        }
+        outputDir = new File(dataDir, "output");
+        if (!outputDir.exists()) {
+            throw new IllegalStateException("The directory outputDir (" + outputDir.getAbsolutePath()
+                    + ") does not exist. The working directory should be set to the script directory"
+                    + " or to drools-solver-examples.");
+        }
+    }
+
+    private void processs() {
+        List<File> inputFileList = getInputFileList();
+        for (File inputFile : inputFileList) {
+            Examination examination = examinationInputConvertor.readExamination(inputFile);
+            solver.setStartingSolution(examination);
+            solver.solve();
+            examination = (Examination) solver.getBestSolution();
+            File outputFile = getOutputFile(inputFile);
+            examinationOutputConvertor.writeExamination(examination, outputFile);
+        }
+    }
+
+    public List<File> getInputFileList() {
+        List<File> inputFileList = Arrays.asList(inputDir.listFiles(new ExamInputFileFilter()));
+        Collections.sort(inputFileList);
+        return inputFileList;
+    }
+
+    private File getOutputFile(File inputFile) {
+        String outputFileName = inputFile.getName().replaceAll("\\.exam$", ".sln");
+        return new File(outputDir, outputFileName);
+    }
+
+    public class ExamInputFileFilter implements FileFilter {
+
+        public boolean accept(File file) {
+            if (file.isDirectory() || file.isHidden()) {
+                return false;
+            }
+            return file.getName().endsWith(".exam");
+        }
+
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java	2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java	2008-02-05 20:57:46 UTC (rev 18327)
@@ -78,7 +78,7 @@
         }
     }
 
-    private Examination readExamination(BufferedReader bufferedReader) throws IOException {
+    public Examination readExamination(BufferedReader bufferedReader) throws IOException {
         Examination examination = new Examination();
         examination.setId(0L);
 

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java	2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java	2008-02-05 20:57:46 UTC (rev 18327)
@@ -47,7 +47,7 @@
         }
     }
 
-    private void writeExamination(Examination examination, File outputFile) {
+    public void writeExamination(Examination examination, File outputFile) {
         BufferedWriter bufferedWriter = null;
         try {
             bufferedWriter = new BufferedWriter(new FileWriter(outputFile));
@@ -59,7 +59,7 @@
         }
     }
 
-    private void writeExamination(Examination examination, BufferedWriter bufferedWriter) throws IOException {
+    public void writeExamination(Examination examination, BufferedWriter bufferedWriter) throws IOException {
         Collections.sort(examination.getExamList(), new PersistableIdComparator()); // TODO remove me when obsolete
         for (Exam exam : examination.getExamList()) {
             bufferedWriter.write(exam.getPeriod().getId() + ", " + exam.getRoom().getId() + "\r\n");

Modified: labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml	2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml	2008-02-05 20:57:46 UTC (rev 18327)
@@ -21,6 +21,14 @@
             <directory>src/main/assembly/scripts</directory>
             <outputDirectory/>
         </fileSet>
+        <fileSet>
+            <directory>src/main/assembly/emptydir</directory>
+            <outputDirectory>data/itc2007/examination/output</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/assembly/emptydir</directory>
+            <outputDirectory>data/itc2007/examination/solved</outputDirectory>
+        </fileSet>
     </fileSets>
 
     <moduleSets>

Modified: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh
===================================================================
--- labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh	2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh	2008-02-05 20:57:46 UTC (rev 18327)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 mainJar=lib/drools-solver-examples-4.1.0.SNAPSHOT.jar
-mainClass=org.drools.solver.examples.itc2007.examination.app.ExaminationCmdApp
+mainClass=org.drools.solver.examples.itc2007.examination.app.ExaminationShellApp
 
 echo "Usage: ./runExamination.sh [maximumSecondsSpendPerSolution]"
 echo "For example: ./runExamination.sh 429"

Added: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.odt
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.odt
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.pdf
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list