use of org.kanonizo.display.Display 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.display.Display in project kanonizo by kanonizo.
the class Main method main.
public static void main(String[] args) {
Framework fw = Framework.getInstance();
// org.evosuite.Properties.TT = true;
Options options = TestSuitePrioritisation.getCommandLineOptions();
CommandLine line = null;
try {
line = new DefaultParser().parse(options, args, false);
if (TestSuitePrioritisation.hasHelpOption(line)) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("Search Algorithms", options);
return;
}
Reflections r = Util.getReflections();
Set<Field> parameters = r.getFieldsAnnotatedWith(Parameter.class);
TestSuitePrioritisation.handleProperties(line, parameters);
if (MutationProperties.VISIT_MUTANTS) {
InstrumentingClassLoader.getInstance().setVisitMutants(true);
}
setupFramework(line, fw);
} catch (Exception e) {
logger.error(e);
}
Display d = null;
if (!line.hasOption(TestSuitePrioritisation.GUI_SHORT)) {
d = new ConsoleDisplay();
d.initialise();
fw.setDisplay(d);
fw.addSelectionListener((ConsoleDisplay) d);
try {
fw.run();
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
}
// necessary due to random thread creation during test cases (don't do
// this ever again)
java.lang.System.exit(0);
} else {
d = new KanonizoFrame();
d.initialise();
}
}
use of org.kanonizo.display.Display 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