The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

StringEvolver - A generic base critter class for use with Algorithm::Evolve

SYNOPSIS

  package StringCritters;
  use StringEvolver gene_length => 50,
                    alphabet => ['A' .. 'F'],
                    ...;
  our @ISA = ('StringEvolver');
  ## StringCritters is now a valid critter class

  sub foo_method {
      my $self = shift;
      $self->{foo}++;   ## You can add object attributes
  }
  
  sub fitness {
      my $self = shift;

      ## You can override the default inherited methods to suit the
      ## task at hand
  }

You can use this class as a base class any time your representation is a string gene.

USE ARGUMENTS

gene_length

The length of strings to evolve. Defaults to 20.

alphabet

A reference to an array of valid tokens for the genes. All elements of the array should be single characters. Defaults to [0,1].

reference_gene

By default, fitness is measured as the number of characters in which a critter's gene agrees with a reference string. However, if you are implementing a non-trivial evolver, you will probably override the fitness method and this argument won't make a difference. It defaults to '1' x 20.

mutation_rate

If this number is less than one, then it is the probablistic mutation rate for each character. If it is greater than or equal to one, then exactly that many mutations will be performed per child (so it must be an integer). Defaults to 0.05.

crossover_pts

The number of crossover points when performing crossover. See Algorithm::Evolve::Util for more information on crossover.

INHERITED METHODS

When used as a base class, the subclass inherits the following methods:

Class->new([ $init ])

When used with an argument, the new critter is created with the given string as the initial value for its gene. Otherwise, this method creates a random string gene over the alphabet.

$obj->mutate()

Mutates the critter's gene according to the given mutation rate.

Class->crossover($obj1, $obj2)

Takes two critters and returns a random crossover of the two, according to the given number of crossover points.

$obj->fitness()

Returns the fitness of the critter, measured as the number of characters which agree with a reference string. You will probably override this method.

$obj->gene([ $new_gene ])

Returns or sets the value of the critter's string gene.

SEE ALSO

Algorithm::Evolve, Algorithm::Evolve::Util, the rest of the examples/ directory.

AUTHOR

Algorithm::Evolve is written by Mike Rosulek <mike@mikero.com>. Feel free to contact me with comments, questions, patches, or whatever.

COPYRIGHT

Copyright (c) 2003 Mike Rosulek. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.