NAME

Algorithm::Evolutionary::Utils - Container module with a hodgepodge of functions.

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

entropy( $population)

Computes the entropy using the well known Shannon's formula: http://en.wikipedia.org/wiki/Information_entropy 'to avoid botching highlighting

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 positions that are different among two strings, the well known Hamming distance.

consensus( $population, $rough = 0 )

Consensus sequence representing the majoritary value for each bit; returns the consensus binary string. If "rough", then the bit is set only if the difference is bigger than 0.4 (60/40 proportion).

average( $population )

Computes an average of population fitness

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.

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