[yul-phaser] Make the Population constructor that takes individuals public and use it to speed up some operations

This commit is contained in:
Kamil Śliwak
2020-04-06 19:06:08 +02:00
parent 2750bb9b90
commit 7381068dcc
3 changed files with 23 additions and 7 deletions
+3 -3
View File
@@ -187,16 +187,16 @@ Population AlgorithmRunner::randomiseDuplicates(
if (_population.individuals().size() == 0)
return _population;
vector<Chromosome> chromosomes{_population.individuals()[0].chromosome};
vector<Individual> individuals{_population.individuals()[0]};
size_t duplicateCount = 0;
for (size_t i = 1; i < _population.individuals().size(); ++i)
if (_population.individuals()[i].chromosome == _population.individuals()[i - 1].chromosome)
++duplicateCount;
else
chromosomes.push_back(_population.individuals()[i].chromosome);
individuals.push_back(_population.individuals()[i]);
return (
Population(_population.fitnessMetric(), chromosomes) +
Population(_population.fitnessMetric(), individuals) +
Population::makeRandom(_population.fitnessMetric(), duplicateCount, _minChromosomeLength, _maxChromosomeLength)
);
}