package multipath; import multipath.*; import java.util.*; import java.text.*; public abstract class GeneticAlgorithm { //default parameter value: control center public static int populationSizeD=100; public static int stringSizeD=5; public static double matingProbD=0.7; public static double mutationProbD=0.2; public static int numberGenerationsD=100; //auto run times public static int autoRunD=3; //tournament selection public static int tournamentD=50; //crossover method public static String[] crossover={"Mating","ox","pmx","cx","sx"}; public static String[] mutation={"Mutation","inversion","swap"}; //parameters public static int populationSize; public static int stringSize; public static double matingProb; public static double mutationProb; public static int numberGenerations; protected Vector generation=new Vector(); public static int generationNumber; protected Random rnd; //default constructor public GeneticAlgorithm(){ this.populationSize=populationSizeD; this.stringSize=stringSizeD; this.mutationProb=mutationProbD; this.matingProb=matingProbD; this.numberGenerations=numberGenerationsD; rnd=new Random(); for(int i=1;i<=10000;i++){ rnd.nextDouble(); } } public GeneticAlgorithm(int stringSize, int populationSize,int numGen,double matingProb,double mutationProb) { this.populationSize=populationSize; this.stringSize=stringSize; this.mutationProb=mutationProb; this.matingProb=matingProb; this.numberGenerations=numGen; rnd=new Random(); for(int i=1;i<=10000;i++){ rnd.nextDouble(); } } public abstract void run(); protected abstract void generateInitialGeneration(); protected abstract void updateBestSolution(); protected abstract void generateNextGeneration(); //end }