public void StreamWithInitialGenotypes() { var problem = Problem.Of( a => a, Codec.Of( () => Genotype.Of(IntegerChromosome.Of(0, 1000)), g => g.Gene.Allele ) ); const int genotypeCount = 10; const int max = 1000; var genotypes = IntRange.Of(1, genotypeCount) .Select(i => IntegerChromosome.Of(IntegerGene.Of(max, 0, max))) .Select(i => Genotype.Of(i)) .ToImmutableSeq(); var engine = Engine.Builder(problem).Build(); var result = engine.Stream(genotypes) .Take(1) .ToBestEvolutionResult(); long maxCount = result.GetPopulation().Count(pt => pt.GetFitness() == max); Assert.True(maxCount >= genotypeCount, $"{maxCount} >= {genotypeCount}"); }
public static IEnumerable <object[]> IntScalarData() { yield return(new object[] { IntRange.Of(0, 1) }); yield return(new object[] { IntRange.Of(0, 10) }); yield return(new object[] { IntRange.Of(1, 2) }); yield return(new object[] { IntRange.Of(0, 100) }); yield return(new object[] { IntRange.Of(10, 1000) }); yield return(new object[] { IntRange.Of(1000, 10000) }); }
public static void Main() { var domain1 = IntRange.Of(0, 100); var domain2 = LongRange.Of(0, 1000000000000L); var domain3 = DoubleRange.Of(0, 1); var codec = Codec(domain1, domain2, domain3); var engine = Engine.Engine.Builder(F, codec).Build(); var gt = engine.Stream().Take(100).ToBestGenotype(); var param = codec.Decoder()(gt); Console.WriteLine($"Result:\t{param}"); }
public void OfIntegerRangeLength() { var c1 = PermutationChromosome.OfInteger(IntRange.Of(0, 2000), 1000); Assert.True(c1.IsValid); var c2 = PermutationChromosome.OfInteger(IntRange.Of(0, 2000), 1000); Assert.True(c2.IsValid); var m1 = c1.ToSeq().Copy(); var m2 = c2.ToSeq().Copy(); AssertUnique(m1); AssertUnique(m2); var pmx = new PartiallyMatchedCrossover <int, double>(1); pmx.Crossover(m1, m2); AssertUnique(m1); AssertUnique(m2); }