Algorithm-MasterMind
view release on metacpan or search on metacpan
lib/Algorithm/MasterMind/Evo.pm view on Meta::CPAN
my $max_number_of_consistent = $options->{'consistent_set_card'}
|| MAX_CONSISTENT_SET;
$self->{'_replacement_rate'}= $self->{'_replacement_rate'} || 0.25;
my $m = new Algorithm::Evolutionary::Op::String_Mutation $mutation_rate ; # Rate = 1
my $c = Algorithm::Evolutionary::Op::Uniform_Crossover_Diff->new( $options->{'length'}/2, $xover_rate );
my $operators = [$m,$c];
if ( $permutation_rate > 0 ) {
my $p = new Algorithm::Evolutionary::Op::Permutation $permutation_rate, $permutation_iters;
push @$operators, $p;
}
my $select = new Algorithm::Evolutionary::Op::Tournament_Selection $self->{'_tournament_size'} || 2;
if (! $self->{'_ga'} ) { # Not given as an option
$self->{'_ga'} = new Algorithm::Evolutionary::Op::Breeder_Diverser( $operators, $select );
}
$self->{'_replacer'} = new Algorithm::Evolutionary::Op::Replace_Different;
if (!$self->{'_distance'}) {
$self->{'_distance'} = 'distance_taxicab';
}
$self->{'_max_consistent'} = $max_number_of_consistent;
}
lib/Algorithm/MasterMind/EvoRank.pm view on Meta::CPAN
=head2 issue_next()
Issues the next combination, using this method. Every generation runs
an evolutionary algorithm to compute the next string.
=head2 compute_fitness()
Processes "raw" fitness to assign fitness once consistency and/or
distance to it is known. It's lineally scaled to make the lowest
combination have a fitness equal to 1, which is needed just in case
the selection method uses roulette wheel (which it does).
=head1 AUTHOR
JJ Merelo C<< <jj@merelo.net> >>
=head1 LICENCE AND COPYRIGHT
Copyright (c) 2009, 2010 JJ Merelo C<< <jj@merelo.net> >>. All rights reserved.
lib/Algorithm/MasterMind/Partition.pm view on Meta::CPAN
Called from C<new>, initializes data structures.
=head2 issue_first ()
Issues it in the Knuth way, AABC. This should probably be computed
from scratch (to be coherent with the algorithm), but it's already
published, so what the hell.
=head2 issue_next()
Issues the next combination, delegates the string-selection part to compute_next_string
=head2 compute_next_string()
Implements the logic that selects the next string to play, based on partition score
=head1 AUTHOR
JJ Merelo C<< <jj@merelo.net> >>
=head1 LICENCE AND COPYRIGHT
Copyright (c) 2010, JJ Merelo C<< <jj@merelo.net> >>. All rights reserved.
( run in 0.298 second using v1.01-cache-2.11-cpan-94b05bcf43c )