RealGene.h
Go to the documentation of this file.00001 00009 #include <Configuration.h> 00010 #include <Gene.h> 00011 00012 #ifndef __REAL_GENE__ 00013 #define __REAL_GENE__ 00014 00019 class RealGene : public Gene { 00020 public: 00021 double allele_ ; 00022 double lowerBound_ ; 00023 double upperBound_ ; 00024 00025 // Constructors 00026 RealGene(Random * random) ; 00027 RealGene(double lowerBound, double upperBound, Random * random) ; 00028 RealGene(RealGene & realgene) ; 00029 RealGene(RealGene * realGene) ; 00030 00031 // Destructor 00032 ~RealGene() ; 00033 00034 // Methods 00035 int randomMutation(double mutationProbability) ; 00036 int polynomialMutation(double mutationProbability, 00037 double distributionIndex) ; 00038 int uniformMutation(double mutationProbability, 00039 double perturbation) ; 00040 int nonUniformMutation(double mutationProbability, 00041 double perturbation, 00042 int iteration, 00043 int maximumNumberOfIterations) ; 00044 00045 double delta(double t, 00046 double y, 00047 double bMutationParameter, 00048 int maximumNumberOfIterations); // For non-uniform mutation 00049 double map(double) ; 00050 double unmap(double) ; 00051 00052 double logicalMFunction (double geneParent1,double geneParent2,double lambda); 00053 double hamacherMFunction (double geneParent1,double geneParent2,double lambda); 00054 double algebraicMFunction(double geneParent1,double geneParent2,double lambda); 00055 double einsteinMFunction (double geneParent1,double geneParent2,double lambda); 00056 double logicalFFunction (double geneParent1,double geneParent2) ; 00057 double logicalSFunction (double geneParent1,double geneParent2) ; 00058 double hamacherFFunction (double geneParent1,double geneParent2) ; 00059 double hamacherSFunction (double geneParent1,double geneParent2) ; 00060 double algebraicFFunction(double geneParent1,double geneParent2) ; 00061 double algebraicSFunction(double geneParent1,double geneParent2) ; 00062 double einsteinFFunction (double geneParent1,double geneParent2) ; 00063 double einsteinSFunction (double geneParent1,double geneParent2) ; 00064 00065 double getRealAllele() ; 00066 void setRealAllele(double value) ; 00067 void writeGenotype(ofstream &outputFile) ; 00068 void printGenotype() ; 00069 00070 // Operators 00071 RealGene & operator=(const RealGene& realGene) ; 00072 bool operator==(const RealGene& realGene) ; 00073 bool operator!=(const RealGene& realGene) ; 00074 friend ostream& operator<< (ostream& outputStream, RealGene& gene) ; 00075 00076 #ifdef __MPI__ 00077 00078 int getSize() ; 00079 void calculateSize() ; 00080 00081 void packData(char * buffer, int * bufferOffset, int bufferSize) ; 00082 void unpackData(char * buffer, int * bufferOffset, int bufferSize) ; 00083 00084 #endif 00085 00086 } ; // RealGene 00087 00088 #endif