NAME
Algorithm::Evolutionary::Op::GeneralGeneration - Customizable single generation for an evolutionary algorithm.
SYNOPSIS #Taken from the t/general.t file, verbatim my $m = new Algorithm::Evolutionary::Op::Bitflip; #Changes a single bit my $c = new Algorithm::Evolutionary::Op::Crossover; #Classical 2-point crossover my $replacementRate = 0.3; #Replacement rate use Algorithm::Evolutionary::Op::RouletteWheel; my $popSize = 20; my $selector = new Algorithm::Evolutionary::Op::RouletteWheel $popSize; #One of the possible selectors use Algorithm::Evolutionary::Op::GeneralGeneration; my $onemax = sub { my $indi = shift; my $total = 0; for ( my $i = 0; $i < $indi->length(); $i ++ ) { $total += substr( $indi->{_str}, $i, 1 ); } return $total; }; my @pop; my $numBits = 10; for ( 0..$popSize ) { my $indi = new Algorithm::Evolutionary::Individual::BitString $numBits ; #Creates random individual my $fitness = $onemax->( $indi ); $indi->Fitness( $fitness ); push( @pop, $indi ); } my $generation = new Algorithm::Evolutionary::Op::GeneralGeneration( $onemax, $selector, [$m, $c], $replacementRate ); my @sortPop = sort { $a->Fitness() <=> $b->Fitness() } @pop; my $bestIndi = $sortPop[0]; $generation->apply( \@sortPop );
Base Class
Algorithm::Evolutionary::Op::Base
DESCRIPTION
Genetic algorithm that uses the other component. Must take as input the operators thar are going to be used, along with its priorities
METHODS
new( $evaluation_function, $selector, $ref_to_operator_array, $replacement_rate )
Creates an algorithm, with the usual operators. Includes a default mutation and crossover, in case they are not passed as parameters
set( $ref_to_params_hash, $ref_to_code_hash, $ref_to_operators_hash )
Sets the instance variables. Takes a ref-to-hash as input
apply( $population )
Applies the algorithm to the population, which should have been evaluated first; checks that it receives a ref-to-array as input, croaks if it does not. Returns a sorted, culled, evaluated population for next generation.
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: 2009/07/24 08:46:59 $
$Header: /cvsroot/opeal/Algorithm-Evolutionary/lib/Algorithm/Evolutionary/Op/GeneralGeneration.pm,v 3.0 2009/07/24 08:46:59 jmerelo Exp $
$Author: jmerelo $
$Revision: 3.0 $