and 1 contributors

# 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`.

``````  This file is released under the GPL. See the LICENSE file included in this distribution,