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

D:/Projekt/ECF_trunk/ECF/binary/Binary.h

00001 #ifndef BINARY_H_
00002 #define BINARY_H_
00003 
00004 #include "BinaryCrsOnePoint.h"
00005 #include "BinaryCrsTwoPoint.h"
00006 #include "BinaryMutSimple.h"
00007 #include "BinaryMutMix.h"
00008 #include "BinaryCrsUniform.h"
00009 #include "BinaryCrsHalfUniform.h"
00010 #include "BinaryCrsReducedSurrogate.h"
00011 #include "BinaryCrsSegmented.h"
00012 #include "BinaryCrsShuffle.h"
00013 #include "BinaryCrsNonGeometric.h"
00014 #include "BinaryCrsRandomRespectful.h"
00015 #include "BinaryCrsMasked.h"
00016 
00017 #include "../RealValueGenotype.h"
00018 
00019 namespace Binary
00020 {
00021 
00038 class Binary: public RealValueGenotype {
00039     friend class BinaryMutSimple;   // za potrebe ad-hoc lokalnog operatora!
00040 protected:
00041     uint nDecimal_;                   
00042     uint nBits_;                      
00043     long potention_;
00044     bool bRounding_;                  
00045     typedef std::vector<bool> v_bool;
00046     v_bool vBool_;                    
00047 
00048     double logbase(double a, double base);
00049     double round(double, int);
00050 
00051 public:
00052     std::vector<long int> decValue;    
00053     std::vector<v_bool> variables;     
00054 
00055     Binary ()
00056     {   name_ = "Binary";   }
00057 
00059     uint getNumBits()
00060     {   return nBits_;  }
00061 
00062     bool initialize (StateP state);
00063 
00064     void registerParameters(StateP state);
00065 
00067     bool update (void);
00068 
00069     Binary* copy()
00070     {
00071         Binary *newObject = new Binary(*this);
00072         return newObject;
00073     }
00074 
00075     std::vector<CrossoverOpP> getCrossoverOp()
00076     {
00077         std::vector<CrossoverOpP> crx;
00078         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsOnePoint));
00079         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsTwoPoint));
00080         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsUniform));
00081         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsHalfUniform));
00082         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsReducedSurrogate));
00083         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsSegmented));
00084         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsShuffle));
00085         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsNonGeometric));
00086         crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsRandomRespectful));
00087         // TODO: reimplement
00088         //crx.push_back(static_cast<CrossoverOpP> (new BinaryCrsMasked));
00089         return crx;
00090     }
00091 
00092     std::vector<MutationOpP> getMutationOp()
00093     {   
00094         std::vector<MutationOpP> mut;
00095         mut.push_back(static_cast<MutationOpP> (new BinaryMutSimple));
00096         mut.push_back(static_cast<MutationOpP> (new BinaryMutMix));
00097         return mut;
00098     }
00099 
00100     void write(XMLNode& xBinary);
00101 
00102     void read(XMLNode& xBinary);
00103 };
00104 
00105 }
00106 typedef boost::shared_ptr<Binary::Binary> BinaryP;
00107 #endif

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