package org.epochx.gui; import java.io.File; import java.util.ArrayList; import java.util.List; import org.epochx.BranchedBreeder; import org.epochx.Config; import org.epochx.Config.Template; import org.epochx.Evolver; import org.epochx.FitnessEvaluator; import org.epochx.GenerationalStrategy; import org.epochx.GenerationalTemplate; import org.epochx.Initialiser; import org.epochx.MaximumGenerations; import org.epochx.Operator; import org.epochx.Population; import org.epochx.Reproduction; import org.epochx.TerminationCriteria; import org.epochx.TerminationFitness; import org.epochx.event.EventManager; import org.epochx.event.GenerationEvent.EndGeneration; import org.epochx.event.Listener; import org.epochx.event.RunEvent.EndRun; import org.epochx.event.stat.AbstractStat; import org.epochx.event.stat.GenerationAverageDoubleFitness; import org.epochx.event.stat.GenerationBestFitness; import org.epochx.event.stat.GenerationBestIndividuals; import org.epochx.event.stat.GenerationFitnessDiversity; import org.epochx.event.stat.GenerationNumber; import org.epochx.event.stat.GenerationWorstFitness; import org.epochx.monitor.Monitor; import org.epochx.monitor.chart.Chart; import org.epochx.monitor.chart.ChartTrace; import org.epochx.monitor.table.Table; import org.epochx.refactoring.PopulationNeutrality; import org.epochx.refactoring.Problem; import org.epochx.refactoring.initialisation.RampedHalfAndHalf; import org.epochx.refactoring.initialisation.TreeFactory; import org.epochx.refactoring.operator.Mutation; import org.epochx.refactoring.operator.NeutralAwareMutation; import org.epochx.refactoring.problem.EvenParity; import org.epochx.refactoring.representation.CoverageFitness; import org.epochx.selection.TournamentSelector; public class MonitorFrameTest { /** * @param args */ public static void main(String[] args) { Config config = Config.getInstance(); config.set(Template.KEY, new GenerationalTemplate()); // the problem instance // Problem problem = new Multiplexer(2); // SexticPolynomial polynomial = new SexticPolynomial(); Problem problem = new EvenParity(5); config.set(Initialiser.METHOD, new RampedHalfAndHalf(problem.getFunctionSet(), problem.getTerminalSet())); // config.set(Initialiser.METHOD, new // FullMethod(problem.getFunctionSet(), problem.getTerminalSet())); config.set(FitnessEvaluator.FUNCTION, problem); // some parameters config.set(Population.SIZE, 100); // config.set(Crossover.PROBABILITY, 0.9); // config.set(Reproduction.PROBABILITY, 0.1); config.set(BranchedBreeder.ELITISM, 0); config.set(MaximumGenerations.MAXIMUM_GENERATIONS,100); config.set(TreeFactory.MAX_DEPTH, 17); config.set(TreeFactory.INITIAL_DEPTH, 6); config.set(TournamentSelector.TOURNAMENT_SIZE, 4); config.set(NeutralAwareMutation.NEUTRAL_MOVES_ENABLED, true); // genetic operators config.set(Reproduction.PROBABILITY, 0.10); config.set(Mutation.PROBABILITY, 0.90); List<Operator> operators = new ArrayList<Operator>(); operators.add(new Reproduction()); operators.add(new Mutation()); // operators.add(new StrictInflateMutation()); // operators.add(new StrictDeflateMutation()); // operators.add(new PointTerminalMutation()); config.set(BranchedBreeder.OPERATORS, operators); // termination criteria List<TerminationCriteria> criteria = new ArrayList<TerminationCriteria>(); criteria.add(new MaximumGenerations()); criteria.add(new TerminationFitness(new CoverageFitness(0))); config.set(GenerationalStrategy.TERMINATION_CRITERIA, criteria); AbstractStat.register(PopulationNeutrality.class); // our stats monitor Monitor monitor = new Monitor("Monitor Frame", 1, 2); final Table table1 = new Table("Fitnesses Table"); table1.addStat(GenerationNumber.class); table1.addStat(GenerationBestFitness.class); table1.addStat(GenerationWorstFitness.class); table1.addStat(GenerationAverageDoubleFitness.class); table1.addListener(EndGeneration.class); monitor.add(table1, 1, 1); Table table2 = new Table("Fitness Diversity Table"); table2.addStat(GenerationNumber.class); table2.addStat(GenerationFitnessDiversity.class); table2.addListener(EndGeneration.class); monitor.add(table2, 1, 2); Table table3 = new Table("Best Individual Table"); table3.addStat(GenerationNumber.class); table3.addStat(GenerationBestIndividuals.class); table3.addListener(EndGeneration.class); monitor.add(table3, 1, 1); Chart chart1 = new Chart("Fitnesses Chart"); ChartTrace trace1 = new ChartTrace(); trace1.setXStat(GenerationNumber.class); trace1.setYStat(GenerationBestFitness.class); chart1.addTrace(trace1); ChartTrace trace2 = new ChartTrace(); trace2.setXStat(GenerationNumber.class); trace2.setYStat(GenerationWorstFitness.class); chart1.addTrace(trace2); ChartTrace trace3 = new ChartTrace(); trace3.setXStat(GenerationNumber.class); trace3.setYStat(GenerationAverageDoubleFitness.class); chart1.addTrace(trace3); /* ChartTrace traceTab[] = new ChartTrace[1000]; for(int i = 0; i<1000; i++) { traceTab[i] = new ChartTrace(chart1); traceTab[i].setXStat(GenerationNumber.class); traceTab[i].setYStat(GenerationFitnessDiversity.class); } //*/ chart1.addListener(EndGeneration.class); monitor.add(chart1, 1, 2); Chart chart2 = new Chart("Fitness Diversity Chart"); ChartTrace trace4 = new ChartTrace(); trace4.setXStat(GenerationNumber.class); trace4.setYStat(GenerationFitnessDiversity.class); chart2.addTrace(trace4); chart2.addListener(EndGeneration.class); monitor.add(chart2, 1, 2); // we are ready to go! Evolver evolver = new Evolver(); @SuppressWarnings("unused") Population population = evolver.run(); } }