documentation modifications
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@178 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
f3bf6dcb10
commit
4b45aadd5d
16 changed files with 76 additions and 73 deletions
|
|
@ -14,19 +14,20 @@
|
||||||
#define MOEOARCHIVE_H_
|
#define MOEOARCHIVE_H_
|
||||||
|
|
||||||
#include <eoPop.h>
|
#include <eoPop.h>
|
||||||
|
#include <moeoObjectiveVectorComparator.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An archive is a secondary population that stores non-dominated solutions
|
* An archive is a secondary population that stores non-dominated solutions.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoArchive : public eoPop < MOEOT >
|
class moeoArchive : public eoPop < MOEOT >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
using std::vector< MOEOT > :: size;
|
using std::vector < MOEOT > :: size;
|
||||||
using std::vector< MOEOT > :: operator[];
|
using std::vector < MOEOT > :: operator[];
|
||||||
using std::vector< MOEOT > :: back;
|
using std::vector < MOEOT > :: back;
|
||||||
using std::vector< MOEOT > :: pop_back;
|
using std::vector < MOEOT > :: pop_back;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -57,9 +58,9 @@ public:
|
||||||
*/
|
*/
|
||||||
bool dominates (const ObjectiveVector & _objectiveVector) const
|
bool dominates (const ObjectiveVector & _objectiveVector) const
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < size(); i++)
|
for (unsigned i = 0; i<size(); i++)
|
||||||
{
|
{
|
||||||
if ( comparator(operator[](i).fitness(), _objectiveVector)==1 )
|
if ( comparator(operator[](i).fitness(), _objectiveVector) == 1 )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -74,9 +75,9 @@ public:
|
||||||
*/
|
*/
|
||||||
bool contains (const ObjectiveVector & _objectiveVector) const
|
bool contains (const ObjectiveVector & _objectiveVector) const
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < size; i++)
|
for (unsigned i = 0; i<size(); i++)
|
||||||
{
|
{
|
||||||
if (operator[](i).fitness () == _objectiveVector)
|
if (operator[](i).fitness() == _objectiveVector)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -92,16 +93,14 @@ public:
|
||||||
void update (const MOEOT & _moeo)
|
void update (const MOEOT & _moeo)
|
||||||
{
|
{
|
||||||
// first step: removing the dominated solutions from the archive
|
// first step: removing the dominated solutions from the archive
|
||||||
for (unsigned j = 0; j < size();)
|
for (unsigned j=0; j<size();)
|
||||||
{
|
{
|
||||||
// if _moeo.fitness() dominates operator[](j).fitness()
|
// if _moeo dominates the jth solution contanied in the archive
|
||||||
//if ( comparator(_moeo.fitness(), operator[](j).fitness())==1 )
|
|
||||||
if ( comparator(_moeo.objectiveVector(), operator[](j).objectiveVector())==1 )
|
if ( comparator(_moeo.objectiveVector(), operator[](j).objectiveVector())==1 )
|
||||||
{
|
{
|
||||||
operator[](j) = back();
|
operator[](j) = back();
|
||||||
pop_back();
|
pop_back();
|
||||||
}
|
}
|
||||||
//else if (_moeo.fitness() == operator[](j).fitness())
|
|
||||||
else if (_moeo.objectiveVector() == operator[](j).objectiveVector())
|
else if (_moeo.objectiveVector() == operator[](j).objectiveVector())
|
||||||
{
|
{
|
||||||
operator[](j) = back();
|
operator[](j) = back();
|
||||||
|
|
@ -116,9 +115,8 @@ public:
|
||||||
bool dom = false;
|
bool dom = false;
|
||||||
for (unsigned j=0; j<size(); j++)
|
for (unsigned j=0; j<size(); j++)
|
||||||
{
|
{
|
||||||
// if operator[](j).fitness() dominates _moeo.fitness()
|
// if the jth solution contanied in the archive dominates _moeo
|
||||||
//if ( comparator(operator[](j).fitness(), _moeo.fitness())==1 )
|
if ( comparator(operator[](j).objectiveVector(), _moeo.objectiveVector()) == 1 )
|
||||||
if ( comparator(operator[](j).objectiveVector(), _moeo.objectiveVector())==1 )
|
|
||||||
{
|
{
|
||||||
dom = true;
|
dom = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
#include <moeoArchive.h>
|
#include <moeoArchive.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class allows to update the archive at each generation with newly found non-dominated solutions
|
* This class allows to update the archive at each generation with newly found non-dominated solutions.
|
||||||
*/
|
*/
|
||||||
template < class EOT >
|
template < class EOT >
|
||||||
class moeoArchiveUpdater : public eoUpdater
|
class moeoArchiveUpdater : public eoUpdater
|
||||||
|
|
|
||||||
|
|
@ -19,27 +19,30 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class allows to embed a set of local searches that are sequentially applied,
|
* This class allows to embed a set of local searches that are sequentially applied,
|
||||||
* and so working and updating the same archive of non-dominated solutions
|
* and so working and updating the same archive of non-dominated solutions.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoCombinedLS : public moeoLS < MOEOT > {
|
class moeoCombinedLS : public moeoLS < MOEOT >
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ctor
|
* Ctor
|
||||||
* @param _eval the full evaluator of a solution
|
* @param _eval the full evaluator of a solution
|
||||||
* @param _first_ls the first multi-objective local search to add
|
* @param _first_mols the first multi-objective local search to add
|
||||||
*/
|
*/
|
||||||
moeoCombinedLS(moeoEvalFunc < MOEOT > & _eval, moeoLS < MOEOT > & _first_ls) : eval (_eval) {
|
moeoCombinedLS(moeoEvalFunc < MOEOT > & _eval, moeoLS < MOEOT > & _first_mols) : eval (_eval)
|
||||||
combinedLS.push_back (& _first_ls);
|
{
|
||||||
|
combinedLS.push_back (& _first_mols);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new local search to combine
|
* Adds a new local search to combine
|
||||||
* @param _ls the multi-objective local search to add
|
* @param _mols the multi-objective local search to add
|
||||||
*/
|
*/
|
||||||
void add(moeoLS < MOEOT > & _ls) {
|
void add(moeoLS < MOEOT > & _mols)
|
||||||
combinedMOLS.push_back(& _ls);
|
{
|
||||||
|
combinedMOLS.push_back(& _mols);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,10 +51,11 @@ public:
|
||||||
* @param _eo the solution
|
* @param _eo the solution
|
||||||
* @param _arch the archive of non-dominated solutions
|
* @param _arch the archive of non-dominated solutions
|
||||||
*/
|
*/
|
||||||
void operator () (const MOEOT & _eo, moeoArchive < MOEOT > & _arch) {
|
void operator () (const MOEOT & _moeo, moeoArchive < MOEOT > & _arch)
|
||||||
eval(const_cast < MOEOT & > (_eo));
|
{
|
||||||
|
eval(const_cast < MOEOT & > (_moeo));
|
||||||
for (unsigned i=0; i<combinedLS.size(); i++)
|
for (unsigned i=0; i<combinedLS.size(); i++)
|
||||||
combinedLS[i] -> operator()(_eo, _arch);
|
combinedLS[i] -> operator()(_moeo, _arch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,13 @@
|
||||||
*/
|
*/
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifndef MOEOPOPSORTER_H_
|
#ifndef MOEOCOMPARATOR_H_
|
||||||
#define MOEOPOPSORTER_H_
|
#define MOEOCOMPARATOR_H_
|
||||||
|
|
||||||
#include <eoFunctor.h>
|
#include <eoFunctor.h>
|
||||||
#include <eoPop.h>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor allowing to compare two solutions
|
* Functor allowing to compare two solutions.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoComparator : public eoBF < const MOEOT &, const MOEOT &, const bool >
|
class moeoComparator : public eoBF < const MOEOT &, const MOEOT &, const bool >
|
||||||
|
|
@ -25,7 +24,7 @@ class moeoComparator : public eoBF < const MOEOT &, const MOEOT &, const bool >
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor allowing to compare two solutions according to their first objective value, then their second, and so on
|
* Functor allowing to compare two solutions according to their first objective value, then their second, and so on.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoObjectiveComparator : public moeoComparator < MOEOT >
|
class moeoObjectiveComparator : public moeoComparator < MOEOT >
|
||||||
|
|
@ -44,7 +43,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor allowing to compare two solutions according to their fitness values
|
* Functor allowing to compare two solutions according to their fitness values.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoFitnessComparator : public moeoComparator < MOEOT >
|
class moeoFitnessComparator : public moeoComparator < MOEOT >
|
||||||
|
|
@ -63,7 +62,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor allowing to compare two solutions according to their diversity values
|
* Functor allowing to compare two solutions according to their diversity values.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoDiversityComparator : public moeoComparator < MOEOT >
|
class moeoDiversityComparator : public moeoComparator < MOEOT >
|
||||||
|
|
@ -82,7 +81,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor allowing to compare two solutions according to their fitness values, then according to their diversity values
|
* Functor allowing to compare two solutions according to their fitness values, then according to their diversity values.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoFitnessThenDiversityComparator : public moeoComparator < MOEOT >
|
class moeoFitnessThenDiversityComparator : public moeoComparator < MOEOT >
|
||||||
|
|
@ -108,7 +107,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor allowing to compare two solutions according to their diversity values, then according to their fitness values
|
* Functor allowing to compare two solutions according to their diversity values, then according to their fitness values.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoDiversityThenFitnessComparator : public moeoComparator < MOEOT >
|
class moeoDiversityThenFitnessComparator : public moeoComparator < MOEOT >
|
||||||
|
|
@ -134,7 +133,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor allowing to compare two solutions according to Pareto dominance relation => USEFULL ???
|
* Functor allowing to compare two solutions according to Pareto dominance relation. => USEFULL ???
|
||||||
*
|
*
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoParetoDominanceComparator : public moeoComparator < MOEOT >
|
class moeoParetoDominanceComparator : public moeoComparator < MOEOT >
|
||||||
|
|
@ -179,4 +178,4 @@ public:
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif /*MOEOPOPSORTER_H_*/
|
#endif /*MOEOCOMPARATOR_H_*/
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
#include <eoPop.h>
|
#include <eoPop.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor that sets the diversity values of a whole population
|
* Functor that sets the diversity values of a whole population.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoDiversityAssignment : public eoUF < eoPop < MOEOT > &, void >
|
class moeoDiversityAssignment : public eoUF < eoPop < MOEOT > &, void >
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include <eoAlgo.h>
|
#include <eoAlgo.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class for multi-objective evolutionary algorithms
|
* Abstract class for multi-objective evolutionary algorithms.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoEA : public eoAlgo < MOEOT > {};
|
class moeoEA : public eoAlgo < MOEOT > {};
|
||||||
|
|
|
||||||
|
|
@ -14,15 +14,15 @@
|
||||||
#define MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_
|
#define MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_
|
||||||
|
|
||||||
#include <eoPop.h>
|
#include <eoPop.h>
|
||||||
#include <moeoFitnessAssignment.h>
|
|
||||||
#include <moeoComparator.h>
|
#include <moeoComparator.h>
|
||||||
|
#include <moeoFitnessAssignment.h>
|
||||||
#include <moeoObjectiveVectorComparator.h>
|
#include <moeoObjectiveVectorComparator.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fitness assignment sheme based on Pareto-dominance count proposed in
|
* Fitness assignment sheme based on Pareto-dominance count proposed in:
|
||||||
* N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms", Evolutionary Computation vol. 2, no. 3, pp. 221-248 (1994)
|
* *N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms", Evolutionary Computation vol. 2, no. 3, pp. 221-248 (1994)*
|
||||||
* and in
|
* and in:
|
||||||
* K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002).
|
* *K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002)*.
|
||||||
* This strategy is, for instance, used in NSGA and NSGA-II.
|
* This strategy is, for instance, used in NSGA and NSGA-II.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
#include <eoPop.h>
|
#include <eoPop.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functor that sets the fitness values of a whole population
|
* Functor that sets the fitness values of a whole population.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoFitnessAssignment : public eoUF < eoPop < MOEOT > &, void >
|
class moeoFitnessAssignment : public eoUF < eoPop < MOEOT > &, void >
|
||||||
|
|
@ -25,7 +25,7 @@ class moeoFitnessAssignment : public eoUF < eoPop < MOEOT > &, void >
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* moeoScalarFitnessAssignment is a moeoFitnessAssignment for scalar strategies
|
* moeoScalarFitnessAssignment is a moeoFitnessAssignment for scalar strategies.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoScalarFitnessAssignment : public moeoFitnessAssignment < MOEOT >
|
class moeoScalarFitnessAssignment : public moeoFitnessAssignment < MOEOT >
|
||||||
|
|
@ -33,7 +33,7 @@ class moeoScalarFitnessAssignment : public moeoFitnessAssignment < MOEOT >
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* moeoCriterionBasedFitnessAssignment is a moeoFitnessAssignment for criterion-based strategies
|
* moeoCriterionBasedFitnessAssignment is a moeoFitnessAssignment for criterion-based strategies.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoCriterionBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT >
|
class moeoCriterionBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT >
|
||||||
|
|
@ -41,7 +41,7 @@ class moeoCriterionBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* moeoParetoBasedFitnessAssignment is a moeoFitnessAssignment for Pareto-based strategies
|
* moeoParetoBasedFitnessAssignment is a moeoFitnessAssignment for Pareto-based strategies.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoParetoBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT >
|
class moeoParetoBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT >
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
#include <moeoGenerationalReplacement.h>
|
#include <moeoGenerationalReplacement.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generational replacement: only the new individuals are preserved
|
* Generational replacement: only the new individuals are preserved.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoGenerationalReplacement : public moeoReplacement < MOEOT >, public eoGenerationalReplacement < MOEOT > {};
|
class moeoGenerationalReplacement : public moeoReplacement < MOEOT >, public eoGenerationalReplacement < MOEOT > {};
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,10 @@ public:
|
||||||
* Ctor
|
* Ctor
|
||||||
* @param _term stopping criteria
|
* @param _term stopping criteria
|
||||||
* @param _select selector
|
* @param _select selector
|
||||||
* @param _ls a multi-objective local search
|
* @param _mols a multi-objective local search
|
||||||
* @param _arch the archive
|
* @param _arch the archive
|
||||||
*/
|
*/
|
||||||
eoHybridLS (eoContinue < MOEOT > & _term, eoSelect < MOEOT > & _select, moeoLS < MOEOT > & _ls, moeoArchive < MOEOT > & _arch) : term(_term), select(_select), ls(_ls), arch(_arch)
|
eoHybridLS (eoContinue < MOEOT > & _term, eoSelect < MOEOT > & _select, moeoLS < MOEOT > & _mols, moeoArchive < MOEOT > & _arch) : term(_term), select(_select), mols(_mols), arch(_arch)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -50,9 +50,9 @@ public:
|
||||||
eoPop < MOEOT > selectedSolutions;
|
eoPop < MOEOT > selectedSolutions;
|
||||||
select(arch, selectedSolutions);
|
select(arch, selectedSolutions);
|
||||||
// apply the local search to every selected solution
|
// apply the local search to every selected solution
|
||||||
for (unsigned i=0; i<selectedSolutions.size(); i ++)
|
for (unsigned i=0; i<selectedSolutions.size(); i++)
|
||||||
{
|
{
|
||||||
ls(selectedSolutions[i], arch);
|
mols(selectedSolutions[i], arch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -65,7 +65,7 @@ private:
|
||||||
/** selector */
|
/** selector */
|
||||||
eoSelect < MOEOT > & select;
|
eoSelect < MOEOT > & select;
|
||||||
/** multi-objective local search */
|
/** multi-objective local search */
|
||||||
moeoLS < MOEOT > & ls;
|
moeoLS < MOEOT > & mols;
|
||||||
/** archive */
|
/** archive */
|
||||||
moeoArchive < MOEOT > & arch;
|
moeoArchive < MOEOT > & arch;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ class moeoObjectiveVectorComparator : public eoBF < const ObjectiveVector &, con
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This functor class allows to compare 2 objective vectors according to Pareto dominance
|
* This functor class allows to compare 2 objective vectors according to Pareto dominance.
|
||||||
*/
|
*/
|
||||||
template < class ObjectiveVector >
|
template < class ObjectiveVector >
|
||||||
class moeoParetoObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector >
|
class moeoParetoObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector >
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A traits class for moeoObjectiveVector to specify the number of objectives and which ones have to be minimized or maximized
|
* A traits class for moeoObjectiveVector to specify the number of objectives and which ones have to be minimized or maximized.
|
||||||
*/
|
*/
|
||||||
class moeoObjectiveVectorTraits
|
class moeoObjectiveVectorTraits
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
#include <eoRandomSelect.h>
|
#include <eoRandomSelect.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selection strategy that selects only one element randomly from a whole population
|
* Selection strategy that selects only one element randomly from a whole population.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoRandomSelectOne : public moeoSelectOne < MOEOT >, public eoRandomSelect < MOEOT > {};
|
class moeoRandomSelectOne : public moeoSelectOne < MOEOT >, public eoRandomSelect < MOEOT > {};
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include <eoReplacement.h>
|
#include <eoReplacement.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replacement strategy for multi-objective optimization
|
* Replacement strategy for multi-objective optimization.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoReplacement : public eoReplacement < MOEOT > {};
|
class moeoReplacement : public eoReplacement < MOEOT > {};
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
#include <eoSelectOne.h>
|
#include <eoSelectOne.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selection strategy for multi-objective optimization that selects only one element from a whole population
|
* Selection strategy for multi-objective optimization that selects only one element from a whole population.
|
||||||
*/
|
*/
|
||||||
template < class MOEOT >
|
template < class MOEOT >
|
||||||
class moeoSelectOne : public eoSelectOne < MOEOT > {};
|
class moeoSelectOne : public eoSelectOne < MOEOT > {};
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,8 @@
|
||||||
/**
|
/**
|
||||||
* Elitist selection process that consists in choosing individuals in the archive as well as in the current population.
|
* Elitist selection process that consists in choosing individuals in the archive as well as in the current population.
|
||||||
*/
|
*/
|
||||||
template<class EOT>
|
template < class MOEOT >
|
||||||
class moeoSelectOneFromPopAndArch : public moeoSelectOne<EOT>
|
class moeoSelectOneFromPopAndArch : public moeoSelectOne < MOEOT >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
@ -34,24 +34,25 @@ public:
|
||||||
* @param _arch the archive
|
* @param _arch the archive
|
||||||
* @param _ratioFromPop the ratio of selected individuals from the population
|
* @param _ratioFromPop the ratio of selected individuals from the population
|
||||||
*/
|
*/
|
||||||
moeoSelectOneFromPopAndArch (moeoSelectOne<EOT> & _popSelectOne, moeoSelectOne<EOT> _archSelectOne, moeoArchive <EOT> & _arch, double _ratioFromPop=0.5)
|
moeoSelectOneFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoSelectOne < MOEOT > _archSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5)
|
||||||
: popSelectOne(_popSelectOne), archSelectOne(_archSelectOne), arch(_arch), ratioFromPop(_ratioFromPop)
|
: popSelectOne(_popSelectOne), archSelectOne(_archSelectOne), arch(_arch), ratioFromPop(_ratioFromPop)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ctor - the archive's selection operator is a random selector
|
* Defaulr ctor - the archive's selection operator is a random selector
|
||||||
* @param _popSelectOne the population's selection operator
|
* @param _popSelectOne the population's selection operator
|
||||||
* @param _arch the archive
|
* @param _arch the archive
|
||||||
* @param _ratioFromPop the ratio of selected individuals from the population
|
* @param _ratioFromPop the ratio of selected individuals from the population
|
||||||
*/
|
*/
|
||||||
moeoSelectOneFromPopAndArch (moeoSelectOne<EOT> & _popSelectOne, moeoArchive <EOT> & _arch, double _ratioFromPop=0.5)
|
moeoSelectOneFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5)
|
||||||
: popSelectOne(_popSelectOne), archSelectOne(randomSelectOne), arch(_arch), ratioFromPop(_ratioFromPop)
|
: popSelectOne(_popSelectOne), archSelectOne(randomSelectOne), arch(_arch), ratioFromPop(_ratioFromPop)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The selection process
|
* The selection process
|
||||||
*/
|
*/
|
||||||
virtual const EOT & operator () (const eoPop<EOT> & pop) {
|
virtual const MOEOT & operator () (const eoPop < MOEOT > & pop)
|
||||||
|
{
|
||||||
if (arch.size() > 0)
|
if (arch.size() > 0)
|
||||||
if (rng.flip(ratioFromPop))
|
if (rng.flip(ratioFromPop))
|
||||||
return popSelectOne(pop);
|
return popSelectOne(pop);
|
||||||
|
|
@ -64,7 +65,8 @@ public:
|
||||||
/**
|
/**
|
||||||
* Setups some population stats
|
* Setups some population stats
|
||||||
*/
|
*/
|
||||||
virtual void setup (const eoPop<EOT> & _pop) {
|
virtual void setup (const eoPop < MOEOT > & _pop)
|
||||||
|
{
|
||||||
popSelectOne.setup(_pop);
|
popSelectOne.setup(_pop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -72,15 +74,15 @@ public:
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/** The population's selection operator */
|
/** The population's selection operator */
|
||||||
moeoSelectOne<EOT> & popSelectOne;
|
moeoSelectOne < MOEOT > & popSelectOne;
|
||||||
/** The archive's selection operator */
|
/** The archive's selection operator */
|
||||||
moeoSelectOne<EOT> & archSelectOne;
|
moeoSelectOne < MOEOT > & archSelectOne;
|
||||||
/** The archive */
|
/** The archive */
|
||||||
moeoArchive <EOT> & arch;
|
moeoArchive < MOEOT > & arch;
|
||||||
/** The ratio of selected individuals from the population*/
|
/** The ratio of selected individuals from the population*/
|
||||||
double ratioFromPop;
|
double ratioFromPop;
|
||||||
/** A random selection operator */
|
/** A random selection operator (used as default for archSelectOne) */
|
||||||
moeoRandomSelectOne<EOT> randomSelectOne;
|
moeoRandomSelectOne< MOEOT > randomSelectOne;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue