Algorithm-Evolutionary-Fitness

 view release on metacpan or  search on metacpan

lib/Algorithm/Evolutionary/Fitness.pm  view on Meta::CPAN

use strict; #-*-cperl-*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness - 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.

lib/Algorithm/Evolutionary/Fitness/Any.pm  view on Meta::CPAN

use strict; #-*-cperl-*-
use warnings;

use lib qw( ../../../../lib );

=encoding utf8

=head1 NAME

Algorithm::Evolutionary::Fitness::Any - Façade for any function so that it can be used as fitness

=head1 SYNOPSIS

   use Algorithm::Evolutionary::Utils qw( string_decode )

lib/Algorithm/Evolutionary/Fitness/ECC.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::ECC - Error Correcting codes problem generator

=head1 SYNOPSIS

    my $number_of_codewords = 10;
    my $min_distance = 1;
    my $p_peaks = Algorithm::Evolutionary::Fitness::ECC->new( $number_of_codewords, $min_distance );

lib/Algorithm/Evolutionary/Fitness/ECC.pm  view on Meta::CPAN

=head1 METHODS

=cut

package Algorithm::Evolutionary::Fitness::ECC;

our $VERSION = '3.2';

use Carp qw(croak);

use lib qw(../../.. ../.. ..);

use base qw(Algorithm::Evolutionary::Fitness::String);
use Algorithm::Evolutionary::Utils qw(hamming);

=head2 new

Creates a new instance of the problem, with the said number of bits and peaks

=cut 

lib/Algorithm/Evolutionary/Fitness/Knapsack.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

    Algorithm::Evolutionary::Fitness::Knapsack - Fitness function for the knapsack problem

=head1 SYNOPSIS

    my $n_max=100;  #Max. number of elements to choose
    my $capacity=286; #Max. Capacity of the knapsack
    my $rho=5.0625; #Penalty coeficient

lib/Algorithm/Evolutionary/Fitness/MMDP.pm  view on Meta::CPAN

use strict;
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::MMDP - Massively Multimodal Deceptive Problem

=head1 SYNOPSIS

    my $fitness_func = Algorithm::Evolutionary::Fitness::MMDP::apply;
    
    my $fitness = $fitness_func( $chromosome );

lib/Algorithm/Evolutionary/Fitness/ONEMAX.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::ONEMAX - Fitness function for the ONEMAX or count-ones problem

=head1 SYNOPSIS

    my $onemax =  new Algorithm::Evolutionary::Fitness::Knapsack;
    my $string = "1010101010101010";
    print $onemax->apply($string);

lib/Algorithm/Evolutionary/Fitness/P_Peaks.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::P_Peaks - P Peaks problem generator

=head1 SYNOPSIS

    my $number_of_peaks = 100;
    my $number_of_bits = 32;
    my $p_peaks = Algorithm::Evolutionary::Fitness::P_Peaks->new( $number_of_peaks, $number_of_bits );

lib/Algorithm/Evolutionary/Fitness/P_Peaks.pm  view on Meta::CPAN


=cut

package Algorithm::Evolutionary::Fitness::P_Peaks;

our $VERSION =  '3.4';

use String::Random;
use Carp;

use lib qw(../../.. ../.. ..);

use base qw(Algorithm::Evolutionary::Fitness::String);
use Algorithm::Evolutionary::Utils qw(hamming);

=head2 new( $peaks, $bits )

Creates a new instance of the problem, with the said number of bits
and peaks. 

=cut 

lib/Algorithm/Evolutionary/Fitness/Rastrigin.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::Rastrigin - Implementation of Rastrigin's function

=head1 SYNOPSIS

    my $n_dimensions=2;  #Max. number of elements to choose
    my $rastrigin = Algorithm::Evolutionary::Fitness::Rastrigin->new( $n_dimensions ); 

lib/Algorithm/Evolutionary/Fitness/Royal_Road.pm  view on Meta::CPAN

use strict;
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::Royal_Road - Mitchell's Royal Road function

=head1 SYNOPSIS

    my $block_size = 4;
    my $rr = Algorithm::Evolutionary::Fitness::Royal_Road->new( $block_size ); 

lib/Algorithm/Evolutionary/Fitness/String.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::String - Base class for string-based fitness functors

=head1 SYNOPSIS

    package My::Own::Fitness;
    use base 'Algorithm::Evolutionary::Fitness::String'; #Mainly for deriving
    

lib/Algorithm/Evolutionary/Fitness/Trap.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::Trap - 'Trap' fitness function for evolutionary algorithms

=head1 SYNOPSIS

    my $number_of_bits = 5;
    my $a = $number_of_bits -1; # Usual default values follow
    my $b = $number_of_bits;

lib/Algorithm/Evolutionary/Fitness/Trap.pm  view on Meta::CPAN


=cut

package Algorithm::Evolutionary::Fitness::Trap;

our $VERSION = '3.2';

use String::Random;
use Carp qw(croak);

use lib qw(../../.. ../.. ..);

use base qw(Algorithm::Evolutionary::Fitness::String);
use Algorithm::Evolutionary::Utils qw(hamming);

=head2 new( $number_of_bits, [$a = $number_of_bits -1, $b = $number_of_bits, $z=$number_of_bits-1])

Creates a new instance of the problem, with the said number of bits
and traps. Uses default values from C<$number_of_bits> if needed

=cut 

lib/Algorithm/Evolutionary/Fitness/ZDT1.pm  view on Meta::CPAN

use strict; # -*- cperl -*-
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

Algorithm::Evolutionary::Fitness::ZDT1 - Zitzler-Deb-Thiele #1 Multiobjective test function

=head1 SYNOPSIS

    my $number_of_bits = 5;
    my $z = Algorithm::Evolutionary::Fitness::ZDT1->new( $number_of_bits);
    my $string = "10101"x30;

lib/Algorithm/Evolutionary/Fitness/ZDT1.pm  view on Meta::CPAN

=head1 METHODS

=cut

package Algorithm::Evolutionary::Fitness::ZDT1;

our $VERSION =   sprintf "%d.%03d", q$Revision: 3.1 $ =~ /(\d+)\.(\d+)/g; 

use Carp qw(croak);

use lib qw(../../.. ../.. ..);

use base qw(Algorithm::Evolutionary::Fitness::String);
use Algorithm::Evolutionary::Utils qw(decode_string);

use constant { M => 30,
               NINE => 9 };

=head2 new

Creates a new instance of the problem, with the said number of bits and peaks

lib/Algorithm/Evolutionary/Fitness/wP_Peaks.pm  view on Meta::CPAN

use strict;
use warnings;

use lib qw( ../../../../lib );

=head1 NAME

    Algorithm::Evolutionary::Fitness::wP_Peaks - wP Peaks problem generator - weighted version of P_Peaks

=head1 SYNOPSIS

    my $number_of_bits = 32;
    my @weights = (1);
    for (my $i = 0; $i < 99; $i ++ ) {

t/00-load.t  view on Meta::CPAN

#!perl -T

use Test::More tests => 1;
use lib qw( lib ../lib ../../lib  ); #Just in case we are testing it in-place

BEGIN {
	use_ok( 'Algorithm::Evolutionary::Fitness' );
}

diag( "Testing Algorithm::Evolutionary::Fitness $Algorithm::Evolutionary::Fitness::VERSION, Perl $], $^X" );

t/01-onemax.t  view on Meta::CPAN

# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

#########################

use Test::More; # No plan

use warnings;
use strict;

use lib qw( ../../algorithm-evolutionary-utils/lib ../../lib ../lib lib ); #Just in case we are testing it in-place
use Algorithm::Evolutionary::Utils qw(random_bitstring);

use_ok( "Algorithm::Evolutionary::Fitness::ONEMAX", "using A::E::Fitness::ONEMAX OK" );

my $om = new Algorithm::Evolutionary::Fitness::ONEMAX;
isa_ok( $om,  "Algorithm::Evolutionary::Fitness::ONEMAX" );

my $num_bits = 32;
my $indi = random_bitstring( $num_bits, 1) ; # Build random bitstring with length 10
ok( $om->_apply( $indi ) > 0, "Works on indis" );

t/02-trap.t  view on Meta::CPAN

#-*-cperl-*-

use Test::More;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(random_bitstring);

use_ok( "Algorithm::Evolutionary::Fitness::Trap", "using Fitness::Trap OK" );

my $number_of_bits = 5;

my $trap = new Algorithm::Evolutionary::Fitness::Trap( $number_of_bits );
isa_ok( $trap,  "Algorithm::Evolutionary::Fitness::Trap" );

t/0300-ppeaks.t  view on Meta::CPAN


#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use Test::More;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(hamming);

use_ok( "Algorithm::Evolutionary::Fitness::P_Peaks", "using Fitness::P_Peaks OK" );

my $peaks = 100;
my $bits = 32;
my $p_peaks = new Algorithm::Evolutionary::Fitness::P_Peaks( $peaks, $bits );
isa_ok( $p_peaks,  "Algorithm::Evolutionary::Fitness::P_Peaks" );

t/0301-wppeaks.t  view on Meta::CPAN

#-*-cperl-*-

use Test::More tests => 5;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(hamming);

use_ok( "Algorithm::Evolutionary::Fitness::wP_Peaks", "using Fitness::wP_Peaks OK" );

my $peaks = 10;
my $bits = 32;
my @weights = (1);
for (1..$peaks ) {
  push @weights, 0.99;

t/0302-knapsack.t  view on Meta::CPAN

# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

#########################

use Test::More;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(random_bitstring);

use_ok( "Algorithm::Evolutionary::Fitness::Knapsack", "using A::E::Fitness::Knapsack OK" );

#Weights and profits. Created with a generator
my @profits=(13.76, 8.40465, 7.06637, 14.066, 6.92841, 13.0597, 8.08657, 9.78078, 7.69908, 11.3133, 11.5659, 9.03571, 14.9824, 9.77511, 6.96194, 12.4665, 14.5813, 9.76035, 10.4337, 11.443, 12.8197, 10.4104, 14.1428, 7.15892, 10.8211, 7.30107, 7.86628...
my @weights=(8.75995, 3.40465, 2.06637, 9.06605, 1.92841, 8.05966, 3.08657, 4.78078, 2.69908, 6.31326, 6.56593, 4.03571, 9.98242, 4.77511, 1.96194, 7.46651, 9.58128, 4.76035, 5.4337, 6.44295, 7.8197, 5.41039, 9.14283, 2.15892, 5.82114, 2.30107, 2.866...

my $Nmax=100;  #Max. number of elements to choose

t/0304-royalroad.t  view on Meta::CPAN

#-*-cperl-*-

use Test::More;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place
use Algorithm::Evolutionary::Utils qw(random_bitstring);

use_ok( "Algorithm::Evolutionary::Fitness::Royal_Road", "using A::E::Fitness::ONEMAX OK" );

my $block_size=4;
my $rr = new Algorithm::Evolutionary::Fitness::Royal_Road( $block_size );
isa_ok( $rr,  "Algorithm::Evolutionary::Fitness::Royal_Road" );

my $num_bits = 32;
my $indi = random_bitstring $num_bits, 1 ; # Build random bitstring with length 10

t/0305-ecc.t  view on Meta::CPAN

#-*-cperl-*-

use Test::More;
use Test::Exception;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(random_bitstring);

use_ok( "Algorithm::Evolutionary::Fitness::ECC", "using Fitness::ECC OK" );

my $number_of_codewords = 16;
my $min_distance = 1;

my $ecc = new Algorithm::Evolutionary::Fitness::ECC( $number_of_codewords, $min_distance );
isa_ok( $ecc,  "Algorithm::Evolutionary::Fitness::ECC" );

t/0306-any.t  view on Meta::CPAN

#-*-cperl-*-

use Test::More;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(random_bitstring decode_string);

use_ok( "Algorithm::Evolutionary::Fitness::Any", "using Fitness::Any OK" );

my $string = random_bitstring(64);
sub squares {
  my $chrom = shift;
  my @values = decode_string( $chrom, 32, -1, 1 );
  return $values[0] * $values[1];

t/0307-rastrigin.t  view on Meta::CPAN


#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use Test::More;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(random_number_array);

use_ok( "Algorithm::Evolutionary::Fitness::Rastrigin", "using Fitness::Rastrigin OK" );

my $size = 10;
my $min = -5.12;
my $range = 10.24;

my $tests = 20;

t/0307-zdt1.t  view on Meta::CPAN


#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use Test::More tests => 5;

use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use Algorithm::Evolutionary::Utils qw(random_bitstring);

use_ok( "Algorithm::Evolutionary::Fitness::ZDT1", "using Fitness::ZDT1 OK" );

my $number_of_bits = 10;

my $zdt1 = new Algorithm::Evolutionary::Fitness::ZDT1( $number_of_bits );
isa_ok( $zdt1,  "Algorithm::Evolutionary::Fitness::ZDT1" );

t/0333-mmdp.t  view on Meta::CPAN

#-*-cperl-*-

#Test the MMDP fitness function

use Test::More tests => 7;
use warnings;
use strict;

use lib qw( ../../lib ../lib lib ); #Just in case we are testing it in-place

use_ok( "Algorithm::Evolutionary::Fitness::MMDP", "using Fitness::MMDP OK" );

my $units = "000000";
my $mmdp = new  Algorithm::Evolutionary::Fitness::MMDP;
for (my $i = 0; $i < length($units); $i++ ) {
    my $clone = $units;
    substr($clone, $i, 1 ) = "1";
    is(  $mmdp->mmdp( $clone ),
	 $Algorithm::Evolutionary::Fitness::MMDP::unitation[$i+1],



( run in 0.935 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )