00001 #include "../ECF_base.h"
00002 #include "BitString.h"
00003
00004 namespace BitString
00005 {
00006
00007 void BitStringCrsUniform::registerParameters(StateP state)
00008 {
00009 myGenotype_->registerParameter(state, "crx.uniform", (voidP) new double(0), ECF::DOUBLE);
00010 }
00011
00012
00013 bool BitStringCrsUniform::initialize(StateP state)
00014 {
00015 voidP sptr = myGenotype_->getParameterValue(state, "crx.uniform");
00016 probability_ = *((double*)sptr.get());
00017 return true;
00018 }
00019
00020
00021 bool BitStringCrsUniform::mate(GenotypeP gen1, GenotypeP gen2, GenotypeP child)
00022 {
00023 BitString* p1 = (BitString*) (gen1.get());
00024 BitString* p2 = (BitString*) (gen2.get());
00025 BitString* ch = (BitString*) (child.get());
00026
00027 for(uint i = 0; i < p1->bits.size(); i++){
00028 if (p1->bits[i] == p2->bits[i])
00029 ch->bits[i] = p1->bits[i];
00030 else
00031 ch->bits[i] = state_->getRandomizer()->getRandomInteger(2) ? true:false;
00032 }
00033
00034 return true;
00035 }
00036 }