From abedfe47749fa9fd2b2d6145ecbc5440a7101b9e Mon Sep 17 00:00:00 2001 From: jhumeau Date: Tue, 30 Jun 2009 13:12:42 +0000 Subject: [PATCH] git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1595 331e1502-861f-0410-8da2-ba01fb791d7f --- .../paradiseo-moeo/src/archive/moeoArchive.h | 23 ++- .../src/archive/moeoBoundedArchive.h | 99 +--------- .../src/archive/moeoFitDivBoundedArchive.h | 175 ++++++++++++++++++ .../src/archive/moeoFixedSizeArchive.h | 4 +- .../src/archive/moeoImprOnlyBoundedArchive.h | 168 +++++++++++++++++ .../src/archive/moeoSPEA2Archive.h | 10 +- .../src/archive/moeoUnboundedArchive.h | 4 +- 7 files changed, 376 insertions(+), 107 deletions(-) create mode 100644 trunk/paradiseo-moeo/src/archive/moeoFitDivBoundedArchive.h create mode 100644 trunk/paradiseo-moeo/src/archive/moeoImprOnlyBoundedArchive.h diff --git a/trunk/paradiseo-moeo/src/archive/moeoArchive.h b/trunk/paradiseo-moeo/src/archive/moeoArchive.h index 0f8c8b84b..2893ac1b6 100644 --- a/trunk/paradiseo-moeo/src/archive/moeoArchive.h +++ b/trunk/paradiseo-moeo/src/archive/moeoArchive.h @@ -42,6 +42,7 @@ #include #include + /** * Abstract class for representing an archive ; * an archive is a secondary population that stores non-dominated solutions. @@ -67,7 +68,7 @@ public: * Default ctor. * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance */ - moeoArchive() : eoPop < MOEOT >(), comparator(paretoComparator) + moeoArchive(bool _replace=true) : eoPop < MOEOT >(), comparator(paretoComparator), replace(_replace) {} @@ -75,7 +76,7 @@ public: * Ctor * @param _comparator the moeoObjectiveVectorComparator used to compare solutions */ - moeoArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator) + moeoArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, bool _replace=true) : eoPop < MOEOT >(), comparator(_comparator), replace(_replace) {} @@ -171,7 +172,7 @@ protected: operator[](j) = back(); pop_back(); } - else if (_moeo.objectiveVector() == operator[](j).objectiveVector()) + else if (replace && (_moeo.objectiveVector() == operator[](j).objectiveVector())) { operator[](j) = back(); pop_back(); @@ -191,6 +192,11 @@ protected: dom = true; break; } + else if (!replace && (_moeo.objectiveVector() == operator[](j).objectiveVector()) ) + { + dom = true; + break; + } } if (!dom) { @@ -206,24 +212,25 @@ protected: */ bool update(const eoPop < MOEOT > & _pop) { - bool tmp = false; bool res = false; + bool tmp = false; for (unsigned int i=0; i<_pop.size(); i++) { - tmp = (*this).update(_pop[i]); + tmp = (*this).update(_pop[i]); res = tmp || res; } return res; } - - + private: - /** The moeoObjectiveVectorComparator used to compare solutions */ moeoObjectiveVectorComparator < ObjectiveVector > & comparator; /** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */ moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; +protected: + /** boolean */ + bool replace; }; #endif /*MOEOARCHIVE_H_ */ diff --git a/trunk/paradiseo-moeo/src/archive/moeoBoundedArchive.h b/trunk/paradiseo-moeo/src/archive/moeoBoundedArchive.h index f442464c0..5889722d9 100644 --- a/trunk/paradiseo-moeo/src/archive/moeoBoundedArchive.h +++ b/trunk/paradiseo-moeo/src/archive/moeoBoundedArchive.h @@ -41,12 +41,7 @@ #ifndef MOEOBOUNDEDARCHIVE_H_ #define MOEOBOUNDEDARCHIVE_H_ -#include -#include -#include -#include -#include -#include +#include /** * This class represents a bounded archive which different parameters to specify. @@ -55,17 +50,6 @@ template < class MOEOT > class moeoBoundedArchive : public moeoArchive < MOEOT > { public: - - using moeoArchive < MOEOT > :: size; - using moeoArchive < MOEOT > :: resize; - using moeoArchive < MOEOT > :: operator[]; - using moeoArchive < MOEOT > :: back; - using moeoArchive < MOEOT > :: pop_back; - using moeoArchive < MOEOT > :: push_back; - using moeoArchive < MOEOT > :: begin; - using moeoArchive < MOEOT > :: end; - - /** * The type of an objective vector for a solution */ @@ -73,47 +57,25 @@ public: /** - * Ctor where you can choose your own moeoComparator, moeoObjectiveVectorComparator, moeoFitnessAssignment, moeoDiversityAssignment and archive size. - * @param _indiComparator the functor used to compare MOEOT + * Ctor where you can choose your own moeoObjectiveVectorComparator and archive size. * @param _comparator the functor used to compare objective vectors - * @param _fitness the assignment fitness method - * @param _diversity the diversity assignment method * @param _maxSize the size of archive (must be smaller or egal to the population size) */ - moeoBoundedArchive(moeoComparator < MOEOT > & _indiComparator, moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, moeoFitnessAssignment < MOEOT > & _fitness, moeoDiversityAssignment < MOEOT > & _diversity, unsigned int _maxSize=100) : moeoArchive < MOEOT >(_comparator), maxSize(_maxSize), indiComparator(_indiComparator), fitness(_fitness), diversity(_diversity) - {} + moeoBoundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100, bool _replace=true) : moeoArchive < MOEOT >(_comparator, _replace), maxSize(_maxSize){} /** - * Ctor with moeoParetoObjectiveVectorComparator where you can choose your own moeoComparator, moeoFitnessAssignment, moeoDiversityAssignment and archive size. - * @param _indiComparator the functor used to compare MOEOT - * @param _fitness the assignment fitness method - * @param _diversity the diversity assignment method + * Ctor with moeoParetoObjectiveVectorComparator where you can choose your own archive size. * @param _maxSize the size of archive (must be smaller or egal to the population size) */ - moeoBoundedArchive(moeoComparator < MOEOT > & _indiComparator, moeoFitnessAssignment < MOEOT > & _fitness, moeoDiversityAssignment < MOEOT > & _diversity, unsigned int _maxSize=100) : moeoArchive < MOEOT >(), maxSize(_maxSize), indiComparator(_indiComparator), fitness(_fitness), diversity(_diversity) - {} - - - + moeoBoundedArchive(unsigned int _maxSize=100, bool _replace=true) : moeoArchive < MOEOT >(_replace), maxSize(_maxSize){} + /** * Updates the archive with a given individual _moeo * @param _moeo the given individual * @return true if _moeo is non-dominated (and not if it is added to the archive) */ - bool operator()(const MOEOT & _moeo) - { - bool res; - res = update(_moeo); - - if(size() > maxSize){ - fitness(*this); - diversity(*this); - std::sort(begin(), end(), indiComparator); - resize(maxSize); - } - return res; - } + //virtual bool operator()(const MOEOT & _moeo) = 0; /** @@ -121,55 +83,12 @@ public: * @param _pop the given population * @return true if a _pop[i] is non-dominated (and not if it is added to the archive) */ - bool operator()(const eoPop < MOEOT > & _pop) - { - bool res; - res = update(_pop); + //virtual bool operator()(const eoPop < MOEOT > & _pop) = 0; - if(size() > maxSize){ - fitness(*this); - diversity(*this); - std::sort(begin(), end(), indiComparator); - resize(maxSize); - } - return res; - } - -private: +protected: /** archive max size */ unsigned int maxSize; - /** - * Wrapper which allow to used an moeoComparator in std::sort - * @param _comp the comparator to used - */ - class Wrapper - { - public: - /** - * Ctor. - * @param _comp the comparator - */ - Wrapper(moeoComparator < MOEOT > & _comp) : comp(_comp) {} - /** - * Returns true if _moeo1 is greater than _moeo2 according to the comparator - * _moeo1 the first individual - * _moeo2 the first individual - */ - bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) - { - return comp(_moeo1,_moeo2); - } - private: - /** the comparator */ - moeoComparator < MOEOT > & comp; - } - indiComparator; - - /** fitness assignment */ - moeoFitnessAssignment < MOEOT > & fitness; - /** diversity assignment */ - moeoDiversityAssignment < MOEOT > & diversity; }; diff --git a/trunk/paradiseo-moeo/src/archive/moeoFitDivBoundedArchive.h b/trunk/paradiseo-moeo/src/archive/moeoFitDivBoundedArchive.h new file mode 100644 index 000000000..c92ea93b4 --- /dev/null +++ b/trunk/paradiseo-moeo/src/archive/moeoFitDivBoundedArchive.h @@ -0,0 +1,175 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Lille-Nord Europe, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Arnaud Liefooghe +* Jeremie Humeau +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// moeoFitDivBoundedArchive.h +//----------------------------------------------------------------------------- + +#ifndef MOEOFITDIVBOUNDEDARCHIVE_H_ +#define MOEOFITDIVBOUNDEDARCHIVE_H_ + +#include +#include +#include +#include +#include +#include + +/** + * This class represents a bounded archive which different parameters to specify. + */ +template < class MOEOT > +class moeoFitDivBoundedArchive : public moeoBoundedArchive < MOEOT > +{ +public: + + using moeoArchive < MOEOT > :: size; + using moeoArchive < MOEOT > :: resize; + using moeoArchive < MOEOT > :: operator[]; + using moeoArchive < MOEOT > :: back; + using moeoArchive < MOEOT > :: pop_back; + using moeoArchive < MOEOT > :: push_back; + using moeoArchive < MOEOT > :: begin; + using moeoArchive < MOEOT > :: end; + using moeoArchive < MOEOT > :: replace; + using moeoBoundedArchive < MOEOT > :: maxSize; + + + /** + * The type of an objective vector for a solution + */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor where you can choose your own moeoComparator, moeoObjectiveVectorComparator, moeoFitnessAssignment, moeoDiversityAssignment and archive size. + * @param _indiComparator the functor used to compare MOEOT + * @param _comparator the functor used to compare objective vectors + * @param _fitness the assignment fitness method + * @param _diversity the diversity assignment method + * @param _maxSize the size of archive (must be smaller or egal to the population size) + */ + moeoFitDivBoundedArchive(moeoComparator < MOEOT > & _indiComparator, moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, moeoFitnessAssignment < MOEOT > & _fitness, moeoDiversityAssignment < MOEOT > & _diversity, unsigned int _maxSize=100, bool _replace=true) : moeoBoundedArchive < MOEOT >(_comparator, _maxSize, _replace), indiComparator(_indiComparator), fitness(_fitness), diversity(_diversity) + {} + + /** + * Ctor with moeoParetoObjectiveVectorComparator where you can choose your own moeoComparator, moeoFitnessAssignment, moeoDiversityAssignment and archive size. + * @param _indiComparator the functor used to compare MOEOT + * @param _fitness the assignment fitness method + * @param _diversity the diversity assignment method + * @param _maxSize the size of archive (must be smaller or egal to the population size) + */ + moeoFitDivBoundedArchive(moeoComparator < MOEOT > & _indiComparator, moeoFitnessAssignment < MOEOT > & _fitness, moeoDiversityAssignment < MOEOT > & _diversity, unsigned int _maxSize=100, bool _replace=true) : moeoBoundedArchive < MOEOT >(_maxSize, _replace), indiComparator(_indiComparator), fitness(_fitness), diversity(_diversity) + {} + + + + + /** + * Updates the archive with a given individual _moeo + * @param _moeo the given individual + * @return true if _moeo is non-dominated (and not if it is added to the archive) + */ + bool operator()(const MOEOT & _moeo) + { + bool res; + res = update(_moeo); + + if(size() > maxSize){ + fitness(*this); + diversity(*this); + std::sort(begin(), end(), indiComparator); + resize(maxSize); + } + return res; + } + + + /** + * Updates the archive with a given population _pop + * @param _pop the given population + * @return true if a _pop[i] is non-dominated (and not if it is added to the archive) + */ + bool operator()(const eoPop < MOEOT > & _pop) + { + bool res; + res = update(_pop); + + if(size() > maxSize){ + fitness(*this); + diversity(*this); + std::sort(begin(), end(), indiComparator); + resize(maxSize); + } + return res; + } + +private: + /** + * Wrapper which allow to used an moeoComparator in std::sort + * @param _comp the comparator to used + */ + class Wrapper + { + public: + /** + * Ctor. + * @param _comp the comparator + */ + Wrapper(moeoComparator < MOEOT > & _comp) : comp(_comp) {} + /** + * Returns true if _moeo1 is greater than _moeo2 according to the comparator + * _moeo1 the first individual + * _moeo2 the first individual + */ + bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return comp(_moeo1,_moeo2); + } + private: + /** the comparator */ + moeoComparator < MOEOT > & comp; + } + indiComparator; + + /** fitness assignment */ + moeoFitnessAssignment < MOEOT > & fitness; + /** diversity assignment */ + moeoDiversityAssignment < MOEOT > & diversity; + +}; + +#endif /*MOEOFITDIVBOUNDEDARCHIVE_H_*/ diff --git a/trunk/paradiseo-moeo/src/archive/moeoFixedSizeArchive.h b/trunk/paradiseo-moeo/src/archive/moeoFixedSizeArchive.h index cef1493ae..5a248b875 100644 --- a/trunk/paradiseo-moeo/src/archive/moeoFixedSizeArchive.h +++ b/trunk/paradiseo-moeo/src/archive/moeoFixedSizeArchive.h @@ -64,14 +64,14 @@ public: * Default ctor. * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance */ - moeoFixedSizeArchive() : moeoArchive < MOEOT >() {} + moeoFixedSizeArchive(bool _replace=true) : moeoArchive < MOEOT >(_replace) {} /** * Ctor * @param _comparator the moeoObjectiveVectorComparator used to compare solutions */ - moeoFixedSizeArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : moeoArchive < MOEOT >( _comparator) {} + moeoFixedSizeArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, bool _replace=true) : moeoArchive < MOEOT >( _comparator, _replace) {} }; diff --git a/trunk/paradiseo-moeo/src/archive/moeoImprOnlyBoundedArchive.h b/trunk/paradiseo-moeo/src/archive/moeoImprOnlyBoundedArchive.h new file mode 100644 index 000000000..4cb6f4bcc --- /dev/null +++ b/trunk/paradiseo-moeo/src/archive/moeoImprOnlyBoundedArchive.h @@ -0,0 +1,168 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Lille-Nord Europe, 2006-2008 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Arnaud Liefooghe +* Jeremie Humeau +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// moeoIMPRONLYBOUNDEDARCHIVE.h +//----------------------------------------------------------------------------- + +#ifndef MOEOImprOnlyBoundedArchive_H_ +#define MOEOImprOnlyBoundedArchive_H_ + +#include +#include +/** + * This class represents a bounded archive which different parameters to specify. + */ +template < class MOEOT > +class moeoImprOnlyBoundedArchive : public moeoBoundedArchive < MOEOT > +{ +public: + + using moeoArchive < MOEOT > :: size; + using moeoArchive < MOEOT > :: resize; + using moeoArchive < MOEOT > :: operator[]; + using moeoArchive < MOEOT > :: back; + using moeoArchive < MOEOT > :: pop_back; + using moeoArchive < MOEOT > :: push_back; + using moeoArchive < MOEOT > :: begin; + using moeoArchive < MOEOT > :: end; + using moeoArchive < MOEOT > :: replace; + using moeoBoundedArchive < MOEOT > :: maxSize; + + + /** + * The type of an objective vector for a solution + */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor where you can choose your own moeoComparator and archive size. + * @param _comparator the functor used to compare objective vectors + * @param _maxSize the size of archive (must be smaller or egal to the population size) + */ + moeoImprOnlyBoundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100, bool _replace=true) : moeoBoundedArchive < MOEOT >(_comparator, _maxSize, _replace){} + + /** + * Ctor with moeoParetoObjectiveVectorComparator where you can choose your own archive size. + * @param _maxSize the size of archive (must be smaller or egal to the population size) + */ + moeoImprOnlyBoundedArchive(unsigned int _maxSize=100, bool _replace=true) : moeoBoundedArchive < MOEOT >(_maxSize, _replace){} + + /** + * Updates the archive with a given individual _moeo + * @param _moeo the given individual + * @return true if _moeo is non-dominated (and not if it is added to the archive) + */ + bool operator()(const MOEOT & _moeo) + { + return update(_moeo); + } + + + /** + * Updates the archive with a given population _pop + * @param _pop the given population + * @return true if a _pop[i] is non-dominated (and not if it is added to the archive) + */ + bool operator()(const eoPop < MOEOT > & _pop) + { + bool res = false; + bool tmp = false; + for (unsigned int i=0; i<_pop.size(); i++) + { + tmp = (*this).update(_pop[i]); + res = tmp || res; + } + return res; + } + + +private: + /** + * Updates the archive with a given individual _moeo *** NEW *** + * @param _moeo the given individual + */ + bool update(const MOEOT & _moeo) + { + // first step: removing the dominated solutions from the archive + for (unsigned int j=0; j(), maxSize(_maxSize), borne(0), indiComparator(defaultComparator), distance(defaultDistance) + moeoSPEA2Archive(unsigned int _maxSize=100): moeoFixedSizeArchive < MOEOT >(true), maxSize(_maxSize), borne(0), indiComparator(defaultComparator), distance(defaultDistance) {} @@ -90,7 +90,7 @@ public: * @param _dist the distance used * @param _maxSize the size of archive (must be smaller or egal to the population size) */ - moeoSPEA2Archive(moeoDistance & _dist, unsigned int _maxSize=100): moeoFixedSizeArchive < MOEOT >(), maxSize(_maxSize), borne(0), indiComparator(defaultComparator), distance(_dist) + moeoSPEA2Archive(moeoDistance & _dist, unsigned int _maxSize=100): moeoFixedSizeArchive < MOEOT >(true), maxSize(_maxSize), borne(0), indiComparator(defaultComparator), distance(_dist) {} @@ -99,7 +99,7 @@ public: * @param _comparator the functor used to compare objective vectors * @param _maxSize the size of archive (must be smaller or egal to the population size) */ - moeoSPEA2Archive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100): moeoFixedSizeArchive < MOEOT >(_comparator), maxSize(_maxSize), borne(0), indiComparator(defaultComparator), distance(defaultDistance) + moeoSPEA2Archive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100): moeoFixedSizeArchive < MOEOT >(_comparator, true), maxSize(_maxSize), borne(0), indiComparator(defaultComparator), distance(defaultDistance) {} @@ -108,7 +108,7 @@ public: * @param _indiComparator the functor used to compare MOEOT * @param _maxSize the size of archive (must be smaller or egal to the population size) */ - moeoSPEA2Archive(moeoComparator & _indiComparator, unsigned int _maxSize=100): moeoFixedSizeArchive < MOEOT >(), maxSize(_maxSize), borne(0), indiComparator(_indiComparator), distance(defaultDistance) + moeoSPEA2Archive(moeoComparator & _indiComparator, unsigned int _maxSize=100): moeoFixedSizeArchive < MOEOT >(true), maxSize(_maxSize), borne(0), indiComparator(_indiComparator), distance(defaultDistance) {} @@ -119,7 +119,7 @@ public: * @param _comparator the functor used to compare objective vectors * @param _maxSize the size of archive (must be smaller or egal to the population size) */ - moeoSPEA2Archive(moeoComparator & _indiComparator, moeoDistance & _dist, moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100) : moeoFixedSizeArchive < MOEOT >(_comparator), maxSize(_maxSize), borne(0), indiComparator(_indiComparator), distance(_dist) + moeoSPEA2Archive(moeoComparator & _indiComparator, moeoDistance & _dist, moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100) : moeoFixedSizeArchive < MOEOT >(_comparator, true), maxSize(_maxSize), borne(0), indiComparator(_indiComparator), distance(_dist) {} diff --git a/trunk/paradiseo-moeo/src/archive/moeoUnboundedArchive.h b/trunk/paradiseo-moeo/src/archive/moeoUnboundedArchive.h index 6fc9998f2..70a3cd997 100644 --- a/trunk/paradiseo-moeo/src/archive/moeoUnboundedArchive.h +++ b/trunk/paradiseo-moeo/src/archive/moeoUnboundedArchive.h @@ -62,14 +62,14 @@ public: * Default ctor. * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance */ - moeoUnboundedArchive() : moeoArchive < MOEOT >() {} + moeoUnboundedArchive(bool _replace=true) : moeoArchive < MOEOT >(_replace) {} /** * Ctor * @param _comparator the moeoObjectiveVectorComparator used to compare solutions */ - moeoUnboundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : moeoArchive < MOEOT >(_comparator) {} + moeoUnboundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, bool _replace=true) : moeoArchive < MOEOT >(_comparator, _replace) {} /**