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());
}
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();
}
Aggregations