public override void Crossover( IChromosome pair )
{
PermutationChromosome p = (PermutationChromosome) pair;
// check for correct pair
if ( ( p != null ) && ( p.length == length ) )
{
ushort[] child1 = new ushort[length];
ushort[] child2 = new ushort[length];
// create two children
CreateChildUsingCrossover( this.val, p.val, child1 );
CreateChildUsingCrossover( p.val, this.val, child2 );
// replace parents with children
this.val = child1;
p.val = child2;
}
}