Quick Navigator

 Search Site Miscellaneous Server Agreement Year 2038 Credits

# Manual Reference Pages  -  ALGORITHM::EVOLUTIONARY::OP::PERMUTATION (3)

.ds Aq ’

### NAME

Algorithm::Evolutionary::Op::Permutation - Per-mutation. Got it?

### SYNOPSIS

```

use Algorithm::Evolutionary::Op::Permutation;

my \$op = new Algorithm::Evolutionary::Op::Permutation ; #Create from scratch
my \$bit_chromosome =  new Algorithm::Evolutionary::Individual::BitString 10;
\$op->apply( \$bit_chromosome );

my \$priority = 2;
my \$max_iterations = 100; # Less than 10!, absolute maximum number
# of permutations
\$op = new Algorithm::Evolutionary::Op::Permutation \$priority, \$max_iterations;

my \$xmlStr=<<EOC;
<op name=Permutation type=unary rate=2 />
EOC
my \$ref = XMLin(\$xmlStr);

my \$op = Algorithm::Evolutionary::Op::->fromXML( \$ref );
print \$op->asXML(), "\n*Arity ->", \$op->arity(), "\n";

```

### Base Class

Algorithm::Evolutionary::Op::Base

### DESCRIPTION

Class independent permutation operator; any individual that has the
_str instance variable (like
Algorithm::Evolutionary::Individual::String and
Algorithm::Evolutionary::Individual::BitString) will have some
of its elements swapped. Each string of length l has l!
permutations; the max_iterations parameter should not be higher
than that.

This kind of operator is used extensively in combinatorial
optimization problems. See, for instance,
@article{prins2004simple,
title={{A simple and effective evolutionary algorithm for the vehicle routing problem}},
author={Prins, C.},
journal={Computers \& Operations Research},
volume={31},
number={12},
pages={1985--2002},
issn={0305-0548},
year={2004},
publisher={Elsevier}
}

And, of course, Algorithm::MasterMind, where it is used in the
evolutionary algorithms solutions.

### METHODS

#### new( [\$rate = 1][, CW\$max_iterations = 10] )

Creates a new permutation operator; see
Algorithm::Evolutionary::Op::Base for details common to all
operators. The chromosome will undergo a random number of at most
\$max_iterations. By default, it equals 10.

#### create

Creates a new mutation operator with an application priority, which
defaults to 1.

Called create to distinguish from the classwide ctor, new. It just makes simpler to create an Operator

#### apply( CW\$chromosome )

Applies at most max_iterations permutations to a Chromosome that includes the _str
instance variable. The number of iterations will be random, so
that applications of the operator on the same individual will
create diverse offspring.

Uses Algorithm::Permute, which is purported to be the fastest
permutation library around. Might change it in the future to
Algorithm::Combinatorics, which is much more comprehensive.

```

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

CVS Info: \$Date: 2013/01/09 07:22:50 \$
\$Header: /media/Backup/Repos/opeal/opeal/Algorithm-Evolutionary/lib/Algorithm/Evolutionary/Op/Permutation.pm,v 3.7 2013/01/09 07:22:50 jmerelo Exp \$
\$Author: jmerelo \$
\$Revision: 3.7 \$

```
Search for    or go to Top of page |  Section 3 |  Main Index

 perl v5.20.3 ALGORITHM::EVOLUTIONARY::OP::PERMUTATION (3) 2014-10-25

Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.