Search in sources :

Example 1 with FitnessWriter

use of org.kanonizo.reporting.FitnessWriter in project kanonizo by kanonizo.

the class GeneticAlgorithm method generateSolution.

@Override
public void generateSolution() {
    if (writer == null) {
        writer = new FitnessWriter(this);
    }
    LocalDateTime date = LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), TimeZone.getDefault().toZoneId());
    DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy 'at' HH:mm:ss");
    logger.info("Genetic Algorithm started searching at : " + date.format(format));
    generateInitialPopulation();
    startTime = System.currentTimeMillis();
    logger.info("Genetic Algorithm running for: " + MAX_EXECUTION_TIME / 1000 + " seconds");
    setCurrentOptimal(population.get(0));
    Display d = Framework.getInstance().getDisplay();
    System.out.println("Genetic Algorithm");
    while (!shouldFinish()) {
        age++;
        evolve();
        sortPopulation();
        setCurrentOptimal(population.get(0));
        if (TRACK_GENERATION_FITNESS) {
            writer.addRow(age, getCurrentOptimal().getFitness());
        }
        d.reportProgress(Math.min((double) System.currentTimeMillis() - startTime, MAX_EXECUTION_TIME), MAX_EXECUTION_TIME);
    }
    writer.write();
    System.out.println();
    StoppingCondition terminatingStoppingCondition = stoppingConditions.stream().filter(cond -> cond.shouldFinish(this)).findFirst().get();
    LocalDateTime enddate = LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), TimeZone.getDefault().toZoneId());
    logger.info("Total Number of iterations: " + age + "\n");
    logger.info("Genetic Algorithm finished execution at : " + enddate.format(format));
    logger.info("Genetic Algorithm terminated by: " + terminatingStoppingCondition.getClass().getSimpleName());
}
Also used : LocalDateTime(java.time.LocalDateTime) StoppingCondition(org.kanonizo.algorithms.stoppingconditions.StoppingCondition) FitnessWriter(org.kanonizo.reporting.FitnessWriter) DateTimeFormatter(java.time.format.DateTimeFormatter) Display(org.kanonizo.display.Display)

Example 2 with FitnessWriter

use of org.kanonizo.reporting.FitnessWriter in project kanonizo by kanonizo.

the class RandomSearchAlgorithm method generateSolution.

@Override
public void generateSolution() {
    FitnessWriter writer = new FitnessWriter(this);
    List<TestCase> testCases = problem.getTestSuite().getTestCases();
    Display d = Framework.getInstance().getDisplay();
    System.out.println("Running Random Search");
    while (!shouldFinish()) {
        age++;
        TestSuite clone = getCurrentOptimal().clone();
        List<TestCase> randomOrdering = generateRandomOrder(testCases);
        clone.setTestCases(randomOrdering);
        fitnessEvaluations++;
        if (clone.fitter(getCurrentOptimal()).equals(clone)) {
            setCurrentOptimal(clone);
        }
        if (TRACK_GENERATION_FITNESS) {
            writer.addRow(age, getCurrentOptimal().getFitness());
        } else {
            writer.addRow(age, clone.getFitness());
        }
        d.reportProgress(Math.min((double) System.currentTimeMillis() - startTime, MAX_EXECUTION_TIME), MAX_EXECUTION_TIME);
    }
    System.out.println();
    writer.write();
}
Also used : TestSuite(org.kanonizo.framework.objects.TestSuite) TestCase(org.kanonizo.framework.objects.TestCase) FitnessWriter(org.kanonizo.reporting.FitnessWriter) Display(org.kanonizo.display.Display)

Aggregations

Display (org.kanonizo.display.Display)2 FitnessWriter (org.kanonizo.reporting.FitnessWriter)2 LocalDateTime (java.time.LocalDateTime)1 DateTimeFormatter (java.time.format.DateTimeFormatter)1 StoppingCondition (org.kanonizo.algorithms.stoppingconditions.StoppingCondition)1 TestCase (org.kanonizo.framework.objects.TestCase)1 TestSuite (org.kanonizo.framework.objects.TestSuite)1