NAME

Algorithm::Evolutionary::Op::Crossover - n-point crossover
  operator; puts a part of the second operand into the first
  operand; can be 1 or 2 points.
           

SYNOPSIS

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

#Apply to 2 Individuals. Could be String.
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::Crossover 3; #Crossover with 3 crossover points

Base Class

Algorithm::Evolutionary::Op::Base

DESCRIPTION

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

METHODS

new

Creates a new n-point crossover operator, with 2 as the default number of points

create

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

apply

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.

Changes the first parent, and returns it. If you want to change both parents at the same time, check Algorithm::Evolutionary::Op:QuadXOver

Copyright

This file is released under the GPL. See the LICENSE file included in this distribution,
or go to http://www.fsf.org/licenses/gpl.txt

CVS Info: $Date: 2008/06/26 11:37:43 $ 
$Header: /cvsroot/opeal/Algorithm-Evolutionary/lib/Algorithm/Evolutionary/Op/Crossover.pm,v 1.2 2008/06/26 11:37:43 jmerelo Exp $ 
$Author: jmerelo $ 
$Revision: 1.2 $
$Name $