package org.epochx.semantics.gp.example;
import java.util.ArrayList;
import java.util.List;
import org.epochx.epox.DoubleVariable;
import org.epochx.epox.Node;
import org.epochx.epox.dbl.*;
import org.epochx.gp.model.GPModel;
import org.epochx.gp.op.crossover.KozaCrossover;
import org.epochx.gp.op.init.RampedHalfAndHalfInitialiser;
import org.epochx.life.GenerationAdapter;
import org.epochx.life.Life;
import org.epochx.op.selection.TournamentSelector;
import org.epochx.stats.StatField;
import org.epochx.stats.Stats;
public class TestCubic {
public static void main(String[] args) {
// syntax
List<Node> syntax = new ArrayList<Node>();
syntax.add(new AddFunction());
syntax.add(new SubtractFunction());
syntax.add(new ProtectedDivisionFunction());
syntax.add(new MultiplyFunction());
DoubleVariable x = new DoubleVariable("X");
syntax.add(x);
// parameters
GPModel reg = new CubicRegression();
//reg.setSyntax(syntax);
reg.setPopulationSize(500);
reg.setCrossover(new KozaCrossover(reg));
reg.setCrossoverProbability(0.9);
reg.setMutationProbability(0);
reg.setInitialiser(new RampedHalfAndHalfInitialiser(reg));
reg.setNoGenerations(50);
reg.setNoRuns(1);
reg.setPoolSelector(new TournamentSelector(reg, 7));
reg.setPoolSize(50);
reg.setReproductionProbability(0.1);
reg.setMaxDepth(17);
reg.setMaxInitialDepth(6);
reg.setTerminationFitness(-1);
// set up stats
evolver.getLife().addGenerationListener(new GenerationAdapter() {
public void onGenerationEnd() {
Stats.get().print(StatField.GEN_NUMBER, StatField.GEN_FITNESS_MAX, StatField.GEN_FITNESS_MIN, StatField.GEN_FITTEST_PROGRAM);
}
});
// run
reg.run();
}
}