AI-Genetic
view release on metacpan or search on metacpan
Genetic/Defaults.pm view on Meta::CPAN
package AI::Genetic::Defaults;
use strict;
use AI::Genetic::OpSelection;
use AI::Genetic::OpCrossover;
use AI::Genetic::OpMutation;
1;
# this implements the default strategies.
sub rouletteSinglePoint {
# initialize the roulette wheel
AI::Genetic::OpSelection::initWheel($_[0]->people);
push @_ => 'vectorSinglePoint', 'rouletteUnique';
goto &genericStrategy;
}
sub rouletteTwoPoint {
# initialize the roulette wheel
AI::Genetic::OpSelection::initWheel($_[0]->people);
push @_ => 'vectorTwoPoint', 'rouletteUnique';
goto &genericStrategy;
}
sub rouletteUniform {
# initialize the roulette wheel
AI::Genetic::OpSelection::initWheel($_[0]->people);
push @_ => 'vectorUniform', 'rouletteUnique';
goto &genericStrategy;
}
sub tournamentSinglePoint {
push @_ => 'vectorSinglePoint', 'tournament', [$_[0]->people];
goto &genericStrategy;
}
sub tournamentTwoPoint {
push @_ => 'vectorTwoPoint', 'tournament', [$_[0]->people];
goto &genericStrategy;
}
sub tournamentUniform {
push @_ => 'vectorUniform', 'tournament', [$_[0]->people];
goto &genericStrategy;
}
sub randomSinglePoint {
push @_ => 'vectorSinglePoint', 'random', [$_[0]->people];
goto &genericStrategy;
}
sub randomTwoPoint {
push @_ => 'vectorTwoPoint', 'random', [$_[0]->people];
goto &genericStrategy;
}
sub randomUniform {
push @_ => 'vectorUniform', 'random', [$_[0]->people];
goto &genericStrategy;
}
# generic sub that implements everything.
sub genericStrategy {
my ($ga, $Xop, $selOp, $selArgs) = @_;
#perhaps args should be:
( run in 0.618 second using v1.01-cache-2.11-cpan-39bf76dae61 )