LTI-Lib latest version v1.9 - last update 10 Apr 2010

lti::paretoFront::parameters Class Reference

The parameters for the class paretoFront. More...

#include <ltiParetoFront.h>

Inheritance diagram for lti::paretoFront::parameters:
Inheritance graph
[legend]
Collaboration diagram for lti::paretoFront::parameters:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 parameters ()
 parameters (const parameters &other)
 ~parameters ()
const char * getTypeName () const
parameterscopy (const parameters &other)
parametersoperator= (const parameters &other)
virtual functor::parametersclone () const
virtual bool write (ioHandler &handler, const bool &complete=true) const
virtual bool read (ioHandler &handler, const bool &complete=true)

Public Attributes

double crossoverProbability
double initialMutationRate
double finalMutationRate
double mutationDecayRate
int externalPopulationSize
int internalPopulationSize
int fitnessSpaceDimensionality
int numOfIterations
bool logAllEvaluations
int fitnessSpacePartition
bool sortResult
Log options



bool logFront
std::string logFilename

Detailed Description

The parameters for the class paretoFront.

These are the general parameters for the Pareto Front computation. For each special evaluation class, more attributes are usually added.


Constructor & Destructor Documentation

lti::paretoFront::parameters::parameters (  ) 
lti::paretoFront::parameters::parameters ( const parameters other  ) 

Copy constructor.

Parameters:
other the parameters object to be copied

Reimplemented in lti::locationSearchEvaluation::parameters, and lti::segmentationEvaluation::parameters.

lti::paretoFront::parameters::~parameters (  )  [virtual]

Member Function Documentation

virtual functor::parameters* lti::paretoFront::parameters::clone (  )  const [virtual]

Returns a pointer to a clone of the parameters.

Implements lti::functor::parameters.

Reimplemented in lti::locationSearchEvaluation::parameters, and lti::segmentationEvaluation::parameters.

parameters& lti::paretoFront::parameters::copy ( const parameters other  ) 

Copy the contents of a parameters object.

Parameters:
other the parameters object to be copied
Returns:
a reference to this parameters object

Reimplemented in lti::locationSearchEvaluation::parameters, and lti::segmentationEvaluation::parameters.

const char* lti::paretoFront::parameters::getTypeName (  )  const [virtual]

Returns name of this type.

Reimplemented from lti::functor::parameters.

Reimplemented in lti::locationSearchEvaluation::parameters, and lti::segmentationEvaluation::parameters.

parameters& lti::paretoFront::parameters::operator= ( const parameters other  ) 

Copy the contents of a parameters object.

Parameters:
other the parameters object to be copied
Returns:
a reference to this parameters object

Reimplemented in lti::locationSearchEvaluation::parameters, and lti::segmentationEvaluation::parameters.

virtual bool lti::paretoFront::parameters::read ( ioHandler handler,
const bool &  complete = true 
) [virtual]

Read the parameters from the given ioHandler.

Parameters:
handler the ioHandler to be used
complete if true (the default) the enclosing begin/end will be also written, otherwise only the data block will be written.
Returns:
true if write was successful

Reimplemented in lti::locationSearchEvaluation::parameters, and lti::segmentationEvaluation::parameters.

virtual bool lti::paretoFront::parameters::write ( ioHandler handler,
const bool &  complete = true 
) const [virtual]

Write the parameters in the given ioHandler.

Parameters:
handler the ioHandler to be used
complete if true (the default) the enclosing begin/end will be also written, otherwise only the data block will be written.
Returns:
true if write was successful

Reimplemented in lti::locationSearchEvaluation::parameters, and lti::segmentationEvaluation::parameters.


Member Data Documentation

Crossover probability.

The PESA algorithms does a uniform crossover with this probability Pc. This means, with probability Pc a crossover between two parents will be done, otherwise only mutation will be done.

Default value: 0.7

Size of elements that constitute the Pareto Front.

Default value: 100

Final Bit-flip mutation probability.

This value is usually set to 1/L, where L is the size of a chromosome, i.e. the bit-length size given to the binary parameter representation. (see paretoFront::phenotypeToChromosome).

If negative, the value used will be |mutationRate|/L. If positive, the value will be used "as is".

Note that if positive, it only makes sense to have values between 0 and 1.

This value has to be smaller or equal initialMutationRate.

Default value: -1 (i.e. 1/L will be used)

Dimensionality of the space analyzed by the Pareto Front.

Note that this is unrelated with the parameter-space, which usually has many more dimensions that the fitness space.

Usual values are 2 or 3, since more dimensions are very difficult to visualize.

Default value: 2

Fitness space partitioning.

The choice which individual(s) in the Pareto front should be chosen for crossover or mutation is taken on a fitness-space density measure. Elements will be removed from the dense locations, since there are enough prototypes for those places, and for the generation of new ones candidates are taken from the low-density regions.

The bounding box for the fitness space will be computed automatically as new elements are generated. To determine the density at each location, a Gaussian kernel will be used. Its covariance matrix is assumed diagonal, where each dimension will have as std. deviation a sixth of the length obtaind dividing the interval with the given factor.

In the original PESA paper a fixed grid was used, but this has limitations in the reachable precision.

Default value: 32

Initial Bit-flip mutation probability.

This value is usually set to 1/L, where L is the size of a chromosome, i.e. the bit-length size given to the binary parameter representation. (see paretoFront::phenotypeToChromosome).

If negative, the value used will be |mutationRate|/L. If positive, the value will be used "as is".

Note that if positive, it only makes sense to have values between 0 and 1.

This value has to be greater or equal finalMutationRate.

Default value: -1 (i.e. 1/L will be used)

Internal population size.

Size of elements produced by each iteration through cross over or mutation as candidates for the front.

Default value: 10

Log all evaluated individuals.

Sometimes, for documentation or debug purposes, you will want to know all created individuals, even the ones not belonging to the pareto front. Since they are usually not required, and they demand some resources, it is left to you if you want to keep track of them or not.

Set this parameter to true, if you want to store all generated and evaluated individuals, of false, if you want to save the space and time required to remember them.

Default value: false

Log Filename.

Filename used for the log of patterns. The data will be written in an ASCII format using a lti::lispStreamHandler. It will contain for each individual the chromosome binary representation and the computed fitness. At the beginning it will save all parameters necessary to bring this functor to a compatible state.

Default value: "pareto.log"

Activate log.

If true, every new individual that is inserted to the front will be logged in the given file. Later on, you can use a special apply to continue the analysis of a broken progress.

Default value: false

Mutation Rate Decay Value.

It is possible to begin the evolution with a higher mutation rate than in a "stable" evolution. This supports a more random search a the beginning, where nothing really good has been found. After a few steps can be however desirable to slowly reduce the mutation rate into a more normal value.

The ecuation used for the real mutation rate is: (initialMutationRate-finalMutationRate)*exp(-i/d) with "i" the iteration number and "d" this decay rate value.

The smaller this value, the faster the mutation rate converges to its final value.

This value must be strictly positive (never zero). If you want a "traditional" PESA, just set the initial and final mutation rates with the same value.

Default value: 33.38 (i.e. after 100 steps only 5% of the (final-initial) interval remains)

Number of iterations.

The process of generating an internal population and then assign the best candidates to the Pareto Front is repeated a number of times specified by this parameter.

Note that the total number of evaluations for the algorithms will be approximatelly this factor times internalPopulationSize. If you really want at least externalPopulationSize elements in the Pareto front, you need to provide enough iterations to allow that, which should be considerably greater than externalPopulationSize/internalPopulationSize, since not all generated members are added to the pareto front.

Default value: 1000

Sort result in scanning order.

If true, the individuals of the front will be sorted in ascending order of their multidimensional fitness.

In principle, this sorting has no semantical effects about the overall fitness of an individual, i.e. an individual later in the list is not necessarily better than another one with a smaller index. This sorting is more oriented towards drawing tasks for the Pareto front.

According to the fitness scanning ordering, and individual A greater than an individual B if

  (A[n-1] > B[n-1]) or 
 ((A[n-1] == A[n-1]) and ( (A[n-2] > A[n-2]) or
                          ((A[n-2] == A[n-2]) and (A[n-3] > A[n-3]))
                           ... ))

This is the same ordering employed for lti::tpoint<T>

Sorting will use the STL methods to sort efficiently the result. However, it is optional in case you don't care how the individuals are sorted.

Default value: false


The documentation for this class was generated from the following file:

Generated on Sat Apr 10 15:29:17 2010 for LTI-Lib by Doxygen 1.6.1