private ISeq<Phenotype<G, C>>
	selectOffspring(final ISeq<Phenotype<G, C>> population) {
		return _evolutionParams.offspringSize() > 0
			? _evolutionParams.offspringSelector()
				.select(population, _evolutionParams.offspringSize(), _optimize)
			: ISeq.empty();
	}
Create a new GA engine with the given parameters.

@param evaluator the population fitness evaluator
@param genotypeFactory the genotype factory this GA is working with.
@param constraint phenotype constraint which can override the default
       implementation the {@link Phenotype#isValid()} method and repairs
       invalid phenotypes when needed.
@param optimize the kind of optimization (minimize or maximize)
@param evolutionParams the evolution parameters, which influences the
       evolution process
@param executor the executor used for executing the single evolved steps
@param clock the clock used for calculating the timing results
@param interceptor the evolution interceptor, which gives additional
       possibilities to influence the actual evolution
@throws NullPointerException if one of the arguments is {@code null}
@throws IllegalArgumentException if the given integer values are smaller
        than one.
jenetics/src/main/java/io/jenetics/engine/Engine.java