• Main Page
  • Modules
  • Classes
  • Files
  • File List

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 
00015 class Fitness
00016 {
00017 protected:
00018     bool valid_;    
00019     double value_;  
00020 
00021     // regular pointer (http://www.boost.org/doc/libs/1_36_0/libs/smart_ptr/sp_techniques.html#from_this)
00022     // initialized in Individual::initialize()
00023     Individual* individual_;
00024 
00025 public:
00026     unsigned int cid;   
00027 
00028     Fitness()
00029     {   
00030         valid_ = true;
00031         cid = 0;
00032     }
00033 
00038     virtual bool isBetterThan(FitnessP) = 0;
00039 
00040     virtual Fitness* copy() = 0;    
00041 
00043     bool isValid()
00044     {   return valid_;  }
00045 
00047     void setInvalid()
00048     {   valid_ = false; }
00049 
00051     virtual void setValue(double value)
00052     {   value_ = value; }
00053 
00055     virtual double getValue()
00056     {   return value_;  }
00057 
00059     virtual void write(XMLNode&) { }
00060 
00062     std::string toString()
00063     {
00064         XMLNode xFit;
00065         write(xFit);
00066         char *s = xFit.createXMLString();
00067         std::string out(s);
00068         freeXMLString(s);
00069         return out;
00070     }
00071 
00076     virtual void read(XMLNode& xFitness)
00077     {
00078         XMLCSTR val = xFitness.getAttributeValue();
00079         if(val) {
00080             value_ = xmltof(val);
00081             valid_ = true;
00082         }
00083         else
00084             valid_ = false;
00085     }
00086 
00087     virtual ~Fitness()
00088     {   }
00089 };
00090 typedef boost::shared_ptr<Fitness> FitnessP;
00091 
00092 #endif // Fitness_h
00093 

Generated on Tue Nov 4 2014 13:04:31 for ECF by  doxygen 1.7.1