Engine implements
		Evolution<G, C>,
		EvolutionStreamable<G, C>,
		Evaluator<G, C> { public Constraint<G, C> constraint() { return _constraint; } Engine(
		final Evaluator<G, C> evaluator,
		final Factory<Genotype<G>> genotypeFactory,
		final Constraint<G, C> constraint,
		final Optimize optimize,
		final EvolutionParams<G, C> evolutionParams,
		final Executor executor,
		final Clock clock,
		final EvolutionInterceptor<G, C> interceptor
	); @Override EvolutionResult<G, C> evolve(final EvolutionStart<G, C> start); @Override ISeq<Phenotype<G, C>> eval(final Seq<Phenotype<G, C>> population); @Override EvolutionStream<G, C> stream(final Supplier<EvolutionStart<G, C>> start); @Override EvolutionStream<G, C> stream(final EvolutionInit<G> init); Factory<Genotype<G>> genotypeFactory(); Constraint<G, C> constraint(); Selector<G, C> survivorsSelector(); Selector<G, C> offspringSelector(); Alterer<G, C> alterer(); int offspringSize(); int survivorsSize(); int populationSize(); long maximalPhenotypeAge(); Optimize optimize(); Clock clock(); Executor executor(); EvolutionInterceptor<G, C> interceptor(); Builder<G, C> toBuilder(); static Builder<G, C> builder(
		final Function<? super Genotype<G>, ? extends C> ff,
		final Factory<Genotype<G>> gtf
	); static Builder<G, C> builder(
		final Function<? super T, ? extends C> ff,
		final Codec<T, G> codec
	); static Builder<G, C> builder(final Problem<T, G, C> problem); @SafeVarargs static Builder<G, C> builder(
		final Function<? super Genotype<G>, ? extends C> ff,
		final Chromosome<G> chromosome,
		final Chromosome<G>... chromosomes
	);  }
@Test public void constraint() { final int populationSize = 100; final Engine<DoubleGene, Double> engine = Engine .builder(a -> a.gene().allele(), DoubleChromosome.of(0, 1)) .constraint(RetryConstraint.of(pt -> false)) .populationSize(populationSize) .build(); final EvolutionResult<DoubleGene, Double> result = engine.stream() .limit(10) .collect(EvolutionResult.toBestEvolutionResult()); Assert.assertEquals(result.invalidCount(), populationSize); }