From ef8d881c7c28b9c76ba26c817334e2326475aa7c Mon Sep 17 00:00:00 2001 From: jhumeau Date: Thu, 26 Mar 2009 10:09:23 +0000 Subject: [PATCH] git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1571 331e1502-861f-0410-8da2-ba01fb791d7f --- contribution/branches/MOLS/src2/dmls.h | 16 ++ .../MOLS/src2/eoAmeliorationContinue.h | 28 +-- .../branches/MOLS/src2/moeoDMLSArchive.h | 189 ++++++++++++++++++ .../branches/MOLS/src2/moeoNewArchive.h | 128 +----------- .../MOLS/src2/moeoNewBoundedArchive.h | 107 +--------- .../MOLS/src2/moeoPopNeighborhoodExplorer.h | 2 +- 6 files changed, 224 insertions(+), 246 deletions(-) create mode 100644 contribution/branches/MOLS/src2/dmls.h create mode 100644 contribution/branches/MOLS/src2/moeoDMLSArchive.h diff --git a/contribution/branches/MOLS/src2/dmls.h b/contribution/branches/MOLS/src2/dmls.h new file mode 100644 index 000000000..f7668fa6d --- /dev/null +++ b/contribution/branches/MOLS/src2/dmls.h @@ -0,0 +1,16 @@ +#include "eoAmeliorationContinue.h" +#include "eoTenTimeContinue.h" +#include "moeoExhaustiveNeighborhoodExplorer.h" +#include "moeoExhaustiveUnvisitedSelect.h" +#include "moeoFirstImprovingNeighborhoodExplorer.h" +#include "moeoNewArchive.h" +#include "moeoNewBoundedArchive.h" +#include "moeoDMLSArchive.h" +#include "moeoNoDesimprovingNeighborhoodExplorer.h" +#include "moeoNumberUnvisitedSelect.h" +#include "moeoPopLS.h" +#include "moeoPopNeighborhoodExplorer.h" +#include "moeoRestartLS.h" +#include "moeoSimpleSubNeighborhoodExplorer.h" +#include "moeoUnifiedDominanceBasedLS.h" +#include "moeoUnvisitedSelect.h" diff --git a/contribution/branches/MOLS/src2/eoAmeliorationContinue.h b/contribution/branches/MOLS/src2/eoAmeliorationContinue.h index cafe316bb..b232632c0 100644 --- a/contribution/branches/MOLS/src2/eoAmeliorationContinue.h +++ b/contribution/branches/MOLS/src2/eoAmeliorationContinue.h @@ -5,48 +5,36 @@ #include #include #include +#include +#include template< class EOT> class eoAmeliorationContinue: public eoContinue { public: - eoAmeliorationContinue(unsigned int _maxGen) : maxGen(_maxGen), counter(0){} - + eoAmeliorationContinue(moeoDMLSArchive & _arch, unsigned int _maxGen) : arch(_arch), maxGen(_maxGen), counter(0){} // _pop must be an archive virtual bool operator() (const eoPop & _pop) { - if(_pop.modified()) + std::cout << counter << std::endl; + if(arch.modified()) counter=0; else counter++; return (counter < maxGen); } - - + virtual std::string className(void) const { return "eoAmeliorationContinue"; } - - void readFrom (std :: istream & __is) - { - - __is >> start; - } - - - void printOn (std :: ostream & __os) const - { - - __os << start << ' ' << std :: endl; - } - private: - unsigned int maxGeneration; + moeoDMLSArchive & arch; + unsigned int maxGen; unsigned int counter; }; diff --git a/contribution/branches/MOLS/src2/moeoDMLSArchive.h b/contribution/branches/MOLS/src2/moeoDMLSArchive.h new file mode 100644 index 000000000..2f9c329f4 --- /dev/null +++ b/contribution/branches/MOLS/src2/moeoDMLSArchive.h @@ -0,0 +1,189 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* 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 +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODMLSARCHIVE_H_ +#define MOEODMLSARCHIVE_H_ + +#include +#include +#include + +template < class MOEOT > +class moeoDMLSArchive : public moeoArchive < MOEOT > +{ +public: + + using moeoArchive < MOEOT > :: size; + using moeoArchive < MOEOT > :: operator[]; + using moeoArchive < MOEOT > :: back; + using moeoArchive < MOEOT > :: pop_back; + + + /** + * The type of an objective vector for a solution + */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctor. + * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance + */ + moeoDMLSArchive() : moeoArchive < MOEOT >(), comparator(paretoComparator), isModified(false) + {} + + + /** + * Ctor + * @param _comparator the moeoObjectiveVectorComparator used to compare solutions + */ + moeoDMLSArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator), isModified(false) + {} + + + /** + * Returns true if the current archive dominates _objectiveVector according to the moeoObjectiveVectorComparator given in the constructor + * @param _objectiveVector the objective vector to compare with the current archive + */ + bool dominates (const ObjectiveVector & _objectiveVector) const + { + for (unsigned int i = 0; i & _pop) + { + bool res = false; + for (unsigned int i=0; i<_pop.size(); i++) + { + res = (*this).update(_pop[i]) || res; + } + return res; + } + + + /** + * Returns true if the current archive contains the same objective vectors than the given archive _arch + * @param _arch the given archive + */ + bool equals (const moeoArchive < MOEOT > & _arch) + { + for (unsigned int i=0; i & comparator; + /** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Updates the archive with a given individual _moeo *** NEW *** + * @param _moeo the given individual + */ + virtual bool update(const MOEOT & _moeo) = 0; + +}; + +#endif /*MOEODMLSARCHIVE_H_ */ diff --git a/contribution/branches/MOLS/src2/moeoNewArchive.h b/contribution/branches/MOLS/src2/moeoNewArchive.h index ee5008784..f92262a69 100755 --- a/contribution/branches/MOLS/src2/moeoNewArchive.h +++ b/contribution/branches/MOLS/src2/moeoNewArchive.h @@ -40,10 +40,10 @@ #include #include -#include +#include template < class MOEOT > -class moeoNewArchive : public moeoArchive < MOEOT > +class moeoNewArchive : public moeoDMLSArchive < MOEOT > { public: @@ -51,131 +51,10 @@ public: using moeoArchive < MOEOT > :: operator[]; using moeoArchive < MOEOT > :: back; using moeoArchive < MOEOT > :: pop_back; - - - /** - * The type of an objective vector for a solution - */ - typedef typename MOEOT::ObjectiveVector ObjectiveVector; - - - /** - * Default ctor. - * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance - */ - moeoNewArchive() : moeoArchive < MOEOT >(), comparator(paretoComparator), isModified(false) - {} - - - /** - * Ctor - * @param _comparator the moeoObjectiveVectorComparator used to compare solutions - */ - moeoNewArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator), isModified(false) - {} - - - /** - * Returns true if the current archive dominates _objectiveVector according to the moeoObjectiveVectorComparator given in the constructor - * @param _objectiveVector the objective vector to compare with the current archive - */ - bool dominates (const ObjectiveVector & _objectiveVector) const - { - for (unsigned int i = 0; i & _pop) - { - bool res = false; - for (unsigned int i=0; i<_pop.size(); i++) - { - res = (*this).update(_pop[i]) || res; - } - return res; - } - - - /** - * Returns true if the current archive contains the same objective vectors than the given archive _arch - * @param _arch the given archive - */ - bool equals (const moeoArchive < MOEOT > & _arch) - { - for (unsigned int i=0; i :: isModified; private: - /** The moeoObjectiveVectorComparator used to compare solutions */ - moeoObjectiveVectorComparator < ObjectiveVector > & comparator; - /** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; - /** bool*/ - bool isModified; - /** * Updates the archive with a given individual _moeo *** NEW *** * @param _moeo the given individual @@ -225,6 +104,7 @@ private: { push_back(_moeo); isModified=true; + std::cout << "modified"; } return !dom; } diff --git a/contribution/branches/MOLS/src2/moeoNewBoundedArchive.h b/contribution/branches/MOLS/src2/moeoNewBoundedArchive.h index 0f58561ce..dd6936bb4 100644 --- a/contribution/branches/MOLS/src2/moeoNewBoundedArchive.h +++ b/contribution/branches/MOLS/src2/moeoNewBoundedArchive.h @@ -1,5 +1,5 @@ /* -* +* * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 * (C) OPAC Team, LIFL, 2002-2007 * @@ -41,9 +41,10 @@ #include #include #include +#include template < class MOEOT > -class moeoNewBoundedArchive : public moeoArchive < MOEOT > +class moeoNewBoundedArchive : public moeoDMLSArchive < MOEOT > { public: @@ -51,6 +52,7 @@ public: using moeoArchive < MOEOT > :: operator[]; using moeoArchive < MOEOT > :: back; using moeoArchive < MOEOT > :: pop_back; + using moeoDMLSArchive < MOEOT > :: isModified; /** @@ -63,7 +65,7 @@ public: * Default ctor. * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance */ - moeoNewBoundedArchive(unsigned int _maxSize=100) : moeoArchive < MOEOT >(), comparator(paretoComparator), maxSize(_maxSize), isModified(false) + moeoNewBoundedArchive(unsigned int _maxSize=100) : moeoDMLSArchive < MOEOT >(), maxSize(_maxSize) {} @@ -71,112 +73,15 @@ public: * Ctor * @param _comparator the moeoObjectiveVectorComparator used to compare solutions */ - moeoNewBoundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100) : eoPop < MOEOT >(), comparator(_comparator), maxSize(_maxSize), isModified(false) + moeoNewBoundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100) : moeoDMLSArchive < MOEOT >(_comparator), maxSize(_maxSize) {} - /** - * Returns true if the current archive dominates _objectiveVector according to the moeoObjectiveVectorComparator given in the constructor - * @param _objectiveVector the objective vector to compare with the current archive - */ - bool dominates (const ObjectiveVector & _objectiveVector) const - { - for (unsigned int i = 0; i & _pop) - { - bool res = false; - for (unsigned int i=0; i<_pop.size(); i++) - { - res = (*this).update(_pop[i]) || res; - } - return res; - } - - - /** - * Returns true if the current archive contains the same objective vectors than the given archive _arch - * @param _arch the given archive - */ - bool equals (const moeoArchive < MOEOT > & _arch) - { - for (unsigned int i=0; i & comparator; - /** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */ - moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; /** Max size of archive*/ unsigned int maxSize; - /** bool */ - bool isModified; /** * Updates the archive with a given individual _moeo *** NEW *** diff --git a/contribution/branches/MOLS/src2/moeoPopNeighborhoodExplorer.h b/contribution/branches/MOLS/src2/moeoPopNeighborhoodExplorer.h index 94de08ab3..5acae9e19 100755 --- a/contribution/branches/MOLS/src2/moeoPopNeighborhoodExplorer.h +++ b/contribution/branches/MOLS/src2/moeoPopNeighborhoodExplorer.h @@ -45,7 +45,7 @@ * Abstract class for multi-objective local search neighborhood exploration */ template < class Move > -class moeoPopNeighborhoodExplorer{ +class moeoPopNeighborhoodExplorer: public eoFunctorBase{ public: /**