AForge.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 - rand.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 );
            }
        }
    }