    001    package ifs.example.jobshop;
    002
    003    import ifs.model.*;
    004    import ifs.solver.*;
    005    import ifs.solution.*;
    006    import ifs.util.*;
    007    import java.io.*;
    008    import java.util.*;
    009
    010    /**
    011     * Test of Job Shop problem. It takes one argument -- property file with all the parameters.
    012     * <br><br>
    013     * Test's parameters:
    014     * <br>
    015     * <table border='1'><tr><th>Parameter</th><th>Type</th><th>Comment</th></tr>
    016     * <tr><td>General.Input</td><td>{@link String}</td><td>Input file describing the job shop problem</td></tr>
    017     * <tr><td>General.Output</td><td>{@link String}</td><td>Output folder where a log file and a solution (solution.txt) will be placed</td></tr>
    018     * </table>
    019     * <br>
    020     *
    021     * @author <a href="mailto:muller@ktiml.mff.cuni.cz">Tomáš Müller</a>
    022     * @version 1.0
    023     */
    024    public class Test {
    025        private static java.text.DecimalFormat sDoubleFormat = new java.text.DecimalFormat("0.00",new java.text.DecimalFormatSymbols(Locale.US));
    026        private static java.text.SimpleDateFormat sDateFormat = new java.text.SimpleDateFormat("dd-MMM-yy_HHmmss",java.util.Locale.US);
    027        private static org.apache.log4j.Logger sLogger = org.apache.log4j.Logger.getLogger(Test.class);
    028
    029        public static void test(DataProperties properties) {
    030            try {
    031                String inputFile = properties.getProperty("General.Input");
    032                JobShopModel model = JobShopModel.loadModel(inputFile);
    033                Solver s = new Solver(properties);
    034                s.setInitalSolution(model);
    035                s.start();
    036                s.getSolverThread().join();
    037                Solution best = s.currentSolution();
    038                best.restoreBest();
    039                sLogger.info("Best solution info:"+best.getInfo());
    040                sLogger.info("Best solution:"+model.toString());
    041                model.save(properties.getProperty("General.Output")+File.separator+"solution.txt");
    042            } catch (Exception e) {
    043                e.printStackTrace();
    044            }
    045        }
    046
    047        public static void main(String[] args) {
    048            try {
    049                Progress.getInstance().addProgressListener(new ProgressWriter(System.out));
    050
    051                File inputCfg = new File(args[0]);
    052                DataProperties properties = ToolBox.loadProperties(inputCfg);
    053                String outDir = properties.getProperty("General.Output",".")+File.separator + inputCfg.getName().substring(0,inputCfg.getName().lastIndexOf('.'))+File.separator+sDateFormat.format(new Date());
    054                (new File(outDir)).mkdirs();
    055                properties.setProperty("General.Output", outDir.toString());
    056                ToolBox.configureLogging(outDir, null);
    057                test(properties);
    058            } catch (Exception e) {
    059                e.printStackTrace();
    060            }
    061        }
    062    }