Skip to content

Bug #5

@isaackhlam

Description

@isaackhlam

std::pair<const Gene*, const Gene*> fitnessProportionalSelection() const {
//TODO: Dunno why this won't work for subtract the fitness
// This is working well for int type gene...
//std::uniform_real_distribution<> dis(0.0, totalFitness - minFitness * populationSize);
std::uniform_real_distribution<> dis(0.0, totalFitness);
double rnd1 = dis(gen);
double rnd2 = dis(gen);
const Gene* parent1 = nullptr;
const Gene* parent2 = nullptr;
double accumulatedFitness = 0.0;
for(const auto& individual : individuals) {
accumulatedFitness += individual->getFitness();
//TODO: Fix this later....
// It return nullptr for parent...
//accumulatedFitness -= minFitness;
if (parent1 == nullptr && accumulatedFitness >= rnd1) {
parent1 = individual.get();
}
if (parent2 == nullptr && accumulatedFitness >= rnd2) {
parent2 = individual.get();
}
if (parent1 != nullptr && parent2 != nullptr) {
break;
}
}
return {parent1, parent2};
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions