package org.epochx.gui; import java.awt.BorderLayout; 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.GenerationEvent.EndGeneration; import org.epochx.event.stat.AbstractStat; import org.epochx.event.stat.GenerationAverageDoubleFitness; import org.epochx.event.stat.GenerationBestFitness; import org.epochx.event.stat.GenerationNumber; import org.epochx.event.stat.GenerationWorstFitness; import org.epochx.monitor.Monitor; import org.epochx.monitor.graph.Graph; import org.epochx.monitor.table.Table; import org.epochx.monitor.tree.TreeVertex; import org.epochx.monitor.visualization.AncestryFinder; import org.epochx.monitor.visualization.InformationPanel; import org.epochx.monitor.visualization.OperationPanel; 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.Crossover; 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 MonitorGraphTest { /** * @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, 1.0); config.set(Reproduction.PROBABILITY, 0.0); config.set(Mutation.PROBABILITY, 0.0); config.set(BranchedBreeder.ELITISM, 0); config.set(MaximumGenerations.MAXIMUM_GENERATIONS, 100); config.set(TreeFactory.MAX_DEPTH, 5); config.set(TreeFactory.INITIAL_DEPTH, 3); 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 Crossover()); // 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); AbstractStat.register(GenerationNumber.class); // our stats monitor Monitor monitor = new Monitor("Frame Graph Test", 1, 2); 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); Graph g = new Graph(); monitor.add(g, 1, 1); InformationPanel ip = new InformationPanel(); g.getViewModel().addGraphViewListener(ip); g.add(ip, BorderLayout.SOUTH); TreeVertex tvPane = new TreeVertex(); g.getViewModel().addGraphViewListener(tvPane); monitor.add(tvPane, 1, 2); OperationPanel opPane = new OperationPanel(); g.getViewModel().addGraphViewListener(opPane); monitor.add(opPane, 1, 2); AncestryFinder af = new AncestryFinder(g.getViewModel()); g.getViewModel().addGraphViewListener(af); monitor.add(af, 1, 2); //EventManager.getInstance().add(EndRun.class, new GraphModelWriter(g.getModel(), "backup.ser")); // we are ready to go! long start = System.currentTimeMillis(); Evolver evolver = new Evolver(); @SuppressWarnings("unused") Population population = evolver.run(); System.out.println("EVOLVER ENDED : " + (System.currentTimeMillis() - start)); } }