00001 #include <NLstl_utils.h> 00002 00003 #include "GLBaseGaStatus.h" 00004 #include "GLConstants.h" 00005 #include "GLUtils.h" 00006 00010 GLBaseGaStatus::GLBaseGaStatus(): 00011 m_timer("", false) 00012 { 00013 m_current_state = GLConstants::GA_STATE_INITIALISED; 00014 m_best_ever_organisms.clear(); 00015 m_current_generation = 0; 00016 m_evaluator_calls = 0; 00017 m_generations_since_solution_improvement = 0; 00018 m_generations_since_new_best_found = 0; 00019 m_last_generation.clear(); 00020 m_time_required = 0; 00021 }//constructor 00022 00027 GLBaseGaStatus::GLBaseGaStatus(const GLBaseGaStatus* source) 00028 { 00029 m_current_state = source-> m_current_state; 00030 GLUtils::makeHardCopy(source->m_best_ever_organisms, 00031 m_best_ever_organisms); 00032 GLUtils::makeHardCopy(source->m_last_generation, 00033 m_last_generation); 00034 m_current_generation = source->m_current_generation; 00035 m_evaluator_calls = source->m_evaluator_calls; 00036 m_generations_since_solution_improvement = 00037 source->m_generations_since_solution_improvement; 00038 m_generations_since_new_best_found = 00039 source->m_generations_since_new_best_found; 00040 m_time_required = source->m_time_required; 00041 m_timer = source->m_timer; 00042 }//constructor 00043 00044 00048 GLBaseGaStatus::~GLBaseGaStatus() 00049 { 00050 for_each(m_best_ever_organisms.begin(), m_best_ever_organisms.end(), 00051 nlutils::DeleteObject()); 00052 for_each(m_last_generation.begin(), m_last_generation.end(), 00053 nlutils::DeleteObject()); 00054 m_best_ever_organisms.clear(); 00055 m_last_generation.clear(); 00056 }//destructor 00057 00062 ostream& GLBaseGaStatus::toStream(ostream& out) const 00063 { 00064 //print the status of GA 00065 out << "GA current state:" << m_current_state << " (" 00066 << GLConstants::toStringGaState(m_current_state) << ")" << endl; 00067 out << "--------- Last generation (if kept and GA stopped) ---------\n"; 00068 out << "Size: " << m_last_generation.size() 00069 << endl; 00070 GLUtils::printVectorOfOrganisms(out, m_last_generation); 00071 out << "Current generation: " << m_current_generation << endl; 00072 out << "Generation since solution improved: " 00073 << m_generations_since_solution_improvement << endl; 00074 out << "Generation since new best was found: " 00075 << m_generations_since_new_best_found << endl; 00076 out << "Number of evaluator calls: " 00077 << m_evaluator_calls << endl; 00078 //print the best ever organisms 00079 out << "--------- Best ever organisms ---------\n"; 00080 out << "Number or organisms: " 00081 << m_best_ever_organisms.size() << endl; 00082 GLUtils::printVectorOfOrganisms(out, m_best_ever_organisms); 00083 return out; 00084 }//toStream