NAME
Algorithm::Evolutionary::Utils - Collection of functions used in all kind of evolutionary algorithms..
SYNOPSIS
use Algorithm::Evolutionary::Utils qw(entropy genotypic_entropy hamming consensus average random_bitstring random_number_array decode_string vector_compare );
my $this_entropy = entropy( $population );
#Computes consensus sequence (for binary chromosomes
my $this_consensus = consensus( $population);
DESCRIPTION
Miscellaneous class that contains functions that might be useful somewhere else, especially when computing EA statistics.
METHODS
genotypic_entropy( $population)
Computes the entropy using the well known Shannon's formula: http://en.wikipedia.org/wiki/Information_entropy 'to avoid botching highlighting; in this case we use chromosome frequencies instead of fitness.
hamming( $string_a, $string_b )
Computes the number of bit positions that are different among two strings, the well known Hamming distance.
consensus( $population, $rough = 0 )
Consensus sequence representing the majority value for each bit; returns the consensus binary string. If "rough", then the bit is set only if the difference is bigger than 0.2 (60/40 proportion). Otherwise, it is set to -
random_bitstring( $bits[, $chromify = 0 ] )
Returns a random bitstring with the stated number of bits. Useful for testing, mainly. Returns a "chromosome-like" object if $chromify is 1, mainly putting it into a hashref with the _str
key.
random_number_array( $dimensions [, $min = -1] [, $range = 2] )
Returns a random number array with the stated length. Useful for testing, mainly.
decode_string( $chromosome, $gene_size, $min, $range )
Decodes to a vector, each one of whose components ranges between $min and $max. Returns that vector.
It does not work for $gene_size too big. Certainly not for 64, maybe for 32.
vector_compare( $vector_1, $vector_2 )
Compares vectors, returns 1 if 1 dominates 2, -1 if it's the other way round, and 0 if neither dominates the other. Both vectors are supposed to be numeric. Returns 0
if neither is bigger, and they are not equal. Fails if the length is not the same. None of the combinations above returns undef
.
SEE ALSO
This is a spin off from Algorithm::Evolutionary so it's worth the while to check it out. And the spinning was due to finding I needed to include it in examples for the much simpler Algorithm::Evolutionary::Simple.
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