public EvolutionResult<G, C> evolve(
		final ISeq<Phenotype<G, C>> population,
		final long generation
	) {
		return evolve(EvolutionStart.of(population, generation));
	}
public EvolutionResult < G , C > evolve ( final ISeq < Phenotype < G , C > > population , final long generation ) { return evolve ( EvolutionStart . of ( population , generation ) ) ; }
Perform one evolution step with the given {@code population} and
{@code generation}. New phenotypes are created with the fitness function
and fitness scaler defined by this <em>engine</em>
<p>
<em>This method is thread-safe.</em>

@see #evolve(EvolutionStart)

@param population the population to evolve
@param generation the current generation; used for calculating the
phenotype age.
@return the evolution result
@throws java.lang.NullPointerException if the given {@code population} is
{@code null}
@throws IllegalArgumentException if the given {@code generation} is
smaller then one