float evaluate(individual ind){ float Fc =0 ; std::vector<float> v = ind.getFeatureVector(); for(unsigned int i=0;i<v.size();i++){ Fc += v[i]*v[i]; } return Fc; }
/** * Asexual reproduction: * * I just randomly chose features of one or the other parent by a probabillity proportional * to the parents fitness function * * The combination strategy is used in the make offspring method to create a child. */ individual individual::combine1(individual indiv){ //individual child(indiv.getFeatureVector()); std::vector<float> fv; std::vector<float> indivFV(indiv.getFeatureVector()); std::uniform_real_distribution<> dint(0,1); float O1 = this->getObjectiveFunction(); float O2 = indiv.getObjectiveFunction(); float fittnessBias = O1>O2 ? 0.75 : 0.25; for(unsigned int i=0;i<ndim;i++){ indivFV.at(i) = dint(this->rngEngine)<fittnessBias ? (this->featureVector).at(i) : (indiv.getFeatureVector()).at(i); } return individual(fv); }
float evaluate(individual ind){ return giveOF(ind.getFeatureVector()); }