NAME
Algorithm::Evolutionary::Experiment - Class for setting up an experiment
SYNOPSIS
use Algorithm::Evolutionary::Experiment;
my $popSize = 20;
my $indiType = 'BitString';
my $indiSize = 64;
my $ex = new Algorithm::Evolutionary::Experiment $popSize, $indiType, $indiSize, $algorithm; #Algorithm might be anything of type Op
DESCRIPTION
Experiment contains an algorithm and a population, and applies one to the other. Contains both as instance variables.
METHODS
new
Creates a new experiment. An C<Experiment> has two parts: the population and the algorithm.
The population is created from a set of parameters
fromXML
Creates a new experiment, same as before, but with an XML specification. An example of it follows:
<ea xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='ea-alpha.xsd'
version='0.2'>
<initial>
<pop size='20'>
<section name='indi'>
<param name='type' value='BitString' />
<param name='length' value='64' />
</section>
</pop>
<op name='Easy' type='unary'>
<param name='selrate' value='0.4' />
<param name='maxgen' value='100' />
<code type='eval' language='perl'>
<src> my $chrom = shift;
my $str = $chrom->Chrom();
my $fitness = 0;
for ( my $i = 0; $i < length( $str ) / $blockSize; $i++ ) {
my $block = 1;
for ( my $j = 0; $j < $blockSize; $j++ ) {
$block &= substr( $str, $i*$blockSize+$j, 1 );
}
( $fitness += $blockSize ) if $block;
}
return $fitness;
</src>
</code>
<op name='GaussianMutation' type='unary' rate='1'>
<param name='avg' value='0' />
<param name='stddev' value='0.1' />
</op>
<op name='VectorCrossover' type='binary' rate='1'>
<param name='numpoints' value='1' />
</op>
</op>
</initial>
</ea>
This is an alternative constructor. Takes a well-formed string with the XML
spec, which should have been done according to EvoSpec 0.3, or the same
string processed with C<XML::Simple>, and returns a built experiment