Algorithm::Evolutionary::Op::Gene_Boundary_Crossover - n-point crossover operator that restricts crossing point to gene boundaries


  #Create from XML description using EvoSpec
  my $xmlStr3=<<EOC;
  <op name='Gene_Boundary_Crossover' type='binary' rate='1'>
    <param name='numPoints' value='3' /> #Max is 2, anyways
  my $op3 = Algorithm::Evolutionary::Op::Base->fromXML( $xmlStr3 );
  print $op3->asXML(), "\n";

  #Apply to 2 Individuals of the String class
  my $indi = new Algorithm::Evolutionary::Individual::BitString 10;
  my $indi2 = $indi->clone();
  my $indi3 = $indi->clone();
  my $offspring = $op3->apply( $indi2, $indi3 ); #$indi2 == $offspring

  #Initialize using OO interface
  my $op4 = new Algorithm::Evolutionary::Op::Gene_Boundary_Crossover 3; #Gene_Boundary_Crossover with 3 crossover points

Base Class



Crossover operator for a Individuals of type Algorithm::Evolutionary::Individual::String and their descendants (Algorithm::Evolutionary::Individual::BitString). Crossover for Algorithm::Evolutionary::Individual::Vector would be Algorithm::Evolutionary::Op::VectorCrossover


new( [$options_hash] [, $operation_priority] )

Creates a new n-point crossover operator, with 2 as the default number of points, that is, the default would be my $options_hash = { numPoints => 2 }; my $priority = 1;

create( [$num_points] )

Creates a new 1 or 2 point crossover operator. But this is just to have a non-empty chromosome Defaults to 2 point

apply( $chromsosome_1, $chromosome_2 )

Applies xover operator to a "Chromosome", a string, really. Can be applied only to victims with the _str instance variable; but it checks before application that both operands are of type BitString.


  This file is released under the GPL. See the LICENSE file included in this distribution,
  or go to

  CVS Info: $Date: 2011/02/14 06:55:36 $ 
  $Header: /media/Backup/Repos/opeal/opeal/Algorithm-Evolutionary/lib/Algorithm/Evolutionary/Op/,v 3.2 2011/02/14 06:55:36 jmerelo Exp $ 
  $Author: jmerelo $ 
  $Revision: 3.2 $
  $Name $