00001 #include "../ECF_base.h" 00002 #include "Permutation.h" 00003 00004 00005 namespace Permutation 00006 { 00007 00008 void PermutationMutToggle::registerParameters(StateP state) 00009 { 00010 myGenotype_->registerParameter(state, "mut.toggle", (voidP) new double(0), ECF::DOUBLE); 00011 } 00012 00013 00014 bool PermutationMutToggle::initialize(StateP state) 00015 { 00016 voidP sptr = myGenotype_->getParameterValue(state, "mut.toggle"); 00017 probability_ = *((double*)sptr.get()); 00018 return true; 00019 } 00020 00021 00022 bool PermutationMutToggle::mutate(GenotypeP gene) 00023 { 00024 Permutation* perm = (Permutation*) (gene.get()); 00025 00026 int ind1 = state_->getRandomizer()->getRandomInteger(perm->getSize()); 00027 int ind2 = state_->getRandomizer()->getRandomInteger(perm->getSize()); 00028 int temp = perm->variables[ind1]; 00029 perm->variables[ind1] = perm->variables[ind2]; 00030 perm->variables[ind2] = temp; 00031 00032 return true; 00033 } 00034 00035 }