00001 #include "GLFitnessSingleObjective.h" 00002 #include "GLOrganismVector.h" 00003 #include "GLRuntimeError.h" 00004 #include "GLTestEvaluator.h" 00005 00009 GLTestEvaluator::GLTestEvaluator(): 00010 GLBaseEvaluator() 00011 { 00012 }//constructor 00013 00021 GLBaseFitness* GLTestEvaluator::evaluateOrganism(GLBaseOrganism* organism) 00022 { 00023 GLOrganismVector<int> *org = dynamic_cast<GLOrganismVector<int>*>(organism); 00024 if (org == NULL) 00025 { 00026 char errormsg[1000]; 00027 sprintf(errormsg, "\nGLTestEvaluator::evaluateOrganism\n" 00028 "Passed organism must be valid pointer to " 00029 "class GLOrganismVector<int>\n"); 00030 throw GLRuntimeError(errormsg); 00031 } 00032 int sum = 0; 00033 //loop through all genes 00034 for (int i = 1; i < org->getSize(); i++) 00035 { 00036 sum += abs((*org)[i - 1] - (*org)[i]); 00037 } 00038 increaseCounter(); 00039 return new GLFitnessSingleObjective<int>(sum); 00040 }//evaluateOrganism