00001 #include "GLConstants.h"
00002 #include "GLParametersGeneticAlgorithm.h"
00003
00004 static const int INITIAL_POPULATION_SIZE = 40;
00005 static const double DEFAULT_MUTATION_RATE = 0.5;
00006 static const int MAXIMUM_MUTANTS_PER_GENERATION = 50;
00007 static const int MAXIMUM_CHILDREN_PER_GENERATION = 30;
00008
00013 GLParametersGeneticAlgorithm::GLParametersGeneticAlgorithm(
00014 const GLParametersGeneticAlgorithm* source):
00015
00016 m_breeder_params(NULL),
00017 m_breeder_type(source->m_breeder_type),
00018 m_children_per_generation(source->m_children_per_generation),
00019 m_crossover_params(NULL),
00020 m_crossover_type(source->m_crossover_type),
00021 m_initial_population_size(source->m_initial_population_size),
00022 m_keep_last_generation(source->m_keep_last_generation),
00023 m_maximum_population_size(source->m_maximum_population_size),
00024 m_minimum_population_size(source->m_minimum_population_size),
00025 m_mutants_per_generation(source->m_mutants_per_generation),
00026 m_mutation_policy(source->m_mutation_policy),
00027 m_mutation_rate(source->m_mutation_rate),
00028 m_mutator_params(NULL),
00029 m_mutator_type(source->m_mutator_type),
00030 m_other_params(NULL),
00031 m_population_params(NULL),
00032 m_ranker_params(NULL),
00033 m_ranker_type(source->m_ranker_type),
00034 m_selectionist_params(NULL),
00035 m_selectionist_type(source->m_selectionist_type),
00036 m_variator_params(NULL),
00037 m_variator_type(source->m_variator_type)
00038 {
00039
00040 if (source->m_breeder_params != NULL)
00041 m_breeder_params = source->m_breeder_params->copy();
00042 if (source->m_crossover_params != NULL)
00043 m_crossover_params = source->m_crossover_params->copy();
00044 if (source->m_mutator_params != NULL)
00045 m_mutator_params = source->m_mutator_params->copy();
00046 if (source->m_other_params != NULL)
00047 m_other_params = source->m_other_params->copy();
00048 if (source->m_population_params != NULL)
00049 m_population_params = source->m_population_params->copy();
00050 if (source->m_ranker_params != NULL)
00051 m_ranker_params = source->m_ranker_params->copy();
00052 if (source->m_selectionist_params != NULL)
00053 m_selectionist_params = source->m_selectionist_params->copy();
00054 if (source->m_variator_params != NULL)
00055 m_variator_params = source->m_variator_params->copy();
00056 }
00057
00061 GLParametersGeneticAlgorithm::~GLParametersGeneticAlgorithm()
00062 {
00063 if (m_breeder_params != NULL) delete m_breeder_params;
00064 if (m_crossover_params != NULL) delete m_crossover_params;
00065 if (m_mutator_params != NULL) delete m_mutator_params;
00066 if (m_other_params != NULL) delete m_other_params;
00067 if (m_population_params != NULL) delete m_population_params;
00068 if (m_ranker_params != NULL) delete m_ranker_params;
00069 if (m_selectionist_params != NULL) delete m_selectionist_params;
00070 if (m_variator_params != NULL) delete m_variator_params;
00071 }
00072
00076 void GLParametersGeneticAlgorithm::setDefaultValues()
00077 {
00078
00079 m_breeder_type = GLConstants::BREEDER_STANDARD;
00080 m_children_per_generation = MAXIMUM_CHILDREN_PER_GENERATION;
00081 m_crossover_type = GLConstants::CROSSOVER_VECTOR_KEEP_MATCHING_INT;
00082 m_initial_population_size = INITIAL_POPULATION_SIZE;
00083 m_keep_last_generation = false;
00084 m_maximum_population_size = m_initial_population_size;
00085 m_minimum_population_size = m_initial_population_size;
00086 m_mutants_per_generation = MAXIMUM_MUTANTS_PER_GENERATION;
00087 m_mutation_policy = GLConstants::MUTATE_PARENTS |
00088 GLConstants::MUTATE_CHILDREN;
00089 m_mutation_rate = DEFAULT_MUTATION_RATE;
00090 m_mutator_type = GLConstants::MUTATOR_GENES_SWAPPING;
00091 m_ranker_type = GLConstants::RANKER_STANDARD_SO;
00092 m_selectionist_type = GLConstants::SELECTIONIST_ELITIST;
00093 m_variator_type = GLConstants::VARIATOR_STANDARD;
00094
00095
00096 m_breeder_params = NULL;
00097 m_crossover_params = NULL;
00098 m_mutator_params = NULL;
00099 m_other_params = NULL;
00100 m_population_params = NULL;
00101 m_ranker_params = NULL;
00102 m_selectionist_params = NULL;
00103 m_variator_params = NULL;
00104 }