示例#1
0
        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}");
        }
示例#2
0
        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) });
        }
示例#3
0
        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}");
        }
示例#4
0
        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);
        }