@Override
protected int recombine(
final MSeq<Phenotype<G, C>> population,
final int[] individuals,
final long generation
) {
final Random random = RandomRegistry.getRandom();
final Phenotype<G, C> pt1 = population.get(individuals[0]);
final Phenotype<G, C> pt2 = population.get(individuals[1]);
final Genotype<G> gt1 = pt1.getGenotype();
final Genotype<G> gt2 = pt2.getGenotype();
final int cindex = random.nextInt(min(gt1.length(), gt2.length()));
final MSeq<Chromosome<G>> c1 = gt1.toSeq().copy();
final ISeq<Chromosome<G>> c2 = gt2.toSeq();
final MSeq<G> mean = mean(
c1.get(cindex).toSeq().copy(),
c2.get(cindex).toSeq()
);
c1.set(cindex, c1.get(cindex).newInstance(mean.toISeq()));
population.set(
individuals[0],
pt1.newInstance(Genotype.of(c1), generation)
);
return 1;
}