• Main Page
  • Classes
  • Files
  • File List

D:/Radagast_D/Projekt/ECF_trunk/ECF/Fitness.h

00001 #ifndef Fitness_h
00002 #define Fitness_h
00003 
00004 class Individual;
00005 typedef boost::shared_ptr<Individual> IndividualP;
00006 class Fitness;
00007 typedef boost::shared_ptr<Fitness> FitnessP;
00008 
00014 class Fitness
00015 {
00016 protected:
00017     bool valid_;    
00018     double value_;  
00019 
00020     // regular pointer (http://www.boost.org/doc/libs/1_36_0/libs/smart_ptr/sp_techniques.html#from_this)
00021     // initialized in Individual::initialize()
00022     Individual* individual_;
00023 
00024 public:
00025     unsigned int cid;   
00026 
00027     Fitness()
00028     {   
00029         valid_ = true;
00030         cid = 0;
00031     }
00032 
00037     virtual bool isBetterThan(FitnessP) = 0;
00038 
00039     virtual Fitness* copy() = 0;    
00040 
00044     bool isValid()
00045     {   return valid_;  }
00046 
00050     void setInvalid()
00051     {   valid_ = false; }
00052 
00056     virtual void setValue(double value)
00057     {   value_ = value; }
00058 
00062     virtual double getValue()
00063     {   return value_;  }
00064 
00068     virtual void write(XMLNode&) { }
00069 
00074     virtual void read(XMLNode& xFitness)
00075     {
00076         XMLCSTR val = xFitness.getAttributeValue();
00077         if(val) {
00078             value_ = xmltof(val);
00079             valid_ = true;
00080         }
00081         else
00082             valid_ = false;
00083     }
00084 
00085     virtual ~Fitness()
00086     {   }
00087 };
00088 typedef boost::shared_ptr<Fitness> FitnessP;
00089 
00090 #endif // Fitness_h
00091 

Generated on Wed Sep 1 2010 14:31:21 for ECF by  doxygen 1.7.1