public void CreateNew_ExpectedResultAndLenth_Created()
        {
            var target     = new EquationChromosome(10, 2);
            var newCreated = target.CreateNew() as EquationChromosome;

            Assert.AreEqual(target.Length, newCreated.Length);
            Assert.AreEqual(target.ResultRange, newCreated.ResultRange);
        }
        public void Evaluate_DiffChromosomes_DiffFitness()
        {
            var target = new EqualityFitness();

            var chromosome = new EquationChromosome(30, 4);

            chromosome.ReplaceGene(0, new Gene(0));
            chromosome.ReplaceGene(1, new Gene(7));
            chromosome.ReplaceGene(2, new Gene(-43));
            chromosome.ReplaceGene(3, new Gene(32));

            var actual = target.Evaluate(chromosome);

            Assert.Less(actual, 0);

            chromosome = new EquationChromosome(30, 4);
            chromosome.ReplaceGene(0, new Gene(17));
            chromosome.ReplaceGene(1, new Gene(7));
            chromosome.ReplaceGene(2, new Gene(-43));
            chromosome.ReplaceGene(3, new Gene(32));

            actual = target.Evaluate(chromosome);
            Assert.AreEqual(0, actual);
        }
        public void Evaluate_DiffChromosomes_DiffFitness()
        {
            // Equation A + B = 3.
            var target = new EquationSolverFitness(
                3,
                (genes) =>
            {
                return(genes.Select(g => (int)g.Value).Sum());
            });

            var chromosome = new EquationChromosome(3, 2);

            chromosome.ReplaceGene(0, new Gene(1));
            chromosome.ReplaceGene(1, new Gene(2));

            var actual = target.Evaluate(chromosome);

            Assert.AreEqual(0, actual);

            chromosome.ReplaceGene(1, new Gene(3));

            actual = target.Evaluate(chromosome);
            Assert.AreEqual(-1, actual);
        }