Accord.Genetic.BinaryChromosome.Crossover C# (CSharp) Method

Crossover() public method

Crossover operator.

The method performs crossover between two chromosomes – interchanging range of bits between these chromosomes.

public Crossover ( IChromosome pair ) : void
pair IChromosome Pair chromosome to crossover with.
return void
        public override void Crossover(IChromosome pair)
        {
            BinaryChromosome p = (BinaryChromosome)pair;

            // check for correct pair
            if ((p != null) && (p.length == length))
            {
                int crossOverPoint = 63 - Generator.Random.Next(length - 1);
                ulong mask1 = 0xFFFFFFFFFFFFFFFF >> crossOverPoint;
                ulong mask2 = ~mask1;

                ulong v1 = val;
                ulong v2 = p.val;

                // calculate new values
                val = (v1 & mask1) | (v2 & mask2);
                p.val = (v2 & mask1) | (v1 & mask2);
            }
        }
    }