00001 #ifndef GLFACTORY_H_
00002 #define GLFACTORY_H_
00003
00004 class GLBaseBreeder;
00005 class GLBaseCrossover;
00006 class GLBaseGeneticAlgorithm;
00007 class GLBaseMutator;
00008 class GLBaseParameters;
00009 class GLBaseRanker;
00010 class GLBaseSelectionist;
00011 class GLBaseVariator;
00012
00019 class GLFactory
00020 {
00021 public:
00025 GLFactory() {};
00029 virtual ~GLFactory(){};
00030
00041 virtual GLBaseBreeder* createBreeder(
00042 int breeder_type,
00043 GLBaseCrossover* crossover,
00044 GLBaseParameters* breeder_parameters = NULL,
00045 GLBaseGeneticAlgorithm* ga = NULL);
00053 virtual GLBaseCrossover* createCrossover(
00054 int crossover_type,
00055 GLBaseParameters* crossover_parameters = NULL,
00056 GLBaseGeneticAlgorithm* ga = NULL);
00057
00067 virtual GLBaseMutator* createMutator(int mutator_type,
00068 double mutation_rate,
00069 GLBaseParameters* mutator_parameters = NULL,
00070 GLBaseGeneticAlgorithm* ga=NULL);
00071
00078 virtual GLBaseRanker* createRanker(int ranker_type,
00079 GLBaseParameters* ranker_parameters = NULL,
00080 GLBaseGeneticAlgorithm* ga = NULL);
00081
00090 virtual GLBaseSelectionist* createSelectionist(int selectionist_type,
00091 GLBaseRanker* ranker,
00092 GLBaseParameters* selectionist_parameters = NULL,
00093 GLBaseGeneticAlgorithm* ga = NULL);
00094
00102 virtual GLBaseVariator* createVariator(int variator_type,
00103 GLBaseMutator* mutator,
00104 GLBaseParameters* variator_parameters = NULL,
00105 GLBaseGeneticAlgorithm* ga = NULL);
00106 };
00107
00108 #endif