public void runFromConfigFile(String configPath) throws Exception { ProblemConfig config = new ProblemConfig(XmlHelper.readXml(new File(configPath))); String problemID = config.getDataNode("Problem").getValueStr("id"); String algorithmID = config.getDataNode("Algorithm").getValueStr("id"); // provider and factory IProblemProvider provider = ProblemProvider.getProblemProviders().get(problemID); IAlgorithmFactory factory = provider.getAlgorithmFactory(algorithmID); // problem instance ProblemInstanceInfo instance = provider.initProblemInstance(config); // algorithm IAlgorithmAdapter algorithm = factory.createAlgorithm(instance, config); AlgorithmParams algNode = config.getAlgorithmParams(); Object[][] solutions = provider.generateInitialSolutions( algNode.getDataNode("Parameters").getValueInt("numSolutions"), instance); System.out.printf("%s: %4s %s\n", "Problem", "", problemID); System.out.printf("%s: %2s %s\n", "Algorithm", "", algorithmID); System.out.printf("%s: %3s %s\n", "Instance", "", instance); System.out.println("Running ..."); algorithm.solutionsFromPhenotype(solutions); algorithm.setParameters(algNode); algorithm.startSearching(); solutions = algorithm.solutionsToPhenotype(); // phenotype evaluator IPhenotypeEvaluator evaluator = provider.initPhenotypeEvaluator(); double[] result = evaluator.evaluate(solutions[0], instance); System.out.printf("%s: %5s %s\n", "Result", "", result[0]); // System.out.println(": " + result[0]); System.out.printf("%s: %3s ", "Solution", ""); for (int i = 0; i < solutions[0].length; i++) System.out.print(solutions[0][i] + " "); System.out.println(); AlgorithmReport report = algorithm.getReport(); report.save("output/" + System.currentTimeMillis() + ".xml"); }