00001 #include "SIGEL_GP/SIG_GPFitnessFunction.h" 00002 00003 #include <cmath> 00004 00005 SIGEL_GP::SIG_GPFitnessFunction::SIG_GPFitnessFunction( 00006 SIGEL_Program::SIG_Program & pprogram, 00007 SIGEL_Robot::SIG_Robot & prob, 00008 SIGEL_Environment::SIG_Environment & penvironment, 00009 SIGEL_Simulation::SIG_SimulationParameters & psimparameter, 00010 QString pname) : 00011 program(pprogram), 00012 rob(prob), 00013 environment(penvironment), 00014 simparameter(psimparameter), 00015 name(pname) 00016 00017 {}; 00018 00019 SIGEL_GP::SIG_GPFitnessFunction::~SIG_GPFitnessFunction() {}; 00020 00021 bool SIGEL_GP::SIG_GPFitnessFunction::isValid( double value ) 00022 { 00023 return ( (value != HUGE_VAL) && (value != (-HUGE_VAL)) && (value==value) ); 00024 }; 00025 00026 DL_vector SIGEL_GP::SIG_GPFitnessFunction::normalizeRobotPosition( DL_vector originalPosition, 00027 DL_matrix actualRobotRotation ) 00028 { 00029 DL_vector robotsRealOrigin = rob.initialLocation; 00030 robotsRealOrigin.timesis( -1 ); 00031 00032 DL_vector normalizedPosition; 00033 00034 actualRobotRotation.times( &robotsRealOrigin, 00035 &normalizedPosition ); 00036 00037 normalizedPosition.plusis( &originalPosition ); 00038 00039 return normalizedPosition; 00040 };