The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
=head1 NAME
Algorithm::Evolutionary::Fitness::Base - Base class for Fitness functions
=head1 SYNOPSIS
Shouldn't be used directly, it's an abstract class whose siblings are
used to implement fitness functions
=head1 DESCRIPTION
Has functionality that should be common to all fitness. Or at least it
would be nice to have it in common
=head1 METHODS
=cut
use Carp;
our ($VERSION) = ( '$Revision: 1.4 $ ' =~ /(\d+\.\d+)/ );
=head2 new()
Initializes common variables, like the number of evaluations
=cut
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
$self->initialize();
return $self;
}
=head2 initialize()
Called from new, initializes the evaluations counter.
=cut
sub initialize {
my $self = shift;
$self->{_counter} = 0;
}
=head2 apply( $individual )
Applies the instantiated problem to a chromosome. Actually it is a
wrapper around C<_apply>
=cut
sub apply {
my $self = shift;
my $individual = shift;
$self->{'_counter'}++;
return $self->_apply( $individual );
}
=head2 _apply( $individual )
This is the one that really does the stuff. Should be overloaded by
derived clases
=cut
sub _apply {
carp "You should have overloaded this\n";
}
=head2 evaluations()
Returns the number of evaluations made with this object. Useful for
collecting stats
=cut
sub evaluations {
my $self = shift;
return $self->{_counter};
}
=head1 Known subclasses
=over 4
=item *
L<Algorithm::Evolutionary::Fitness::MMDP>
=item *
L<Algorithm::Evolutionary::Fitness::P_Peaks>
=item *
L<Algorithm::Evolutionary::Fitness::wP_Peaks>
=item *
L<Algorithm::Evolutionary::Fitness::Knapsack>
=back
=head1 Copyright
This file is released under the GPL. See the LICENSE file included in this distribution,
CVS Info: $Date: 2008/06/18 17:18:11 $
$Header: /cvsroot/opeal/Algorithm-Evolutionary/lib/Algorithm/Evolutionary/Fitness/Base.pm,v 1.4 2008/06/18 17:18:11 jmerelo Exp $
$Author: jmerelo $
$Revision: 1.4 $
$Name $
=cut
"What???";