Exemplo n.º 1
0
  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");
  }