00001 #ifndef FLOATINGPOINT_H_ 00002 #define FLOATINGPOINT_H_ 00003 00004 #include "../RealValueGenotype.h" 00005 #include "FloatingPointMutSimple.h" 00006 #include "FloatingPointCrsOnePoint.h" 00007 #include "FloatingPointCrsArithmetic.h" 00008 #include "FloatingPointCrsDiscrete.h" 00009 #include "FloatingPointCrsArithmeticSimple.h" 00010 #include "FloatingPointCrsArithmeticSingle.h" 00011 #include "FloatingPointCrsAverage.h" 00012 #include "FloatingPointCrsFlat.h" 00013 #include "FloatingPointCrsBlx.h" 00014 #include "FloatingPointCrsHeuristic.h" 00015 #include "FloatingPointCrsRandom.h" 00016 #include "FloatingPointCrsSbx.h" 00017 #include "FloatingPointCrsBga.h" 00018 00019 namespace FloatingPoint 00020 { 00021 00036 class FloatingPoint: public RealValueGenotype { 00037 00038 public: 00039 00040 FloatingPoint () 00041 { name_="FloatingPoint"; } 00042 00043 bool initialize (StateP state); 00044 00045 void registerParameters(StateP state); 00046 00048 double getLBound () 00049 { return minValue_; } 00050 00052 double getUBound () 00053 { return maxValue_; } 00054 00055 FloatingPoint* copy() 00056 { 00057 FloatingPoint *newObject = new FloatingPoint(*this); 00058 return newObject; 00059 } 00060 00061 std::vector<CrossoverOpP> getCrossoverOp() 00062 { 00063 std::vector<CrossoverOpP> crx; 00064 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsOnePoint)); 00065 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsArithmetic)); 00066 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsDiscrete)); 00067 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsArithmeticSimple)); 00068 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsArithmeticSingle)); 00069 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsAverage)); 00070 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsFlat)); 00071 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsBlx)); 00072 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsHeuristic)); 00073 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsRandom)); 00074 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsSbx)); 00075 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsBga)); 00076 return crx; 00077 } 00078 00079 std::vector<MutationOpP> getMutationOp() 00080 { 00081 std::vector<MutationOpP> mut; 00082 mut.push_back(static_cast<MutationOpP> (new FloatingPointMutSimple)); 00083 return mut; 00084 } 00085 00086 void write(XMLNode& xFloatingPoint); 00087 void read(XMLNode& xFloatingPoint); 00088 }; 00089 } 00090 00091 typedef boost::shared_ptr<FloatingPoint::FloatingPoint> FloatingPointP; 00092 #endif