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 #include "FloatingPointCrsLocal.h"
00019 #include "FloatingPointCrsBlxAlpha.h"
00020 #include "FloatingPointCrsBlxAlphaBeta.h"
00021
00022 namespace FloatingPoint
00023 {
00024
00039 class FloatingPoint: public RealValueGenotype {
00040
00041 public:
00042
00043 FloatingPoint ()
00044 { name_="FloatingPoint"; }
00045
00046 bool initialize (StateP state);
00047
00048 void registerParameters(StateP state);
00049
00051 double getLBound ()
00052 { return minValue_; }
00053
00055 double getUBound ()
00056 { return maxValue_; }
00057
00058 FloatingPoint* copy()
00059 {
00060 FloatingPoint *newObject = new FloatingPoint(*this);
00061 return newObject;
00062 }
00063
00065 std::vector<CrossoverOpP> getCrossoverOp()
00066 {
00067 std::vector<CrossoverOpP> crx;
00068 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsOnePoint));
00069 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsArithmetic));
00070 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsDiscrete));
00071 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsArithmeticSimple));
00072 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsArithmeticSingle));
00073 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsAverage));
00074 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsFlat));
00075 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsHeuristic));
00076 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsSbx));
00077 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsBga));
00078 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsLocal));
00079 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsBlxAlpha));
00080 crx.push_back(static_cast<CrossoverOpP> (new FloatingPointCrsBlxAlphaBeta));
00081
00082
00083 return crx;
00084 }
00085
00086 std::vector<MutationOpP> getMutationOp()
00087 {
00088 std::vector<MutationOpP> mut;
00089 mut.push_back(static_cast<MutationOpP> (new FloatingPointMutSimple));
00090 return mut;
00091 }
00092
00093 void write(XMLNode& xFloatingPoint);
00094 void read(XMLNode& xFloatingPoint);
00095 };
00096 }
00097
00098 typedef boost::shared_ptr<FloatingPoint::FloatingPoint> FloatingPointP;
00099 #endif