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],