/* * Modification History * * 2006-August-11 Jason Rohrer * Created. */ #include "Genetics.h" #include #include #include "minorGems/util/random/StdRandomSource.h" extern StdRandomSource globalRandomSource; Genetics::~Genetics() { for( int i=0; igetNumGenes(); int bNumGenes = inParentB->getNumGenes(); if( bNumGenes < minNumGenes ) { minNumGenes = bNumGenes; } mNumGenes = minNumGenes; mGenes = new double*[ mNumGenes ]; mGeneLengths = new int[ mNumGenes ]; for( int i=0; igetGene( i ); mGeneLengths[i] = chosenParent->getGeneLength( i ); } } Genetics::Genetics( Genetics *inGeneticsToCopy ) : mNumGenes( inGeneticsToCopy->getNumGenes() ) { mGeneLengths = new int[ mNumGenes ]; mGenes = new double*[ mNumGenes ]; for( int i=0; igetGeneLength( i ); mGenes[i] = inGeneticsToCopy->getGene( i ); } } double Genetics::mapValueToRange( double inValue, double inRangeStart, double inRangeEnd ) { return inValue * ( inRangeEnd - inRangeStart ) + inRangeStart; } int Genetics::getNumGenes() { return mNumGenes; } int Genetics::getGeneLength( int inIndex ) { return mGeneLengths[ inIndex ]; } double *Genetics::getGene( int inIndex ) { int length = getGeneLength( inIndex ); double *returnArray = new double[ length ]; memcpy( returnArray, mGenes[ inIndex ], sizeof( double ) * length ); return returnArray; } void Genetics::printGenetics() { for( int i=0; igetNumGenes() ) { return false; } int i; for( i=0; igetGeneLength( i ) ) { return false; } } // same length for( i=0; igetGene( i ); for( int j=0; j