Algorithm::Evolutionary::Op::Easy - evolutionary algorithm, single generation,
with
variable operators.
my $easy_EA = new Algorithm::Evolutionary::Op::Easy $fitness_func;
for ( my $i = 0; $i < $max_generations; $i++ ) {
print "<", "="x 20, "Generation $i", "="x 20, ">\n";
$easy_EA->apply(\@pop );
for ( @pop ) {
print $_->asString, "\n";
}
}
#Define a default algorithm with predefined evaluation function,
#Mutation and crossover. Default selection rate is 0.4
my $algo = new Algorithm::Evolutionary::Op::Easy( $eval );
#Define an easy single-generation algorithm with predefined mutation and crossover
my $m = new Algorithm::Evolutionary::Op::Bitflip; #Changes a single bit
my $c = new Algorithm::Evolutionary::Op::Crossover; #Classical 2-point crossover
my $generation = new Algorithm::Evolutionary::Op::Easy( $rr, 0.2, [$m, $c] );
Algorithm::Evolutionary::Op::Base
"Easy" to use, single generation of an evolutionary algorithm. Takes
an arrayref of operators as input, or defines bitflip-mutation and 2-point
crossover as default. The "apply" method
applies a single iteration of the algorithm to the population it takes as
input
Creates an algorithm that optimizes the handled fitness function and reference
to an array of operators. If this reference is null, an array consisting of
bitflip mutation and 2 point crossover is generated. Which, of course, might
not what you need in case you don't have a binary chromosome.
Sets the instance variables. Takes a ref-to-hash (for options), codehash (for
fitness) and opshash (for operators)
Applies the algorithm to the population; checks that it receives a ref-to-array
as input, croaks if it does not. Returns a sorted, culled, evaluated
population for next generation.
Algorithm::Evolutionary::Op::CanonicalGA.
Algorithm::Evolutionary::Op::FullAlgorithm.
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