diff --git a/trunk/paradiseo-mo/src/index.h b/trunk/paradiseo-mo/src/index.h
index 4dfce5992..c18fd6b98 100644
--- a/trunk/paradiseo-mo/src/index.h
+++ b/trunk/paradiseo-mo/src/index.h
@@ -1,60 +1,62 @@
/** @mainpage Welcome to PARADISEO-Moving Objects
-@section Introduction
+ @section Introduction
-MO is an extension of the ANSI-C++ compliant evolutionary computation library EO.
-
-It contains classes for almost any kind of one solution based heuristics.
+ MO is an extension of the ANSI-C++ compliant evolutionary computation library EO.
+
+ It contains classes for almost any kind of one solution based heuristics.
-@section authors AUTHORS
+ @section authors AUTHORS
-
+
-@section LICENSE
+ @section LICENSE
- 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".
+ 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.
+ 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.
+ 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
+ ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+ Contact: paradiseo-help@lists.gforge.inria.fr
-@section Paradiseo Home Page
+ @section Paradiseo Home Page
-http://paradiseo.gforge.inria.fr
+ http://paradiseo.gforge.inria.fr
-@section Installation
+ @section Installation
-The installation procedure of the package is detailed in the
-README file in the top-directory of the source-tree.
+ The installation procedure of the package is detailed in the
+ README file in the top-directory of the source-tree.
*/
diff --git a/trunk/paradiseo-mo/src/mo b/trunk/paradiseo-mo/src/mo
index b77209648..d0319b60a 100755
--- a/trunk/paradiseo-mo/src/mo
+++ b/trunk/paradiseo-mo/src/mo
@@ -1,38 +1,38 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __mo
#define __mo
diff --git a/trunk/paradiseo-mo/src/mo.h b/trunk/paradiseo-mo/src/mo.h
index 12c882665..69dfaf350 100755
--- a/trunk/paradiseo-mo/src/mo.h
+++ b/trunk/paradiseo-mo/src/mo.h
@@ -1,77 +1,76 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+ (C) OPAC Team, LIFL, 2002-2007
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __mo_h
-#define __mo_h
+#ifndef _mo_h
+#define _mo_h
-#include "moAlgo.h"
-#include "moAspirCrit.h"
-#include "moBestImprSelect.h"
-#include "moComparator.h"
-#include "moCoolingSchedule.h"
-#include "moExponentialCoolingSchedule.h"
-#include "moFirstImprSelect.h"
-#include "moFitComparator.h"
-#include "moFitSolContinue.h"
-#include "moGenSolContinue.h"
-#include "moHC.h"
-#include "moHCMoveLoopExpl.h"
-#include "moILS.h"
-#include "moImprBestFitAspirCrit.h"
-#include "moItRandNextMove.h"
-#include "moLinearCoolingSchedule.h"
-#include "moLSCheckPoint.h"
-#include "moMoveExpl.h"
-#include "moMove.h"
-#include "moMoveIncrEval.h"
-#include "moMoveInit.h"
-#include "moMoveLoopExpl.h"
-#include "moMoveSelect.h"
-#include "moNextMove.h"
-#include "moNoAspirCrit.h"
-#include "moNoFitImprSolContinue.h"
-#include "moRandImprSelect.h"
-#include "moRandMove.h"
-#include "moSA.h"
-#include "moSimpleMoveTabuList.h"
-#include "moSimpleSolutionTabuList.h"
-#include "moSolContinue.h"
-#include "moSteadyFitSolContinue.h"
-#include "moTabuList.h"
-#include "moTS.h"
-#include "moTSMoveLoopExpl.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
#endif
diff --git a/trunk/paradiseo-mo/src/moAlgo.h b/trunk/paradiseo-mo/src/moAlgo.h
index a2e45ab45..a5152bb7f 100755
--- a/trunk/paradiseo-mo/src/moAlgo.h
+++ b/trunk/paradiseo-mo/src/moAlgo.h
@@ -1,49 +1,49 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moAlgo_h
-#define __moAlgo_h
+#ifndef _moAlgo_h
+#define _moAlgo_h
#include
//! Description of an algorithm of the paradiseo-mo library
/*!
moHC, moTS and moSA are 3 examples of algorithm of the paradiseo-mo library.
- */
+*/
template < class EOT > class moAlgo:public eoMonOp < EOT >
- {};
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moAspirCrit.h b/trunk/paradiseo-mo/src/moAspirCrit.h
index ba757e687..efb6f74c2 100755
--- a/trunk/paradiseo-mo/src/moAspirCrit.h
+++ b/trunk/paradiseo-mo/src/moAspirCrit.h
@@ -1,41 +1,40 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moAspirCrit_h
-#define __moAspirCrit_h
+#ifndef _moAspirCrit_h
+#define _moAspirCrit_h
#include
@@ -43,20 +42,17 @@
/*!
It is only a description... An object that herits from this class is needed to be used in a moTS.
See moNoAspriCrit for example.
- */
-template < class M > class moAspirCrit:public eoBF < const M &, const typename
- M::EOType::Fitness &,
- bool >
- {
+*/
+template < class M >
+class moAspirCrit: public eoBF < const M &, const typename M::EOType::Fitness &, bool >
+{
+ public:
- public:
- //! Procedure which initialises all that needs a aspiration criterion.
- /*!
- It can be possible that this procedure do nothing...
- */
- virtual void
- init () = 0;
-
- };
+ //! Procedure which initialises all that needs an aspiration criterion.
+ /*!
+ It can be possible that this procedure does nothing...
+ */
+ virtual void init () = 0;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moBestImprSelect.h b/trunk/paradiseo-mo/src/moBestImprSelect.h
index 031344cea..6442ecc46 100755
--- a/trunk/paradiseo-mo/src/moBestImprSelect.h
+++ b/trunk/paradiseo-mo/src/moBestImprSelect.h
@@ -1,118 +1,117 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moBestImprSelect_h
-#define __moBestImprSelect_h
+#ifndef _moBestImprSelect_h
+#define _moBestImprSelect_h
-#include "moMoveSelect.h"
+#include
//! One of the possible moMoveSelect.
/*!
All neighbors are considered, and the movement
which enables the best improvement is selected.
*/
-template < class M > class moBestImprSelect:public moMoveSelect < M >
+template < class M >
+class moBestImprSelect:public moMoveSelect < M >
+{
+ public:
+
+ //! Alias for the fitness.
+ typedef typename M::EOType::Fitness Fitness;
+
+ //! Procedure which initialise the exploration
+ /*!
+ \param _fitness The current fitness.
+ */
+ void init (const Fitness & _fitness)
{
+ //Code only used to avoid warning because _fitness is not used in this procedure.
+ Fitness fitness=(Fitness)_fitness;
- public:
-
- //! Alias for the fitness.
- typedef typename M::EOType::Fitness Fitness;
-
- //! Procedure which initialise the exploration
- void init (const Fitness & __fit)
- {
-
- first_time = true;
- }
+ first_time = true;
+ }
- //!Function that indicates if the current move has not improved the fitness.
- /*!
- If the given fitness enables an improvment,
- the move (moMove) and the fitness linked to this move are saved.
+ //!Function that indicates if the current move has not improved the fitness.
+ /*!
+ If the given fitness enables an improvment,
+ the move (moMove) and the fitness linked to this move are saved.
- \param __move a move.
- \param __fit a fitness linked to the move.
- \return TRUE if the move does not improve the fitness.
- */
- bool update (const M & __move, const Fitness & __fit)
- {
+ \param _move a move.
+ \param _fitness a fitness linked to the move.
+ \return TRUE if the move does not improve the fitness.
+ */
+ bool update (const M & _move, const Fitness & _fitness)
+ {
+ if ( first_time || (_fitness > best_fitness) )
+ {
+ best_fitness = _fitness;
+ best_move = _move;
+
+ first_time = false;
+ }
- if (first_time || __fit > best_fit)
- {
+ return true;
+ }
- best_fit = __fit;
- best_move = __move;
+ //! Procedure which saved the best move and fitness.
+ /*!
+ \param _move the current move (result of the procedure).
+ \param _fitness the current fitness (result of the procedure).
+ */
+ void operator () (M & _move, Fitness & _fitness)
+ {
+ if(first_time)
+ {
+ throw std::runtime_error("[moBestImprSelect.h]: no move or/and no fitness already saved, update has to be called first.");
+ }
- first_time = false;
- }
+ _move = best_move;
+ _fitness = best_fitness;
+ }
- return true;
- }
+ private:
- //! Procedure which saved the best move and fitness.
- /*!
- \param __move the current move (result of the procedure).
- \param __fit the current fitness (result of the procedure).
- \throws EmptySelection if no move has improved the fitness.
- */
- void operator () (M & __move, Fitness & __fit) throw (EmptySelection)
- {
+ //! Allowing to know if at least one move has been generated.
+ bool first_time;
- if (!first_time)
- {
- __move = best_move;
- __fit = best_fit;
- }
- else
- throw EmptySelection ();
- }
-
- private:
-
- //! Allowing to know if at least one move has been generated.
- bool first_time;
-
- //! The best move.
- M best_move;
-
- //! The best fitness.
- Fitness best_fit;
-
- };
+ //! The best move.
+ M best_move;
+
+ //! The best fitness.
+ Fitness best_fitness;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moComparator.h b/trunk/paradiseo-mo/src/moComparator.h
index 3b2b1d17e..8c0f9ff60 100644
--- a/trunk/paradiseo-mo/src/moComparator.h
+++ b/trunk/paradiseo-mo/src/moComparator.h
@@ -1,49 +1,48 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moComparator_h
-#define __moComparator_h
+#ifndef _moComparator_h
+#define _moComparator_h
//! Template for classes which need to compare two EOT and indicate if the first is "better" than the second.
/*!
The objects that extend this template describe how an EOT is "better" than an other.
- */
+*/
template
-class moComparator: public eoBF
- {};
+class moComparator: public eoBF
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moCoolingSchedule.h b/trunk/paradiseo-mo/src/moCoolingSchedule.h
index 5f5477b6f..f2cd44164 100644
--- a/trunk/paradiseo-mo/src/moCoolingSchedule.h
+++ b/trunk/paradiseo-mo/src/moCoolingSchedule.h
@@ -1,41 +1,40 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moCoolingSchedule_h
-#define __moCoolingSchedule_h
+#ifndef _moCoolingSchedule_h
+#define _moCoolingSchedule_h
#include
@@ -44,7 +43,7 @@
It is only a description... An object that herits from this class is needed to be used in a moSA.
See moExponentialCoolingSchedule or moLinearCoolingSchedule for example.
*/
-class moCoolingSchedule:public eoUF < double &, bool >
- {};
+class moCoolingSchedule : public eoUF < double &, bool >
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moExponentialCoolingSchedule.h b/trunk/paradiseo-mo/src/moExponentialCoolingSchedule.h
index cebebf7df..038f438fe 100644
--- a/trunk/paradiseo-mo/src/moExponentialCoolingSchedule.h
+++ b/trunk/paradiseo-mo/src/moExponentialCoolingSchedule.h
@@ -1,80 +1,79 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moExponentialCoolingSchedule_h
-#define __moExponentialCoolingSchedule_h
+#ifndef _moExponentialCoolingSchedule_h
+#define _moExponentialCoolingSchedule_h
-#include "moCoolingSchedule.h"
+#include
//! One of the possible moCoolingSchedule
/*!
An other very simple cooling schedule, the temperature decrease according to a ratio while
the temperature is greater than a given threshold.
- */
+*/
class moExponentialCoolingSchedule: public moCoolingSchedule
+{
+ public:
+
+ //! Simple constructor
+ /*!
+ \param _threshold the threshold.
+ \param _ratio the ratio used to descrease the temperature.
+ */
+ moExponentialCoolingSchedule (double _threshold, double _ratio):threshold (_threshold), ratio (_ratio)
+ {}
+
+ //! Function which proceeds to the cooling.
+ /*!
+ It decreases the temperature and indicates if it is greater than the threshold.
+
+ \param _temperature the current temperature.
+ \return if the new temperature (current temperature * ratio) is greater than the threshold.
+ */
+ bool operator() (double & _temperature)
{
+ return (_temperature *= ratio) > threshold;
+ }
- public:
- //! Simple constructor
- /*!
- \param __threshold the threshold.
- \param __ratio the ratio used to descrease the temperature.
- */
- moExponentialCoolingSchedule (double __threshold, double __ratio):threshold (__threshold), ratio (__ratio)
- {}
-
- //! Function which proceeds to the cooling.
- /*!
- It decreases the temperature and indicates if it is greater than the threshold.
-
- \param __temp the current temperature.
- \return if the new temperature (current temperature * ratio) is greater than the threshold.
- */
- bool operator() (double &__temp)
- {
- return (__temp *= ratio) > threshold;
- }
-
- private:
-
- //! The temperature threhold.
- double threshold;
-
- //! The decreasing factor of the temperature.
- double ratio;
- };
+ private:
+
+ //! The temperature threhold.
+ double threshold;
+
+ //! The decreasing factor of the temperature.
+ double ratio;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moFirstImprSelect.h b/trunk/paradiseo-mo/src/moFirstImprSelect.h
index d64b053a6..94ca93c16 100755
--- a/trunk/paradiseo-mo/src/moFirstImprSelect.h
+++ b/trunk/paradiseo-mo/src/moFirstImprSelect.h
@@ -1,43 +1,42 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moFirstImprSelect_h
-#define __moFirstImprSelect_h
+#ifndef _moFirstImprSelect_h
+#define _moFirstImprSelect_h
-#include "moMoveSelect.h"
+#include
//! One possible moMoveSelect.
/*!
@@ -45,85 +44,77 @@
a move enables an improvment of the
current solution.
*/
-template < class M > class moFirstImprSelect:public moMoveSelect < M >
+template < class M >
+class moFirstImprSelect:public moMoveSelect < M >
+{
+ public:
+
+ //! Alias for the fitness.
+ typedef typename M::EOType::Fitness Fitness;
+
+ //! Procedure which initialise the exploration.
+ /*!
+ It save the current fitness as the initial value for the fitness.
+ \param _fitness The current fitness.
+ */
+ virtual void init (const Fitness & _fitness)
+ {
+ valid = false;
+ initial_fitness = _fitness;
+ }
+
+ //!Function that indicates if the current move has not improved the fitness.
+ /*!
+ If the given fitness enables an improvment,
+ the move (moMove) should be applied to the current solution.
+
+ \param _move a move.
+ \param _fitness a fitness linked to the move.
+ \return true if the move does not improve the fitness.
+ */
+ bool update (const M & _move, const Fitness & _fitness)
{
- public:
+ if (_fitness > initial_fitness)
+ {
- //! Alias for the fitness.
- typedef typename M::EOType::Fitness Fitness;
+ best_fitness = _fitness;
+ best_move = _move;
+ valid = true;
- //! Procedure which initialise the exploration.
- /*!
- It save the current fitness as the initial value for the fitness.
- */
- virtual void init (const Fitness & __fit)
- {
+ return false;
+ }
- valid = false;
- init_fit = __fit;
- }
+ return true;
+ }
+ //! Procedure which saved the best move and fitness.
+ /*!
+ \param _move the current move (result of the procedure).
+ \param _fitness the current fitness (result of the procedure).
+ */
+ void operator () (M & _move, Fitness & _fitness)
+ {
+ if (valid)
+ {
+ _move = best_move;
+ _fitness = best_fitness;
+ }
+ }
- //!Function that indicates if the current move has not improved the fitness.
- /*!
- If the given fitness enables an improvment,
- the move (moMove) should be applied to the current solution.
+ private:
+
+ //! Allow to know if at least one move has improved the solution.
+ bool valid;
- \param __move a move.
- \param __fit a fitness linked to the move.
- \return TRUE if the move does not improve the fitness.
- */
- bool update (const M & __move, const typename M::EOType::Fitness & __fit)
- {
+ //! Best stored movement.
+ M best_move;
- if (__fit > init_fit)
- {
+ //! Initial fitness.
+ Fitness initial_fitness;
- best_fit = __fit;
- best_move = __move;
- valid = true;
-
- return false;
- }
- else
- {
- return true;
- }
- }
-
- //! Procedure which saved the best move and fitness.
- /*!
- \param __move the current move (result of the procedure).
- \param __fit the current fitness (result of the procedure).
- \throws EmptySelection if no move has improved the fitness.
- */
- void operator () (M & __move, Fitness & __fit) throw (EmptySelection)
- {
-
- if (valid)
- {
- __move = best_move;
- __fit = best_fit;
- }
- else
- throw EmptySelection ();
- }
-
- private:
-
- //! Allow to know if at least one move has improved the solution.
- bool valid;
-
- //! Best stored movement.
- M best_move;
-
- //! Initial fitness.
- Fitness init_fit;
-
- //! Best stored fitness.
- Fitness best_fit;
-
- };
+ //! Best stored fitness.
+ Fitness best_fitness;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moFitComparator.h b/trunk/paradiseo-mo/src/moFitComparator.h
index 588c97a28..6dd75b5ce 100644
--- a/trunk/paradiseo-mo/src/moFitComparator.h
+++ b/trunk/paradiseo-mo/src/moFitComparator.h
@@ -1,61 +1,62 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moFitComparator_h
-#define __moFitComparator_h
+#ifndef _moFitComparator_h
+#define _moFitComparator_h
+
+#include
//! Comparison according to the fitness.
/*!
An EOT is better than an other if its fitness is better.
- */
+*/
template
class moFitComparator: public moComparator
- {
- public:
+{
+ public:
- //! Function which makes the comparison and gives the result.
- /*!
- \param _solution1 The first solution.
- \param _solution2 The second solution.
- \return true if the fitness of the first solution is better than the second solution, false else.
- */
- bool operator()(const EOT& _solution1, const EOT& _solution2)
- {
- return _solution1.fitness()>_solution2.fitness();
- }
- };
+ //! Function which makes the comparison and gives the result.
+ /*!
+ \param _solution1 The first solution.
+ \param _solution2 The second solution.
+ \return true if the fitness of the first solution is better than the second solution, false else.
+ */
+ bool operator()(const EOT & _solution1, const EOT & _solution2)
+ {
+ return _solution1.fitness() > _solution2.fitness();
+ }
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moFitSolContinue.h b/trunk/paradiseo-mo/src/moFitSolContinue.h
index b50722031..af3d375fc 100644
--- a/trunk/paradiseo-mo/src/moFitSolContinue.h
+++ b/trunk/paradiseo-mo/src/moFitSolContinue.h
@@ -1,91 +1,90 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moFitSolContinue_h
-#define __moFitSolContinue_h
+#ifndef _moFitSolContinue_h
+#define _moFitSolContinue_h
-#include "moSolContinue.h"
+#include
//! One possible stop criterion for a solution-based heuristic.
/*!
The stop criterion corresponds to a fitness threshold gained.
- */
-template < class EOT > class moFitSolContinue:public moSolContinue < EOT >
+*/
+template < class EOT >
+class moFitSolContinue:public moSolContinue < EOT >
+{
+ public:
+
+ //! Alias for the fitness.
+ typedef typename EOT::Fitness Fitness;
+
+ //! Basic constructor.
+ /*!
+ \param _fitness The fitness to reach.
+ */
+ moFitSolContinue (Fitness _fitness): fitness(_fitness)
+ {}
+
+ //! Function that activates the stopping criterion.
+ /*!
+ Indicates if the fitness threshold has not yet been reached.
+
+ \param _solution the current solution.
+ \return true or false according to the value of the fitness.
+ */
+ bool operator () (const EOT & _solution)
{
+ if ( _solution.invalid() )
+ {
+ throw std::runtime_error("[moFitSolContinue.h]: The current solution has not been evaluated.");
+ }
- public:
+ return fitness > _solution.fitness();
+ }
- //! Alias for the fitness.
- typedef typename EOT::Fitness Fitness;
+ //! Procedure which allows to initialise all the stuff needed.
+ /*!
+ It can be also used to reinitialize all the needed things.
+ */
+ void init ()
+ {}
- //! Basic constructor.
- /*!
- \param __fitness The fitness to reach.
- */
- moFitSolContinue (Fitness __fitness): fitness (__fitness)
- {}
+ private:
- //! Function that activates the stopping criterion.
- /*!
- Indicates if the fitness threshold has not yet been reached.
-
- \param __sol the current solution.
- \return true or false according to the value of the fitness.
- */
- bool operator () (const EOT & __sol)
- {
- if (__sol.invalid())
- {
- return true;
- }
-
- return __sol.fitness() < fitness;
- }
-
- //! Procedure which allows to initialise all the stuff needed.
- /*!
- It can be also used to reinitialize all the needed things.
- */
- void init ()
- {}
-
- private:
-
- //! Fitness target.
- Fitness fitness;
- };
+ //! Fitness target.
+ Fitness fitness;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moGenSolContinue.h b/trunk/paradiseo-mo/src/moGenSolContinue.h
index 09aa4c291..cacbe8071 100755
--- a/trunk/paradiseo-mo/src/moGenSolContinue.h
+++ b/trunk/paradiseo-mo/src/moGenSolContinue.h
@@ -1,92 +1,92 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moGenSolContinue_h
-#define __moGenSolContinue_h
+#ifndef _moGenSolContinue_h
+#define _moGenSolContinue_h
#include "moSolContinue.h"
//! One possible stop criterion for a solution-based heuristic.
/*!
The stop criterion corresponds to a maximum number of iteration.
- */
-template < class EOT > class moGenSolContinue:public moSolContinue < EOT >
- {
+*/
+template < class EOT >
+class moGenSolContinue:public moSolContinue < EOT >
+{
+ public:
- public:
-
- //! Simple constructor.
- /*!
- \param __maxNumGen the maximum number of generation.
- */
- moGenSolContinue (unsigned int __maxNumGen):maxNumGen (__maxNumGen), numGen (0)
+ //! Simple constructor.
+ /*!
+ \param _generationMaximumNumber The maximum number of generations.
+ */
+ moGenSolContinue (unsigned int _generationMaximumNumber): generationMaximumNumber(_generationMaximumNumber), generationNumber(0)
{}
- //! Function that activates the stop criterion.
- /*!
- Increments the counter and returns TRUE if the
- current number of iteration is lower than the given
- maximum number of iterations.
+ //! Function that activates the stop criterion.
+ /*!
+ Increments the counter and returns TRUE if the
+ current number of iteration is lower than the given
+ maximum number of iterations.
- \param __sol the current solution.
- \return TRUE or FALSE according to the current generation number.
- */
- bool operator () (const EOT & __sol)
- {
+ \param _solution The current solution.
+ \return true or false according to the current generation number.
+ */
+ bool operator () (const EOT & _solution)
+ {
+ //code only used for avoiding warning because _sol is not used in this function.
+ EOT solution=(EOT)_solution;
- return (++numGen < maxNumGen);
- }
+ return (++generationNumber < generationMaximumNumber);
+ }
- //! Procedure which allows to initialise the generation counter.
- /*!
- It can also be used to reset the iteration counter.
- */
- void init ()
- {
+ //! Procedure which allows to initialise the generation counter.
+ /*!
+ It can also be used to reset the iteration counter.
+ */
+ void init ()
+ {
+ generationNumber = 0;
+ }
- numGen = 0;
- }
+ private:
- private:
+ //! Iteration maximum number.
+ unsigned int generationMaximumNumber;
- //! Iteration maximum number.
- unsigned int maxNumGen;
-
- //! Iteration current number.
- unsigned int numGen;
- };
+ //! Iteration current number.
+ unsigned int generationNumber;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moHC.h b/trunk/paradiseo-mo/src/moHC.h
index 6e189f25b..ed77f7048 100755
--- a/trunk/paradiseo-mo/src/moHC.h
+++ b/trunk/paradiseo-mo/src/moHC.h
@@ -1,37 +1,36 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moHC_h
@@ -39,115 +38,87 @@
#include
-#include "moAlgo.h"
-#include "moMoveExpl.h"
-#include "moHCMoveLoopExpl.h"
+#include
+#include
//! Hill Climbing (HC)
/*!
Class which describes the algorithm for a hill climbing.
- */
-template < class M > class moHC:public moAlgo < typename M::EOType >
+*/
+template < class M >
+class moHC:public moAlgo < typename M::EOType >
+{
+ //! Alias for the type.
+ typedef typename M::EOType EOT;
+
+ //! Alias for the fitness.
+ typedef typename EOT::Fitness Fitness;
+
+ public:
+
+ //! Full constructor.
+ /*!
+ All the boxes are given in order the HC to use a moHCMoveLoopExpl.
+
+ \param _move_initializer a move initialiser.
+ \param _next_move_generator a neighborhood explorer.
+ \param _incremental_evaluation a (generally) efficient evaluation function.
+ \param _move_selection a move selector.
+ \param _full_evaluation a full evaluation function.
+ */
+ moHC (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator,
+ moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection, eoEvalFunc < EOT > & _full_evaluation) :
+ move_explorer ( *new moHCMoveLoopExpl < M > (_move_initializer, _next_move_generator, _incremental_evaluation, _move_selection) ),
+ full_evaluation (_full_evaluation)
+ {}
+
+ //! Light constructor.
+ /*!
+ This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl).
+
+ \param _move_explorer a complete explorer.
+ \param _full_evaluation a full evaluation function.
+ */
+ moHC (moMoveExpl < M > & _move_explorer, eoEvalFunc < EOT > & _full_evaluation):
+ move_explorer (_move_explorer), full_evaluation (_full_evaluation)
+ {}
+
+ //! Function which launches the HC
+ /*!
+ The HC has to improve a current solution.
+ As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm.
+
+ \param _solution a current solution to improve.
+ \return true.
+ */
+ bool operator ()(EOT & _solution)
{
+ EOT new_solution;
+
+ if ( _solution.invalid() )
+ {
+ full_evaluation(_solution);
+ }
+
+ new_solution=_solution;
+
+ do
+ {
+ _solution=new_solution;
+ move_explorer (_solution, new_solution);
+ }
+ while ( new_solution.fitness() > _solution.fitness() );
+
+ return true;
+ }
- //! Alias for the type.
- typedef
- typename
- M::EOType
- EOT;
+ private:
- //! Alias for the fitness.
- typedef
- typename
- EOT::Fitness
- Fitness;
+ //! Complete exploration of the neighborhood.
+ moMoveExpl < M > & move_explorer;
- public:
-
- //! Full constructor.
- /*!
- All the boxes are given in order the HC to use a moHCMoveLoopExpl.
-
- \param __move_init a move initialiser.
- \param __next_move a neighborhood explorer.
- \param __incr_eval a (generally) efficient evaluation function.
- \param __move_select a move selector.
- \param __full_eval a full evaluation function.
- */
- moHC (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select, eoEvalFunc < EOT > &__full_eval):move_expl (*new moHCMoveLoopExpl < M >
- (__move_init, __next_move, __incr_eval, __move_select)),
- full_eval (__full_eval)
- {}
-
- //! Light constructor.
- /*!
- This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl).
-
- \param __move_expl a complete explorer.
- \param __full_eval a full evaluation function.
- */
- moHC (moMoveExpl < M > &__move_expl, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl),
- full_eval
- (__full_eval)
- {}
-
- //! Function which launches the HC
- /*!
- The HC has to improve a current solution.
- As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm.
-
- \param __sol a current solution to improve.
- \return TRUE.
- */
- bool operator ()(EOT & __sol)
- {
-
- if (__sol.invalid ())
- {
- full_eval (__sol);
- }
-
- EOT new_sol;
-
- do
- {
-
- new_sol = __sol;
-
- try
- {
-
- move_expl (__sol, new_sol);
-
- }
- catch (EmptySelection & __ex)
- {
-
- break;
- }
-
- if (new_sol.fitness () > __sol.fitness ())
- {
- __sol = new_sol;
- }
- else
- {
- break;
- }
-
- }
- while (true);
-
- return true;
- }
-
- private:
-
- //! Complete exploration of the neighborhood.
- moMoveExpl < M > &move_expl;
-
- //! A full evaluation function.
- eoEvalFunc < EOT > &full_eval;
- };
+ //! A full evaluation function.
+ eoEvalFunc < EOT > & full_evaluation;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moHCMoveLoopExpl.h b/trunk/paradiseo-mo/src/moHCMoveLoopExpl.h
index 0dac7447c..44f806ecb 100755
--- a/trunk/paradiseo-mo/src/moHCMoveLoopExpl.h
+++ b/trunk/paradiseo-mo/src/moHCMoveLoopExpl.h
@@ -1,131 +1,138 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moHCMoveLoopExpl_h
#define __moHCMoveLoopExpl_h
-#include "moMoveLoopExpl.h"
-
-#include "moMoveInit.h"
-#include "moNextMove.h"
-#include "moMoveIncrEval.h"
-#include "moMoveSelect.h"
+#include
+#include
+#include
+#include
+#include
//! Iterative explorer used by a moHC.
-template < class M > class moHCMoveLoopExpl:public moMoveLoopExpl < M >
+template < class M >
+class moHCMoveLoopExpl:public moMoveLoopExpl < M >
+{
+ //! Alias for the type.
+ typedef typename M::EOType EOT;
+
+ //! Alias for the fitness.
+ typedef typename M::EOType::Fitness Fitness;
+
+ public:
+
+ //! Constructor.
+ /*!
+ All the boxes have to be specified.
+
+ \param _move_initializer The move initialiser.
+ \param _next_move_generator The neighbourhood explorer.
+ \param _incremental_evaluation (generally) Efficient evaluation function.
+ \param _move_selection The move selector.
+ */
+ moHCMoveLoopExpl (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator,
+ moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection) :
+ move_initializer (_move_initializer), next_move_generator (_next_move_generator),
+ incremental_evaluation (_incremental_evaluation), move_selection (_move_selection)
+ {}
+
+ //! Procedure which launches the explorer.
+ /*!
+ The exploration starts from an old solution and provides a new solution.
+
+ \param _old_solution The current solution.
+ \param _new_solution The new solution (result of the procedure).
+ */
+ void operator () (const EOT & _old_solution, EOT & _new_solution)
{
+ M move, best_move;
+ Fitness best_fitness;
+ bool has_next_move, selection_update_is_ok;
- //! Alias for the type.
- typedef typename M::EOType EOT;
+ if( _old_solution.invalid() )
+ {
+ throw std::runtime_error("[moHCMoveLoopExpl.h]: The current solution has not been evaluated.");
+ }
- //! Alias for the fitness.
- typedef typename M::EOType::Fitness Fitness;
+ /*
+ The two following lines are added to avoid compilation warning.
+ <=> current best move fitness is the current fitness.
+ <=> move and best move are empty for the moment.
+ */
+ best_fitness=_old_solution.fitness();
+ move=best_move;
- public:
+ //At the begining, the new sol is equivalent to the old one.
+ _new_solution=(EOT)_old_solution;
- //! Constructor.
- /*!
- All the boxes have to be specified.
+ // Restarting the exploration of the neighbourhood
+ move_initializer(move, _old_solution);
- \param __move_init the move initialiser.
- \param __next_move the neighborhood explorer.
- \param __incr_eval (generally) efficient evaluation function.
- \param __move_select the move selector.
- */
- moHCMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select):
+ move_selection.init(_old_solution.fitness ());
- move_init (__move_init),
- next_move (__next_move),
- incr_eval (__incr_eval), move_select (__move_select)
- {}
+ do
+ {
+ selection_update_is_ok = move_selection.update (move, incremental_evaluation(move, _old_solution) );
+ has_next_move = next_move_generator (move, _old_solution);
+ }
+ while ( selection_update_is_ok && has_next_move);
- //! Procedure which launches the explorer.
- /*!
- The exploration starts from an old solution and provides a new solution.
+ //The selecter gives the value of the best move and the corresponding best fitness.
+ move_selection (best_move, best_fitness);
+
+ //The best move is applied on the new solution.
+ best_move(_new_solution);
+
+ //The fitness is set (avoid an additional fitness compuation).
+ _new_solution.fitness (best_fitness);
+ }
- \param __old_sol the current solution.
- \param __new_sol the new_sol (result of the procedure).
- */
- void operator () (const EOT & __old_sol, EOT & __new_sol)
- {
+ private:
- M move;
+ //! Move initialiser.
+ moMoveInit < M > & move_initializer;
- //
- move_init (move, __old_sol); /* Restarting the exploration of
- of the neighborhood ! */
+ //! Neighborhood explorer.
+ moNextMove < M > & next_move_generator;
- move_select.init (__old_sol.fitness ());
+ //! (generally) Efficient evaluation.
+ moMoveIncrEval < M > & incremental_evaluation;
- while (move_select.update (move, incr_eval (move, __old_sol))
- && next_move (move, __old_sol));
-
- try
- {
-
- M best_move;
-
- Fitness best_move_fit;
-
- move_select (best_move, best_move_fit);
- best_move (__new_sol);
- __new_sol.fitness (best_move_fit);
-
- }
- catch (EmptySelection & __ex)
- {
-
- // ?
- }
- }
-
- private:
-
- //! Move initialiser.
- moMoveInit < M > &move_init;
-
- //! Neighborhood explorer.
- moNextMove < M > &next_move;
-
- //! (generally) Efficient evaluation.
- moMoveIncrEval < M > &incr_eval;
-
- //! Move selector.
- moMoveSelect < M > &move_select;
-
- };
+ //! Move selector.
+ moMoveSelect < M > & move_selection;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moILS.h b/trunk/paradiseo-mo/src/moILS.h
index 3eb050049..87ee02691 100644
--- a/trunk/paradiseo-mo/src/moILS.h
+++ b/trunk/paradiseo-mo/src/moILS.h
@@ -1,203 +1,205 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moILS_h
-#define __moILS_h
+#ifndef _moILS_h
+#define _moILS_h
#include
-#include "moHC.h"
-#include "moTS.h"
-#include "moSA.h"
+#include
+#include
+#include
//! Iterated Local Search (ILS)
/*!
Class which describes the algorithm for a iterated local search.
- */
-template < class M > class moILS:public moAlgo < typename M::EOType >
+*/
+template < class M >
+class moILS:public moAlgo < typename M::EOType >
+{
+ //! Alias for the type.
+ typedef typename M::EOType EOT;
+
+ //! Alias for the fitness.
+ typedef typename EOT::Fitness Fitness;
+
+ public:
+
+ //! Generic constructor
+ /*!
+ Generic constructor using a moAlgo
+
+ \param _algorithm The solution based heuristic to use.
+ \param _continue The stopping criterion.
+ \param _acceptance_criterion The acceptance criterion.
+ \param _perturbation The pertubation generator.
+ \param _full_evaluation The evaluation function.
+ */
+ moILS (moAlgo & _algorithm, moSolContinue & _continue, moComparator & _acceptance_criterion,
+ eoMonOp & _perturbation, eoEvalFunc & _full_evaluation):
+ algorithm(_algorithm), continu(_continue), acceptance_criterion(_acceptance_criterion),
+ perturbation(_perturbation), full_evaluation(_full_evaluation)
+ {}
+
+ //! Constructor for using a moHC for the moAlgo
+ /*!
+ \param _move_initializer The move initialisation (for the moHC).
+ \param _next_move_generator The move generator (for the moHC).
+ \param _incremental_evaluation The partial evaluation function (for the moHC).
+ \param _move_selection The move selection strategy (for the moHC).
+ \param _continue The stopping criterion.
+ \param _acceptance_criterion The acceptance criterion.
+ \param _perturbation The pertubation generator.
+ \param _full_evaluation The evaluation function.
+ */
+ moILS (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator,
+ moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection,
+ moSolContinue & _continue, moComparator & _acceptance_criterion,
+ eoMonOp & _perturbation, eoEvalFunc & _full_evaluation):
+ algorithm( *new moHC(_move_initializer, _next_move_generator, _incremental_evaluation, _move_selection, _full_evaluation) ),
+ continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation)
+ {}
+
+ //! Constructor for using a moTS for the moAlgo
+ /*!
+ \param _move_initializer The move initialisation (for the moTS).
+ \param _next_move_generator The move generator (for the moTS).
+ \param _incremental_evaluation The partial evaluation function (for the moTS).
+ \param _tabu_list The tabu list (for the moTS !!!!).
+ \param _aspiration_criterion The aspiration criterion (for the moTS).
+ \param _moTS_continue The stopping criterion (for the moTS).
+ \param _continue The stopping criterion.
+ \param _acceptance_criterion The acceptance criterion.
+ \param _perturbation The pertubation generator.
+ \param _full_evaluation The evaluation function.
+ */
+ moILS (moMoveInit & _move_initializer, moNextMove & _next_move_generator,
+ moMoveIncrEval & _incremental_evaluation, moTabuList & _tabu_list,
+ moAspirCrit & _aspiration_criterion, moSolContinue & _moTS_continue,
+ moSolContinue & _continue, moComparator & _acceptance_criterion, eoMonOp & _perturbation,
+ eoEvalFunc & _full_evaluation):
+ algorithm( *new moTS(_move_initializer, _next_move_generator, _incremental_evaluation, _tabu_list, _aspiration_criterion,
+ _moTS_continue, _full_evaluation) ),
+ continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation)
+ {}
+
+ //! Constructor for using a moSA for the moAlgo
+ /*!
+ \param _random_move_generator The random move generator (for the moSA).
+ \param _incremental_evaluation The partial evaluation function (for the moSA).
+ \param _moSA_continue The stopping criterion (for the moSA).
+ \param _initial_temperature The initial temperature (for the moSA).
+ \param _cooling_schedule The cooling schedule (for the moSA).
+ \param _continue The stopping criterion.
+ \param _acceptance_criterion The acceptance criterion.
+ \param _perturbation The pertubation generator.
+ \param _full_evaluation The evaluation function.
+ */
+ moILS (moRandMove & _random_move_generator, moMoveIncrEval & _incremental_evaluation, moSolContinue & _moSA_continue,
+ double _initial_temperature, moCoolingSchedule & _cooling_schedule, moSolContinue & _continue,
+ moComparator & _acceptance_criterion, eoMonOp & _perturbation, eoEvalFunc & _full_evaluation):
+ algorithm( *new moSA(_random_move_generator, _incremental_evaluation, _moSA_continue, _initial_temperature,
+ _cooling_schedule, _full_evaluation) ),
+ continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation)
+ {}
+
+ //! Function which launches the ILS
+ /*!
+ The ILS has to improve a current solution.
+ As the moSA, the moTS and the moHC, it can be used for HYBRIDATION in an evolutionnary algorithm.
+
+ \param _solution a current solution to improve.
+ \return true.
+ */
+ bool operator()(EOT & _solution)
{
+ EOT _solution_saved=_solution;
- //! Alias for the type.
- typedef typename M::EOType EOT;
+ continu.init ();
- //! Alias for the fitness.
- typedef typename EOT::Fitness Fitness;
+ // some code has been duplicated in order to avoid one perturbation and one evaluation without adding a test in the loop.
+ // better than a do {} while; with a test in the loop.
+
+ algorithm(_solution);
- public:
+ if ( acceptance_criterion(_solution, _solution_saved) )
+ {
+ _solution_saved=_solution;
- //! Generic constructor
- /*!
- Generic constructor using a moAlgo
+ }
+ else
+ {
+ _solution=_solution_saved;
+ }
- \param __algo The solution based heuristic to use.
- \param __continue The stopping criterion.
- \param __acceptance_criterion The acceptance criterion.
- \param __perturbation The pertubation generator.
- \param __full_eval The evaluation function.
- */
- moILS (moAlgo &__algo, moSolContinue &__continue, moComparator &__acceptance_criterion, eoMonOp &__perturbation,
- eoEvalFunc &__full_eval):
- algo(__algo), cont(__continue), acceptance_criterion(__acceptance_criterion), perturbation(__perturbation), full_eval(__full_eval)
- {}
+ while ( continu (_solution) )
+ {
+ perturbation(_solution);
+ full_evaluation(_solution);
- //! Constructor for using a moHC for the moAlgo
- /*!
- \param __move_init The move initialisation (for the moHC).
- \param __next_move The move generator (for the moHC).
- \param __incr_eval The partial evaluation function (for the moHC).
- \param __move_select The move selection strategy (for the moHC).
- \param __continue The stopping criterion.
- \param __acceptance_criterion The acceptance criterion.
- \param __perturbation The pertubation generator.
- \param __full_eval The evaluation function.
- */
- moILS (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval,
- moMoveSelect < M > &__move_select, moSolContinue &__continue, moComparator &__acceptance_criterion,
- eoMonOp &__perturbation, eoEvalFunc &__full_eval):
- algo(*new moHC(__move_init, __next_move, __incr_eval, __move_select, __full_eval)), cont(__continue),
- acceptance_criterion(__acceptance_criterion), perturbation(__perturbation), full_eval(__full_eval)
- {}
+ algorithm(_solution);
- //! Constructor for using a moTS for the moAlgo
- /*!
- \param __move_init The move initialisation (for the moTS).
- \param __next_move The move generator (for the moTS).
- \param __incr_eval The partial evaluation function (for the moTS).
- \param __tabu_list The tabu list (for the moTS !!!!).
- \param __aspir_crit The aspiration criterion (for the moTS).
- \param __moTS_continue The stopping criterion (for the moTS).
- \param __continue The stopping criterion.
- \param __acceptance_criterion The acceptance criterion.
- \param __perturbation The pertubation generator.
- \param __full_eval The evaluation function.
- */
- moILS (moMoveInit &__move_init, moNextMove &__next_move, moMoveIncrEval &__incr_eval,
- moTabuList &__tabu_list, moAspirCrit &__aspir_crit, moSolContinue &__moTS_continue,
- moSolContinue &__continue, moComparator &__acceptance_criterion, eoMonOp &__perturbation,
- eoEvalFunc &__full_eval):
- algo(*new moTS(__move_init, __next_move, __incr_eval, __tabu_list, __aspir_crit, __moTS_continue, __full_eval)),
- cont(__continue), acceptance_criterion(__acceptance_criterion), perturbation(__perturbation), full_eval(__full_eval)
- {}
+ if ( acceptance_criterion(_solution, _solution_saved) )
+ {
+ _solution_saved=_solution;
+ }
+ else
+ {
+ _solution=_solution_saved;
+ }
+ }
- //! Constructor for using a moSA for the moAlgo
- /*!
- \param __move_rand The random move generator (for the moSA).
- \param __incr_eval The partial evaluation function (for the moSA).
- \param __moSA_continue The stopping criterion (for the moSA).
- \param __init_temp The initial temperature (for the moSA).
- \param __cool_sched The cooling scheduler (for the moSA).
- \param __continue The stopping criterion.
- \param __acceptance_criterion The acceptance criterion.
- \param __perturbation The pertubation generator.
- \param __full_eval The evaluation function.
- */
- moILS (moRandMove &__move_rand, moMoveIncrEval &__incr_eval, moSolContinue &__moSA_continue, double __init_temp,
- moCoolingSchedule & __cool_sched, moSolContinue &__continue, moComparator &__acceptance_criterion,
- eoMonOp &__perturbation, eoEvalFunc &__full_eval):
- algo(*new moSA(__move_rand, __incr_eval, __moSA_continue, __init_temp, __cool_sched, __full_eval)),
- cont(__continue), acceptance_criterion(__acceptance_criterion), perturbation(__perturbation), full_eval(__full_eval)
- {}
+ return true;
+ }
+ private:
+ //! The solution based heuristic.
+ moAlgo & algorithm;
- //! Function which launches the ILS
- /*!
- The ILS has to improve a current solution.
- As the moSA, the moTS and the moHC, it can be used for HYBRIDATION in an evolutionnary algorithm.
+ //! The stopping criterion.
+ moSolContinue & continu;
- \param __sol a current solution to improve.
- \return TRUE.
- */
- bool operator()(EOT & __sol)
- {
- EOT __sol_saved=__sol;
+ //! The acceptance criterion.
+ moComparator & acceptance_criterion;
- cont.init ();
+ //! The perturbation generator
+ eoMonOp & perturbation;
- //some code has been duplicated in order to avoid one perturbation and one evaluation without adding a test in the loop.
- // better than a do {} while; with a test in the loop.
-
- algo(__sol);
-
- if (acceptance_criterion(__sol, __sol_saved))
- {
- __sol_saved=__sol;
-
- }
- else
- {
- __sol=__sol_saved;
- }
-
- while (cont (__sol))
- {
- perturbation(__sol);
- full_eval(__sol);
-
- algo(__sol);
-
- if (acceptance_criterion(__sol, __sol_saved))
- {
- __sol_saved=__sol;
- }
- else
- {
- __sol=__sol_saved;
- }
- }
-
- return true;
- }
-
- private:
-
- //! The solution based heuristic.
- moAlgo &algo;
-
- //! The stopping criterion.
- moSolContinue &cont;
-
- //! The acceptance criterion.
- moComparator &acceptance_criterion;
-
- //! The perturbation generator
- eoMonOp &perturbation;
-
- //! The full evaluation function
- eoEvalFunc &full_eval;
- };
+ //! The full evaluation function
+ eoEvalFunc & full_evaluation;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moImprBestFitAspirCrit.h b/trunk/paradiseo-mo/src/moImprBestFitAspirCrit.h
index 687b28bfb..562319f0f 100755
--- a/trunk/paradiseo-mo/src/moImprBestFitAspirCrit.h
+++ b/trunk/paradiseo-mo/src/moImprBestFitAspirCrit.h
@@ -1,109 +1,104 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moImprBestFitAspirCrit_h
-#define __moImprBestFitAspirCrit_h
+#ifndef _moImprBestFitAspirCrit_h
+#define _moImprBestFitAspirCrit_h
-#include "moAspirCrit.h"
+#include
//! One of the possible moAspirCrit
/*!
This criterion is satisfied when a given fitness
is the best ever considered.
*/
-template < class M > class moImprBestFitAspirCrit:public moAspirCrit < M >
+template < class M >
+class moImprBestFitAspirCrit:public moAspirCrit < M >
+{
+
+ public:
+
+ //! Alias for the fitness
+ typedef typename M::EOType::Fitness Fitness;
+
+ //! Contructor
+ moImprBestFitAspirCrit ()
+ {
+ first_time = true;
+ }
+
+ //! Initialisation procedure
+ void init ()
{
+ first_time = true;
+ }
- public:
+ //! Function that indicates if the current fitness is better that the already saved fitness
+ /*!
+ The first time, the function only saved the current move and fitness.
- //! Alias for the fitness
- typedef typename M::EOType::Fitness Fitness;
+ \param _move A move.
+ \param _fitness A fitness linked to the move.
+ \return true The first time and if _fitntess > best_fitness, else false.
+ */
+ bool operator () (const M & _move, const Fitness & _fitness)
+ {
+ if (first_time)
+ {
+ best_fitness = _fitness;
+ first_time = false;
- //! Contructor
- moImprBestFitAspirCrit ()
- {
+ return true;
+ }
- first_time = true;
- }
+ if (_fitness < best_fitness)
+ {
+ return false;
+ }
+
+ best_fitness = _fitness;
+
+ return true;
+ }
- //! Initialisation procedure
- void init ()
- {
+ private:
- first_time = true;
- }
+ //! Best fitness found until now
+ Fitness best_fitness;
- //! Function that indicates if the fit is better that the already saved fit
- /*!
- The first time, the function only saved the current move and fitness.
-
- \param __move a move.
- \param __fit a fitnes linked to the move.
- \return TRUE the first time and if __fit > best_fit, else FALSE.
- */
- bool operator () (const M & __move, const Fitness & __fit)
- {
-
- if (first_time)
- {
-
- best_fit = __fit;
- first_time = false;
-
- return true;
- }
- else if (__fit < best_fit)
- return false;
-
- else
- {
-
- best_fit = __fit;
-
- return true;
- }
- }
-
- private:
-
- //! Best fitness found until now
- Fitness best_fit;
-
- //! Indicates that a fitness has been already saved or not
- bool first_time;
- };
+ //! Indicates that a fitness has been already saved or not
+ bool first_time;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moItRandNextMove.h b/trunk/paradiseo-mo/src/moItRandNextMove.h
index cbdceb7b8..9d91af3e0 100755
--- a/trunk/paradiseo-mo/src/moItRandNextMove.h
+++ b/trunk/paradiseo-mo/src/moItRandNextMove.h
@@ -1,107 +1,102 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moItRandNextMove_h
-#define __moItRandNextMove_h
+#ifndef _moItRandNextMove_h
+#define _moItRandNextMove_h
-#include "moNextMove.h"
-#include "moRandMove.h"
+#include
+#include
//! One of the possible moNextMove.
/*!
This class is a move (moMove) generator with a bound for the maximum number of iterations.
*/
-template < class M > class moItRandNextMove:public moNextMove < M >
- {
+template < class M >
+class moItRandNextMove:public moNextMove < M >
+{
+ //! Alias for the type.
+ typedef typename M::EOType EOT;
- //! Alias for the type.
- typedef typename M::EOType EOT;
+ public:
- public:
+ //! The constructor.
+ /*!
+ Parameters only for initialising the attributes.
- //! The constructor.
- /*!
- Parameters only for initialising the attributes.
-
- \param __rand_move the random move generator.
- \param __max_iter the iteration maximum number.
- */
- moItRandNextMove (moRandMove < M > &__rand_move,
- unsigned int __max_iter):rand_move (__rand_move),
- max_iter (__max_iter), num_iter (0)
+ \param _random_move_generator The random move generator.
+ \param _iteration_maximum_number The iteration maximum number.
+ */
+ moItRandNextMove (moRandMove < M > & _random_move_generator, unsigned int _iteration_maximum_number):
+ random_move_generator(_random_move_generator), iteration_maximum_number(_iteration_maximum_number), iteration_number(0)
{}
- //! Generation of a new move
- /*!
- If the maximum number is not already reached, the current move is forgotten and remplaced by another one.
+ //! Generation of a new move
+ /*!
+ If the maximum number is not already reached, the current move is forgotten and remplaced by another one.
- \param __move the current move.
- \param __sol the current solution.
- \return FALSE if the maximum number of iteration is reached, else TRUE.
- */
- bool operator () (M & __move, const EOT & __sol)
- {
+ \param _move the current move.
+ \param _solution the current solution.
+ \return false if the maximum number of iteration is reached, else true.
+ */
+ bool operator () (M & _move, const EOT & _solution)
+ {
+ //code only used to avoid warning because _solution is not used in this function.
+ EOT solution=(EOT)_solution;
+
+ if (iteration_number++ > iteration_maximum_number)
+ {
+ iteration_number = 0;
+ return false;
+ }
+
+ random_move_generator (_move);
+ iteration_number++;
+
+ return true;
+ }
- if (num_iter++ > max_iter)
- {
+ private:
- num_iter = 0;
- return false;
- }
- else
- {
+ //! A move generator (generally randomly).
+ moRandMove < M > & random_move_generator;
- /* The given solution is discarded here */
- rand_move (__move);
- num_iter++;
- return true;
- }
- }
+ //! Iteration maximum number.
+ unsigned int iteration_maximum_number;
- private:
-
- //! A move generator (generally randomly).
- moRandMove < M > &rand_move;
-
- //! Iteration maximum number.
- unsigned int max_iter;
-
- //! Iteration current number.
- unsigned int num_iter;
-
- };
+ //! Iteration current number.
+ unsigned int iteration_number;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moLSCheckPoint.h b/trunk/paradiseo-mo/src/moLSCheckPoint.h
index 1ca0ba5e1..1b5c64943 100755
--- a/trunk/paradiseo-mo/src/moLSCheckPoint.h
+++ b/trunk/paradiseo-mo/src/moLSCheckPoint.h
@@ -1,41 +1,40 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moSolUpdater_h
-#define __moSolUpdater_h
+#ifndef _moLSCheckPoint_h
+#define _moLSCheckPoint_h
#include
@@ -43,49 +42,42 @@
/*!
Thanks to this class, at each iteration, additionnal function can be used (and not only one).
*/
-template < class M > class moLSCheckPoint:public eoBF < const M &, const typename
- M::EOType &, void >
+template < class M >
+class moLSCheckPoint:public eoBF < const M &, const typename M::EOType &, void >
+{
+ public:
+
+ //! Function which launches the checkpointing
+ /*!
+ Each saved function is used on the current move and the current solution.
+
+ \param _move a move.
+ \param _solution a solution.
+ */
+ void operator () (const M & _move, const typename M::EOType & _solution)
{
-
- public:
- //! Function which launches the checkpointing
- /*!
- Each saved function is used on the current move and the current solution.
-
- \param __move a move.
- \param __sol a solution.
- */
- void
- operator () (const M & __move, const typename M::EOType & __sol)
- {
-
- for (unsigned int i = 0; i < func.size (); i++)
- {
- func[i]->operator ()(__move, __sol);
- }
- }
-
- //! Procedure which add a new function to the function vector
- /*!
- The new function is added at the end of the vector.
- \param __f a new function to add.
- */
- void
- add (eoBF < const M &, const typename M::EOType &, void >&__f)
+ unsigned int i;
+
+ for (i = 0; i < functions.size (); i++)
{
-
- func.push_back (&__f);
+ functions[i]->operator ()(_move, _solution);
}
+ }
- private:
+ //! Procedure which add a new function to the function vector
+ /*!
+ The new function is added at the end of the vector.
+ \param _function a new function to add.
+ */
+ void add (eoBF < const M &, const typename M::EOType &, void >& _function)
+ {
+ functions.push_back(& _function);
+ }
+
+ private:
- //! vector of function
- std::vector < eoBF < const
- M &, const
- typename
- M::EOType &, void >*>
- func;
-
- };
+ //! Vector of functions.
+ std::vector < eoBF < const M &, const typename M::EOType &, void >*> functions;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moLinearCoolingSchedule.h b/trunk/paradiseo-mo/src/moLinearCoolingSchedule.h
index 120bfbe79..205593ce4 100644
--- a/trunk/paradiseo-mo/src/moLinearCoolingSchedule.h
+++ b/trunk/paradiseo-mo/src/moLinearCoolingSchedule.h
@@ -1,80 +1,79 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moLinearCoolingSchedule_h
-#define __moLinearCoolingSchedule_h
+#ifndef _moLinearCoolingSchedule_h
+#define _moLinearCoolingSchedule_h
-#include "moCoolingSchedule.h"
+#include
//! One of the possible moCoolingSchedule
/*!
An another very simple cooling schedule, the temperature decrease according to a quantity while
the temperature is greater than a threshold.
- */
+*/
class moLinearCoolingSchedule: public moCoolingSchedule
+{
+
+ public:
+ //! Simple constructor
+ /*!
+ \param _threshold the threshold.
+ \param _quantity the quantity used to descrease the temperature.
+ */
+ moLinearCoolingSchedule (double _threshold, double _quantity):threshold (_threshold), quantity (_quantity)
+ {}
+
+ //! Function which proceeds to the cooling.
+ /*!
+ It decreases the temperature and indicates if it is greater than the threshold.
+
+ \param _current_temperature The current temperature.
+ \return true if the new temperature (current temperature - quantity) is greater than the threshold, false otherwise.
+ */
+ bool operator() (double & _current_temperature)
{
+ return (_current_temperature -= quantity) > threshold;
+ }
- public:
- //! Simple constructor
- /*!
- \param __threshold the threshold.
- \param __quantity the quantity used to descrease the temperature.
- */
- moLinearCoolingSchedule (double __threshold, double __quantity):threshold (__threshold), quantity (__quantity)
- {}
+ private:
- //! Function which proceeds to the cooling.
- /*!
- It decreases the temperature and indicates if it is greater than the threshold.
+ //! The temperature threhold.
+ double threshold;
- \param __temp the current temperature.
- \return if the new temperature (current temperature - quantity) is greater than the threshold.
- */
- bool operator() (double &__temp)
- {
- return (__temp -= quantity) > threshold;
- }
-
- private:
-
- //! The temperature threhold.
- double threshold;
-
- //! The quantity that allows the temperature to decrease.
- double quantity;
- };
+ //! The quantity that allows the temperature to decrease.
+ double quantity;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moMove.h b/trunk/paradiseo-mo/src/moMove.h
index 5cbc98cac..d24832db3 100755
--- a/trunk/paradiseo-mo/src/moMove.h
+++ b/trunk/paradiseo-mo/src/moMove.h
@@ -1,41 +1,41 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moMove_h
-#define __moMove_h
+#ifndef _moMove_h
+#define _moMove_h
#include
@@ -45,13 +45,13 @@
A move transforms a solution to another close solution.
It describes how a solution can be modified to another one.
*/
-template < class EOT > class moMove:public eoUF < EOT &, void >
- {
-
- public:
- //! Alias for the type
- typedef EOT EOType;
-
- };
+template < class EOT >
+class moMove:public eoUF < EOT &, void >
+{
+ public:
+
+ //! Alias for the type
+ typedef EOT EOType;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moMoveExpl.h b/trunk/paradiseo-mo/src/moMoveExpl.h
index 961663307..6b3a4b788 100755
--- a/trunk/paradiseo-mo/src/moMoveExpl.h
+++ b/trunk/paradiseo-mo/src/moMoveExpl.h
@@ -1,52 +1,49 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moMoveExpl_h
-#define __moMoveExpl_h
+#ifndef _moMoveExpl_h
+#define _moMoveExpl_h
#include
//! Description of a move (moMove) explorer
/*!
Only a description...See moMoveLoopExpl.
- */
-template < class M > class moMoveExpl:public eoBF < const typename
- M::EOType &,
- typename
- M::EOType &, void >
- {};
+*/
+template < class M > class
+moMoveExpl : public eoBF < const typename M::EOType &, typename M::EOType &, void >
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moMoveIncrEval.h b/trunk/paradiseo-mo/src/moMoveIncrEval.h
index cfc3da65c..046aa2636 100755
--- a/trunk/paradiseo-mo/src/moMoveIncrEval.h
+++ b/trunk/paradiseo-mo/src/moMoveIncrEval.h
@@ -1,41 +1,40 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moMoveIncrEval_h
-#define __moMoveIncrEval_h
+#ifndef _moMoveIncrEval_h
+#define _moMoveIncrEval_h
#include
@@ -46,10 +45,8 @@
a new fitness that could be associated to
the solution if this one is updated.
*/
-template < class M > class moMoveIncrEval:public eoBF < const M &, const typename
- M::EOType &,
- typename
- M::EOType::Fitness >
- {};
+template < class M >
+class moMoveIncrEval:public eoBF < const M &, const typename M::EOType &, typename M::EOType::Fitness >
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moMoveInit.h b/trunk/paradiseo-mo/src/moMoveInit.h
index e5f1017c9..bd521d90a 100755
--- a/trunk/paradiseo-mo/src/moMoveInit.h
+++ b/trunk/paradiseo-mo/src/moMoveInit.h
@@ -1,41 +1,40 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moMoveInit_h
-#define __moMoveInit_h
+#ifndef _moMoveInit_h
+#define _moMoveInit_h
#include
@@ -43,9 +42,9 @@
/*!
Class which allows to initiase a move.
Only a description... An object that herits from this class needs to be designed to be used.
- */
-template < class M > class moMoveInit:public eoBF < M &, const typename
- M::EOType &, void >
- {};
+*/
+template < class M >
+class moMoveInit:public eoBF < M &, const typename M::EOType &, void >
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moMoveLoopExpl.h b/trunk/paradiseo-mo/src/moMoveLoopExpl.h
index cc60e92ff..9068f1c81 100755
--- a/trunk/paradiseo-mo/src/moMoveLoopExpl.h
+++ b/trunk/paradiseo-mo/src/moMoveLoopExpl.h
@@ -1,49 +1,50 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moMoveLoopExpl_h
-#define __moMoveLoopExpl_h
+#ifndef _moMoveLoopExpl_h
+#define _moMoveLoopExpl_h
-#include "moMoveExpl.h"
+#include
//! Class which describes an iterative explorer
/*!
Only a description... moHCMoveLoopExpl and moTSMoveLoopExpl are exemples of class that are a moMoveLoopExpl.
- */
-template < class M > class moMoveLoopExpl:public moMoveExpl < M >
- {};
+*/
+template < class M >
+class moMoveLoopExpl:public moMoveExpl < M >
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moMoveSelect.h b/trunk/paradiseo-mo/src/moMoveSelect.h
index 492654f9f..0b7b863a5 100755
--- a/trunk/paradiseo-mo/src/moMoveSelect.h
+++ b/trunk/paradiseo-mo/src/moMoveSelect.h
@@ -1,50 +1,44 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moMoveSelect_h
-#define __moMoveSelect_h
+#ifndef _moMoveSelect_h
+#define _moMoveSelect_h
#include
-
-//! Special class that describes the case of no selection.
-/*!
- This class is used as an exception that can be thrown if a solution selector has completly failed.
- */
-class EmptySelection
- {};
+#include
//! Class that describes a move selector (moMove).
/*!
@@ -52,37 +46,31 @@ class EmptySelection
associated fitnesses. The best move is so regularly updated.
At any time, it could be accessed.
*/
-template < class M > class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &,
- void >
- {
- public:
- //! Alias for the fitness
- typedef
- typename
- M::EOType::Fitness
- Fitness;
+template < class M >
+class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &, void >
+{
+ public:
+ //! Alias for the fitness
+ typedef typename M::EOType::Fitness Fitness;
+
+ //! Procedure which initialises all that the move selector needs including the initial fitness.
+ /*!
+ In order to know the fitness of the solution,
+ for which the neighborhood will
+ be soon explored
+
+ \param _fitness the current fitness.
+ */
+ virtual void init (const Fitness & _fitness) = 0;
- //! Procedure which initialises all that the move selector needs including the initial fitness.
- /*!
- In order to know the fitness of the solution,
- for which the neighborhood will
- be soon explored
+ //! Function which updates the best solutions.
+ /*!
+ \param _move a new move.
+ \param _fitness a fitness linked to the new move.
+ \return a boolean that expresses the need to resume the exploration.
+ */
+ virtual bool update (const M & _move, const Fitness & _fitness) = 0;
- \param __fit the current fitness.
- */
- virtual void
- init (const Fitness & __fit) = 0;
-
- //! Function which updates the best solutions.
- /*!
- \param __move a new move.
- \param __fit a fitness linked to the new move.
- \return a boolean that expresses the need to resume the exploration.
- */
- virtual
- bool
- update (const M & __move, const Fitness & __fit) = 0;
-
- };
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moNextMove.h b/trunk/paradiseo-mo/src/moNextMove.h
index 2812b376c..5a067039c 100755
--- a/trunk/paradiseo-mo/src/moNextMove.h
+++ b/trunk/paradiseo-mo/src/moNextMove.h
@@ -1,41 +1,40 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moNextMove_h
-#define __moNextMove_h
+#ifndef _moNextMove_h
+#define _moNextMove_h
#include
@@ -43,10 +42,9 @@
/*!
Useful for the explorer (for moTS or moHC).
Does nothing... An object that herits from this class needs to be designed for being used.
- */
-template < class M > class moNextMove:public eoBF < M &, const typename
- M::EOType &,
- bool >
- {};
+*/
+template < class M >
+class moNextMove:public eoBF < M &, const typename M::EOType &, bool >
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moNoAspirCrit.h b/trunk/paradiseo-mo/src/moNoAspirCrit.h
index 64e0dc06d..137fbc5db 100755
--- a/trunk/paradiseo-mo/src/moNoAspirCrit.h
+++ b/trunk/paradiseo-mo/src/moNoAspirCrit.h
@@ -1,72 +1,70 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moNoAspirCrit_h
-#define __moNoAspirCrit_h
+#ifndef _moNoAspirCrit_h
+#define _moNoAspirCrit_h
-#include "moAspirCrit.h"
+#include
//! One of the possible aspiration criterion (moAspirCrit)
/*!
The simplest : never satisfied.
- */
-template < class M > class moNoAspirCrit:public moAspirCrit < M >
+*/
+template < class M >
+class moNoAspirCrit:public moAspirCrit < M >
+{
+ //! Function which describes the aspiration criterion behaviour
+ /*!
+ Does nothing.
+
+ \param _move a move.
+ \param _fitness a fitness.
+ \return false.
+ */
+ bool operator () (const M & _move, const typename M::EOType::Fitness & _fitness)
{
+ return false;
+ }
- //! Function which describes the aspiration criterion behaviour
- /*!
- Does nothing.
-
- \param __move a move.
- \param __sol a fitness.
- \return FALSE.
- */
- bool operator () (const M & __move,
- const typename M::EOType::Fitness & __sol)
- {
-
- return false;
- }
-
- //! Procedure which initialises all that needs a moNoAspirCrit
- /*!
- Nothing...
- */
- void init ()
- {}
- };
+ //! Procedure which initialises all that needs a moNoAspirCrit.
+ /*!
+ Nothing...
+ */
+ void init ()
+ {}
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moNoFitImprSolContinue.h b/trunk/paradiseo-mo/src/moNoFitImprSolContinue.h
index 40b63bdde..1ff44a788 100644
--- a/trunk/paradiseo-mo/src/moNoFitImprSolContinue.h
+++ b/trunk/paradiseo-mo/src/moNoFitImprSolContinue.h
@@ -1,123 +1,123 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moNoFitImprSolContinue_h
-#define __moNoFitImprSolContinue_h
+#ifndef _moNoFitImprSolContinue_h
+#define _moNoFitImprSolContinue_h
-#include "moSolContinue.h"
+#include
//! One possible stop criterion for a solution-based heuristic.
/*!
The stop criterion corresponds to a maximum number of iterations without improvement.
- */
-template < class EOT > class moNoFitImprSolContinue:public moSolContinue < EOT >
- {
+*/
+template < class EOT >
+class moNoFitImprSolContinue:public moSolContinue < EOT >
+{
+ public:
- public:
+ //! Alias for the fitness.
+ typedef typename EOT::Fitness Fitness;
- //! Alias for the fitness.
- typedef typename EOT::Fitness Fitness;
-
- //! Basic constructor.
- /*!
- \param __maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop.
- */
- moNoFitImprSolContinue (unsigned int __maxNumberOfIterationWithoutImprovement)
- : maxNumberOfIterationsWithoutImprovement(__maxNumberOfIterationWithoutImprovement), firstFitnessSaved(true), counter(0)
+ //! Basic constructor.
+ /*!
+ \param _maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop.
+ */
+ moNoFitImprSolContinue (unsigned int _maxNumberOfIterationWithoutImprovement)
+ : maxNumberOfIterationsWithoutImprovement(_maxNumberOfIterationWithoutImprovement), firstFitnessSaved(true), counter(0)
{}
- //! Function that activates the stopping criterion.
- /*!
- Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations).
- \param __sol the current solution.
- \return true or false.
- */
- bool operator () (const EOT & __sol)
- {
- if (__sol.invalid())
- {
- return true;
- }
+ //! Function that activates the stopping criterion.
+ /*!
+ Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations).
+ \param _solution the current solution.
+ \return true or false.
+ */
+ bool operator () (const EOT & _solution)
+ {
+ if (_solution.invalid())
+ {
+ throw std::runtime_error("[moNoFitImprSolContinue.h]: The current solution has not been evaluated.");
+ }
+
+ if (firstFitnessSaved)
+ {
+ fitness=_solution.fitness();
+ counter=0;
+ firstFitnessSaved=false;
+ return true;
+ }
- if (firstFitnessSaved)
- {
- fitness=__sol.fitness();
- counter=0;
- firstFitnessSaved=false;
- return true;
- }
+ counter++;
- counter++;
+ if ( _solution.fitness() > fitness)
+ {
+ fitness=_solution.fitness();
+ counter=0;
+ }
- if ( __sol.fitness() > fitness)
- {
- fitness=__sol.fitness();
- counter=0;
- }
+ if (counter==maxNumberOfIterationsWithoutImprovement)
+ {
+ std::cout << "[moNoFitImrpSolContinue.h]: Done [" << counter << "] iterations without improvement." << std::endl;
+ }
+
+ return counter!=maxNumberOfIterationsWithoutImprovement;
+ }
- if (counter==maxNumberOfIterationsWithoutImprovement)
- {
- std::cout << "moNoFitImrpSolContinue: Done [" << counter << "] iterations without improvement." << std::endl;
- }
- return counter!=maxNumberOfIterationsWithoutImprovement;
- }
+ //! Procedure which allows to initialise all the stuff needed.
+ /*!
+ It can be also used to reinitialize all the needed things.
+ */
+ void init ()
+ {
+ firstFitnessSaved=true;
+ counter=0;
+ }
- //! Procedure which allows to initialise all the stuff needed.
- /*!
- It can be also used to reinitialize all the needed things.
- */
- void init ()
- {
- firstFitnessSaved=true;
- counter=0;
- }
+ private:
- private:
+ //! Maximum number of iterations without improvement allowed.
+ unsigned int maxNumberOfIterationsWithoutImprovement;
- //! Maximum number of iterations without improvement allowed.
- unsigned int maxNumberOfIterationsWithoutImprovement;
+ //! Flag that this is the first time that the fitness is used.
+ bool firstFitnessSaved;
- //! Flag that this is the first time that the fitness is used.
- bool firstFitnessSaved;
+ //! Current Fitness.
+ Fitness fitness;
- //! Current Fitness.
- Fitness fitness;
-
- //! The iteration couter.
- unsigned int counter;
- };
+ //! The iteration couter.
+ unsigned int counter;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moRandImprSelect.h b/trunk/paradiseo-mo/src/moRandImprSelect.h
index 2391e946a..41f4bbfc5 100755
--- a/trunk/paradiseo-mo/src/moRandImprSelect.h
+++ b/trunk/paradiseo-mo/src/moRandImprSelect.h
@@ -1,129 +1,127 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moRandImprSelect_h
-#define __moRandImprSelect_h
+#ifndef _moRandImprSelect_h
+#define _moRandImprSelect_h
#include
-
#include
-#include "moMoveSelect.h"
+#include
//! One of the possible moMove selector (moMoveSelect)
/*!
All the neighbors are considered.
One of them that enables an improvment of the objective function is choosen.
*/
-template < class M > class moRandImprSelect:public moMoveSelect < M >
+template < class M >
+class moRandImprSelect: public moMoveSelect < M >
+{
+ public:
+
+ //! Alias for the fitness
+ typedef typename M::EOType::Fitness Fitness;
+
+ //!Procedure which all that needs a moRandImprSelect
+ /*!
+ Give a value to the initialise fitness.
+ Clean the move and fitness vectors.
+
+ \param _fitness the current best fitness
+ */
+ void init (const Fitness & _fitness)
+ {
+ initial_fitness = _fitness;
+ better_fitnesses.clear();
+ better_moves.clear();
+ }
+
+ //! Function that updates the fitness and move vectors
+ /*!
+ if a move give a better fitness than the initial fitness,
+ it is saved and the fitness too.
+
+ \param _move a new move.
+ \param _fitness a new fitness associated to the new move.
+ \return true.
+ */
+ bool update (const M & _move, const Fitness & _fitness)
{
- public:
+ if (_fitness > initial_fitness)
+ {
+ better_fitnesses.push_back(_fitness);
+ better_moves.push_back(_move);
+ }
- //! Alias for the fitness
- typedef typename M::EOType::Fitness Fitness;
+ return true;
+ }
- //!Procedure which all that needs a moRandImprSelect
- /*!
- Give a value to the initialise fitness.
- Clean the move and fitness vectors.
+ //! The move selection
+ /*!
+ One the saved move is randomly chosen.
- \param __fit the current best fitness
- */
- void init (const Fitness & __fit)
- {
- init_fit = __fit;
- vect_better_fit.clear ();
- vect_better_moves.clear ();
- }
+ \param _move the reference of the move that can be initialised by the function.
+ \param _fitness the reference of the fitness that can be initialised by the function.
+ */
+ void operator () (M & _move, Fitness & _fitness)
+ {
+ unsigned int index;
+
+ index=0;
- //! Function that updates the fitness and move vectors
- /*!
- if a move give a better fitness than the initial fitness,
- it is saved and the fitness too.
+ if( (better_fitnesses.size()==0) || (better_moves.size()==0) )
+ {
+ std::cout << "[moRandImprSelect.h]: no move or/and no fitness already saved, update has to be called first." << std::endl;
+ }
- \param __move a new move.
- \param __fit a new fitness associated to the new move.
- \return TRUE.
- */
- bool update (const M & __move, const Fitness & __fit)
- {
+ index = rng.random (better_fitnesses.size ());
+
+ _move = better_moves[index];
+ _fitness = better_fitnesses[index];
+ }
- if (__fit > init_fit)
- {
+ private:
- vect_better_fit.push_back (__fit);
- vect_better_moves.push_back (__move);
- }
+ //! Fitness of the current solution.
+ Fitness initial_fitness;
- return true;
- }
+ //! Candidate fitnesse vector.
+ std::vector < Fitness > better_fitnesses;
- //! The move selection
- /*!
- One the saved move is randomly chosen.
-
- \param __move the reference of the move that can be initialised by the function.
- \param __fit the reference of the fitness that can be initialised by the function.
- \throws EmptySelection If no move which improves the current fitness are found.
- */
- void operator () (M & __move, Fitness & __fit) throw (EmptySelection)
- {
-
- if (!vect_better_fit.empty ())
- {
-
- unsigned n = rng.random (vect_better_fit.size ());
-
- __move = vect_better_moves[n];
- __fit = vect_better_fit[n];
- }
- else
- throw EmptySelection ();
- }
-
- private:
-
- //! Fitness of the current solution.
- Fitness init_fit;
-
- //! Candidate fitnesse vector.
- std::vector < Fitness > vect_better_fit;
-
- //! Candidate move vector.
- std::vector < M > vect_better_moves;
- };
+ //! Candidate move vector.
+ std::vector < M > better_moves;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moRandMove.h b/trunk/paradiseo-mo/src/moRandMove.h
index b8bf33ac8..0ed46072a 100755
--- a/trunk/paradiseo-mo/src/moRandMove.h
+++ b/trunk/paradiseo-mo/src/moRandMove.h
@@ -1,49 +1,49 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moRandMove_h
-#define __moRandMove_h
+#ifndef _moRandMove_h
+#define _moRandMove_h
#include
//! Random move generator
/*!
Only a description... An object that herits from this class needs to be designed in order to use a moSA.
- */
-template < class M > class moRandMove:public eoUF < M &, void >
- {};
+*/
+template < class M >
+class moRandMove:public eoUF < M &, void >
+{};
#endif
diff --git a/trunk/paradiseo-mo/src/moSA.h b/trunk/paradiseo-mo/src/moSA.h
index f320ca9f5..296f45192 100755
--- a/trunk/paradiseo-mo/src/moSA.h
+++ b/trunk/paradiseo-mo/src/moSA.h
@@ -1,174 +1,165 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moSA_h
-#define __moSA_h
-
-#include
-#include
-
-#include "moAlgo.h"
-#include "moRandMove.h"
-#include "moMoveIncrEval.h"
-#include "moCoolingSchedule.h"
-#include "moSolContinue.h"
+#ifndef _moSA_h
+#define _moSA_h
#include
+#include
+#include
+#include
+#include
+#include
+#include
+
//! Simulated Annealing (SA)
/*!
Class that describes a Simulated Annealing algorithm.
*/
-template < class M > class moSA:public moAlgo < typename M::EOType >
+template < class M >
+class moSA:public moAlgo < typename M::EOType >
+{
+ //! Alias for the type
+ typedef typename M::EOType EOT;
+
+ //! Alias for the fitness
+ typedef typename EOT::Fitness Fitness;
+
+ public:
+
+ //! SA constructor
+ /*!
+ All the boxes used by a SA need to be given.
+
+ \param _random_move_generator The move generator (generally randomly).
+ \param _incremental_evaluation The (generally) efficient evaluation function
+ \param _continue The stopping criterion.
+ \param _initial_temperature The initial temperature.
+ \param _cooling_schedule The cooling schedule, describes how the temperature is modified.
+ \param _full_evaluation The full evaluation function.
+ */
+ moSA (moRandMove < M > & _random_move_generator, moMoveIncrEval < M > & _incremental_evaluation,
+ moSolContinue < EOT > & _continue, double _initial_temperature, moCoolingSchedule & _cooling_schedule,
+ eoEvalFunc < EOT > & _full_evaluation):
+ random_move_generator(_random_move_generator), incremental_evaluation(_incremental_evaluation),
+ continu(_continue), initial_temperature(_initial_temperature),
+ cooling_schedule(_cooling_schedule), full_evaluation(_full_evaluation)
+ {}
+
+ //! function that launches the SA algorithm.
+ /*!
+ As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm.
+
+ \param _solution A solution to improve.
+ \return TRUE.
+ */
+ bool operator ()(EOT & _solution)
{
+ Fitness incremental_fitness, delta_fit;
+ EOT best_solution;
+ double temperature;
+ M move;
- //! Alias for the type
- typedef typename M::EOType EOT;
+ if (_solution.invalid())
+ {
+ full_evaluation (_solution);
+ }
- //! Alias for the fitness
- typedef typename EOT::Fitness Fitness;
+ temperature = initial_temperature;
- public:
+ best_solution = _solution;
- //! SA constructor
- /*!
- All the boxes used by a SA need to be given.
+ do
+ {
+ continu.init ();
+
+ do
+ {
+ random_move_generator(move);
- \param __move_rand a move generator (generally randomly).
- \param __incr_eval a (generaly) efficient evaluation function
- \param __cont a stopping criterion.
- \param __init_temp the initial temperature.
- \param __cool_sched a cooling schedule, describes how the temperature is modified.
- \param __full_eval a full evaluation function.
- */
- moSA (moRandMove < M > &__move_rand,
- moMoveIncrEval < M > &__incr_eval,
- moSolContinue < EOT > &__cont,
- double __init_temp,
- moCoolingSchedule & __cool_sched, eoEvalFunc < EOT > &__full_eval):
- move_rand (__move_rand),
- incr_eval (__incr_eval),
- cont (__cont),
- init_temp (__init_temp),
- cool_sched (__cool_sched),
- full_eval (__full_eval)
- {}
+ incremental_fitness = incremental_evaluation (move, _solution);
- //! function that launches the SA algorithm.
- /*!
- As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm.
+ delta_fit = incremental_fitness - _solution.fitness ();
+
+ if( (_solution.fitness() > incremental_fitness ) && (exp (delta_fit / temperature) > 1.0) )
+ {
+ delta_fit = -delta_fit;
+ }
- \param __sol a solution to improve.
- \return TRUE.
- */
- bool operator ()(EOT & __sol)
- {
+ if ( (incremental_fitness > _solution.fitness()) || (rng.uniform () < exp (delta_fit / temperature)) )
+ {
+ move(_solution);
+ _solution.fitness(incremental_fitness);
+
+ // Updating the best solution found until now ?
+ if ( _solution.fitness() > best_solution.fitness() )
+ {
+ best_solution = _solution;
+ }
+ }
+
+ }
+ while ( continu (_solution) );
+ }
+ while ( cooling_schedule (temperature) );
- if (__sol.invalid ())
- {
- full_eval (__sol);
- }
+ _solution = best_solution;
- double temp = init_temp;
+ return true;
+ }
- M move;
+ private:
- EOT best_sol = __sol;
+ //! A move generator (generally randomly)
+ moRandMove < M > & random_move_generator;
- do
- {
+ //! A (generally) efficient evaluation function.
+ moMoveIncrEval < M > & incremental_evaluation;
- cont.init ();
- do
- {
+ //! Stopping criterion before temperature update
+ moSolContinue < EOT > & continu;
- move_rand (move);
-
- Fitness incremental_fitness = incr_eval (move, __sol);
-
- Fitness delta_fit = incremental_fitness - __sol.fitness ();
-
- if((__sol.fitness() > incremental_fitness ) && (exp (delta_fit / temp) > 1.0))
- {
- delta_fit = -delta_fit;
- }
-
- if (incremental_fitness > __sol.fitness() || rng.uniform () < exp (delta_fit / temp))
- {
- __sol.fitness (incremental_fitness);
- move (__sol);
-
- /* Updating the best solution found
- until now ? */
- if (__sol.fitness () > best_sol.fitness ())
- {
- best_sol = __sol;
- }
- }
-
- }
- while (cont (__sol));
-
- }
- while (cool_sched (temp));
-
- __sol = best_sol;
-
- return true;
- }
-
- private:
-
- //! A move generator (generally randomly)
- moRandMove < M > &move_rand;
-
- //! A (generally) efficient evaluation function.
- moMoveIncrEval < M > &incr_eval;
-
- //! Stopping criterion before temperature update
- moSolContinue < EOT > &cont;
-
- //! Initial temperature
- double init_temp;
-
- //! The cooling schedule
- moCoolingSchedule & cool_sched;
-
- //! A full evaluation function.
- eoEvalFunc < EOT > &full_eval; // Full evaluator.
- };
+ //! Initial temperature
+ double initial_temperature;
+
+ //! The cooling schedule
+ moCoolingSchedule & cooling_schedule;
+
+ //! A full evaluation function.
+ eoEvalFunc < EOT > & full_evaluation;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moSimpleMoveTabuList.h b/trunk/paradiseo-mo/src/moSimpleMoveTabuList.h
index 54d1db772..7f88f5bc9 100755
--- a/trunk/paradiseo-mo/src/moSimpleMoveTabuList.h
+++ b/trunk/paradiseo-mo/src/moSimpleMoveTabuList.h
@@ -1,151 +1,154 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moSimpleMoveTabuList_h
-#define __moSimpleMoveTabuList_h
+#ifndef _moSimpleMoveTabuList_h
+#define _moSimpleMoveTabuList_h
#include
#include
-#include "moTabuList.h"
+#include
//! Class describing a move tabu list with a limited memory.
template
class moSimpleMoveTabuList: public moTabuList < M >
+{
+ public:
+
+ //! Alias for the type
+ typedef typename M::EOType EOT;
+
+ //! Alias for an iterator of a move list.
+ typedef typename std::list::iterator moveIterator;
+
+ //! Constructor
+ /*
+ \param _size The maximum size of the move tabu list.
+ */
+ moSimpleMoveTabuList(unsigned int _memory_maximum_size): memory_maximum_size(_memory_maximum_size), memory_size(0)
+ {}
+
+ //! Function that indicates if, in a given state, the _move is tabu or not.
+ /*!
+ \param _move A given moMove.
+ \param _solution A solution.
+ \return true or false.
+ */
+ bool operator () (const M & _move, const EOT & _solution)
{
-
- public:
-
- //! Alias for the type
- typedef typename M::EOType EOT;
-
- //! Constructor
- /*
- \param __size The maximum size of the move tabu list.
- */
- moSimpleMoveTabuList(unsigned int __size): maxSize(__size)
- {
- currentSize=0;
- }
-
- //! Function that indicates if, in a given state, the _move is tabu or not.
- /*!
- \param __move A given moMove.
- \param __sol A solution.
- \return true or false.
- */
- bool
- operator () (const M & __move, const EOT & __sol)
- {
- typename std::list::iterator it;
-
- it=tabuList.begin();
- while (it!=tabuList.end()&&(!((*it)==__move)))
- {
- it++;
- }
-
- return it!=tabuList.end();
- }
-
- void
- add (const M & __move, const EOT & __sol)
+ moveIterator it;
+ //code only used to avoid warning because _solution is not used in this function.
+ EOT solution=(EOT)_solution;
+
+ it=tabuList.begin();
+ // The code is !(*it)==_move instead of (*it)!=_move because people designing their specific move representation
+ // will write the "==" operator (I hope) but not necessary the "!=" operator.
+ while ( it!=tabuList.end() && !((*it)==_move) )
{
- if (currentSize!=0)
- {
- // Useful in the case of a move has been kept thanks to the moAspirCrit.
- // In this case, the move can already be in the tabuList.
- removeMove(__move);
- }
-
- tabuList.push_back(__move);
-
- if (currentSize==maxSize)
- {
- tabuList.erase(tabuList.begin());
- }
- else
- {
- currentSize++;
- }
+ it++;
}
- void
- update ()
- {
- //nothing to do
- }
+ return it!=tabuList.end();
+ }
- void
- init ()
- {
- //nothing to do
- }
+ void add(const M & _move, const EOT & _solution)
+ {
+ //code only used to avoid warning because _solution is not used in this function.
+ EOT solution=(EOT)_solution;
- private:
+ if (memory_size!=0)
+ {
+ // Useful in the case of a move has been kept thanks to the moAspirCrit.
+ // In this case, the move can already be in the tabuList.
+ removeMove(_move);
+ }
- //! Procedure that removes a given move from the tabu list (if it is into, else do nothing).
- /*!
- \param __move A given moMove.
- */
- void
- removeMove(const M & __move)
- {
- typename std::list::iterator it;
+ tabuList.push_back(_move);
- it=tabuList.begin();
- while (it!=tabuList.end()&&(!((*it)==__move)))
- {
- it++;
- }
+ if (memory_size == memory_maximum_size)
+ {
+ tabuList.erase(tabuList.begin());
+ }
+ else
+ {
+ memory_size++;
+ }
+ }
- if (it!=tabuList.end())
- {
- tabuList.erase(it);
- }
- }
+ void update ()
+ {
+ //nothing to do
+ }
+
+ void init ()
+ {
+ //nothing to do
+ }
- //! The maximum size of the tabu list.
- unsigned int maxSize;
+ private:
- //! The current size of the tabu list.
- unsigned int currentSize;
+ //! Procedure that removes a given move from the tabu list (if it is into, else do nothing).
+ /*!
+ \param _move A given moMove.
+ */
+ void removeMove(const M & _move)
+ {
+ moveIterator it;
+
+ it=tabuList.begin();
+ // The code is !(*it)==_move instead of (*it)!=_move because people designing their specific move representation
+ // will write the "==" operator (I hope) but not necessary the "!=" operator.
+ while ( it!=tabuList.end() && (!((*it)==_move) ))
+ {
+ it++;
+ }
+
+ if (it!=tabuList.end())
+ {
+ tabuList.erase(it);
+ }
+ }
- //! The move tabu list.
- std::list tabuList;
- };
+ //! The maximum size of the tabu list.
+ unsigned int memory_maximum_size;
+
+ //! The current size of the tabu list.
+ unsigned int memory_size;
+
+ //! The move tabu list.
+ std::list tabuList;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h b/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h
index 0cc07c9b9..2865f9973 100755
--- a/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h
+++ b/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h
@@ -1,160 +1,159 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moSimpleSolutionTabuList_h
-#define __moSimpleSolutionTabuList_h
+#ifndef _moSimpleSolutionTabuList_h
+#define _moSimpleSolutionTabuList_h
#include
#include
-#include "moTabuList.h"
+#include
//! Class describing a solution tabu list with limited length.
template
class moSimpleSolutionTabuList: public moTabuList < M >
+{
+ public:
+
+ //! Alias for the type
+ typedef typename M::EOType EOT;
+
+ //! Alias for an iterator of a solution list.
+ typedef typename std::list::iterator solutionIterator;
+
+ //! Constructor
+ /*!
+ \param _memory_maximum_size The maximum size of the solution tabu list.
+ */
+ moSimpleSolutionTabuList(unsigned int _memory_maximum_size): memory_maximum_size(_memory_maximum_size), memory_size(0)
+ {}
+
+ //! Function that indicates if, in a given state, the _move is tabu or not.
+ /*!
+ \param _move A given moMove.
+ \param _solution A solution.
+ \return true or false.
+ */
+ bool operator () (const M & _move, const EOT & _solution)
{
+ solutionIterator it;
- public:
+ M move=(M)_move;
+ EOT solution=(EOT) _solution;
- //! Alias for the type
- typedef typename M::EOType EOT;
+ move(solution);
- //! Constructor
- /*!
- \param __size The maximum size of the solution tabu list.
- */
- moSimpleSolutionTabuList(unsigned int __size): maxSize(__size)
- {
- currentSize=0;
- }
-
- //! Function that indicates if, in a given state, the _move is tabu or not.
- /*!
- \param __move A given moMove.
- \param __sol A solution.
- \return true or false.
- */
- bool operator () (const M & __move, const EOT & __sol)
- {
- typename std::list::iterator it;
-
- M _move=(M)__move;
- EOT _sol=(EOT) __sol;
-
- _move(_sol);
-
- it=tabuList.begin();
- while (it!=tabuList.end()&&(!((*it)==_sol)))
- {
- it++;
- }
-
- return it!=tabuList.end();
- }
-
- void
- add (const M & __move, const EOT & __sol)
+ it=tabuList.begin();
+ // The code is !(*it)==_solution instead of (*it)!=_solution because people designing their specific solution representation
+ // will write the "==" operator (I hope) but not necessary the "!=" operator.
+ while (it!=tabuList.end()&&(!((*it)==solution)))
{
- M _move=(M)__move;
- EOT _sol=(EOT) __sol;
-
- _move(_sol);
-
- if (currentSize!=0)
- {
- // Useful in the case of a solution has been kept thanks to the moAspirCrit.
- // In this case, the solution can already be in the tabuList.
- removeSolution(_sol);
- }
-
- tabuList.push_back(_sol);
-
- if (currentSize==maxSize)
- {
- tabuList.erase(tabuList.begin());
- }
- else
- {
- currentSize++;
- }
+ it++;
}
- void
- update ()
- {
- //nothing to do
- }
+ return it!=tabuList.end();
+ }
- void
- init ()
- {
- //nothing to do
- }
+ void add (const M & _move, const EOT & _solution)
+ {
+ M move=(M)_move;
+ EOT solution=(EOT) _solution;
- private:
+ _move(_solution);
- //! Procedure that removes a given solution from the tabu list (if it is into, else does nothing).
- /*!
- \param __sol A given solution.
- */
- void
- removeSolution(const EOT & __sol)
- {
- typename std::list::iterator it;
+ if (memory_size!=0)
+ {
+ // Useful in the case of a solution has been kept thanks to the moAspirCrit.
+ // In this case, the solution can already be in the tabuList.
+ removeSolution(_solution);
+ }
- it=tabuList.begin();
- while (it!=tabuList.end()&&(!((*it)==__sol)))
- {
- it++;
- }
+ tabuList.push_back(_solution);
- if (it!=tabuList.end())
- {
- tabuList.erase(it);
- }
- }
+ if (memory_size == memory_maximum_size)
+ {
+ tabuList.erase(tabuList.begin());
+ }
+ else
+ {
+ memory_size++;
+ }
+ }
- //! The maximum size of the tabu list.
- unsigned int maxSize;
+ void update ()
+ {
+ //nothing to do
+ }
- //! The current size of the tabu list.
- unsigned int currentSize;
+ void init ()
+ {
+ //nothing to do
+ }
- //! The solution tabu list.
- std::list tabuList;
- };
+ private:
+
+ //! Procedure that removes a given solution from the tabu list (if it is into, else does nothing).
+ /*!
+ \param _solution A given solution.
+ */
+ void removeSolution(const EOT & _solution)
+ {
+ solutionIterator it;
+
+ it=tabuList.begin();
+ // The code is !(*it)==_solution instead of (*it)!=_solution because people designing their specific solution representation
+ // will write the "==" operator (I hope) but not necessary the "!=" operator.
+ while ( it!=tabuList.end() && !((*it)==_solution) )
+ {
+ it++;
+ }
+
+ if (it!=tabuList.end())
+ {
+ tabuList.erase(it);
+ }
+ }
+
+ //! The maximum size of the tabu list.
+ unsigned int memory_maximum_size;
+
+ //! The current size of the tabu list.
+ unsigned int memory_size;
+
+ //! The solution tabu list.
+ std::list tabuList;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moSolContinue.h b/trunk/paradiseo-mo/src/moSolContinue.h
index 3655a70e0..eb4c72cc0 100755
--- a/trunk/paradiseo-mo/src/moSolContinue.h
+++ b/trunk/paradiseo-mo/src/moSolContinue.h
@@ -1,58 +1,58 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moSolContinue_h
-#define __moSolContinue_h
+#ifndef _moSolContinue_h
+#define _moSolContinue_h
#include
+#include
//! Class that describes a stop criterion for a solution-based heuristic
/*!
It allows to add an initialisation procedure to an object that is a unary function (eoUF).
*/
-template < class EOT > class moSolContinue:public eoUF < const EOT &, bool >
- {
-
- public:
- //! Procedure which initialises all that the stop criterion needs
- /*!
- Generally, it allocates some data structures or initialises some counters.
- */
- virtual void init () = 0;
- };
+template < class EOT >
+class moSolContinue:public eoUF < const EOT &, bool >
+{
+ public:
+ //! Procedure which initialises all that the stop criterion needs
+ /*!
+ Generally, it allocates some data structures or initialises some counters.
+ */
+ virtual void init () = 0;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moSteadyFitSolContinue.h b/trunk/paradiseo-mo/src/moSteadyFitSolContinue.h
index 0b29826bc..10457da05 100644
--- a/trunk/paradiseo-mo/src/moSteadyFitSolContinue.h
+++ b/trunk/paradiseo-mo/src/moSteadyFitSolContinue.h
@@ -1,143 +1,142 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moSteadyFitSolContinue_h
-#define __moSteadyFitSolContinue_h
+#ifndef _moSteadyFitSolContinue_h
+#define _moSteadyFitSolContinue_h
-#include "moSolContinue.h"
+#include
//! One possible stopping criterion for a solution-based heuristic.
/*!
The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations).
- */
-template < class EOT > class moSteadyFitSolContinue:public moSolContinue < EOT >
- {
+*/
+template < class EOT >
+class moSteadyFitSolContinue:public moSolContinue < EOT >
+{
+ public:
- public:
-
- //! Alias for the fitness.
- typedef typename EOT::Fitness Fitness;
-
- //! Basic constructor.
- /*!
- \param __maxNumberOfIterations The number of iterations to reach before looking for the fitness.
- \param __maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop.
- */
- moSteadyFitSolContinue (unsigned int __maxNumberOfIterations, unsigned int __maxNumberOfIterationWithoutImprovement)
- : maxNumberOfIterations (__maxNumberOfIterations), maxNumberOfIterationsWithoutImprovement(__maxNumberOfIterationWithoutImprovement),
- maxNumberOfIterationsReached(false), firstFitnessSaved(true), counter(0)
+ //! Alias for the fitness.
+ typedef typename EOT::Fitness Fitness;
+
+ //! Basic constructor.
+ /*!
+ \param _maxNumberOfIterations The number of iterations to reach before looking for the fitness.
+ \param _maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop.
+ */
+ moSteadyFitSolContinue (unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement)
+ : maxNumberOfIterations (_maxNumberOfIterations), maxNumberOfIterationsWithoutImprovement(_maxNumberOfIterationWithoutImprovement),
+ maxNumberOfIterationsReached(false), firstFitnessSaved(true), counter(0)
{}
- //! Function that activates the stopping criterion.
- /*!
- Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations).
+ //! Function that activates the stopping criterion.
+ /*!
+ Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations).
- \param __sol the current solution.
- \return true or false.
- */
- bool operator () (const EOT & __sol)
- {
- if (!maxNumberOfIterationsReached)
- {
- maxNumberOfIterationsReached=((++counter)==maxNumberOfIterations);
- if (maxNumberOfIterationsReached)
- {
- std::cout << "moSteadyFitSolContinue: Done the minimum number of iterations [" << counter << "]." << std::endl;
- }
- return true;
- }
+ \param _solution the current solution.
+ \return true or false.
+ */
+ bool operator () (const EOT & _solution)
+ {
+ if (!maxNumberOfIterationsReached)
+ {
+ maxNumberOfIterationsReached=((++counter)==maxNumberOfIterations);
+ if (maxNumberOfIterationsReached)
+ {
+ std::cout << "[moSteadyFitSolContinue.h]: Done the minimum number of iterations [" << counter << "]." << std::endl;
+ }
+ return true;
+ }
+
+ if (_solution.invalid())
+ {
+ return true;
+ }
+
+ if (firstFitnessSaved)
+ {
+ fitness=_solution.fitness();
+ counter=0;
+ firstFitnessSaved=false;
+ return true;
+ }
- if (__sol.invalid())
- {
- return true;
- }
+ counter++;
- if (firstFitnessSaved)
- {
- fitness=__sol.fitness();
- counter=0;
- firstFitnessSaved=false;
- return true;
- }
+ if ( _solution.fitness() > fitness )
+ {
+ fitness=_solution.fitness();
+ counter=0;
+ }
- counter++;
+ if (counter==maxNumberOfIterationsWithoutImprovement)
+ {
+ std::cout << "[moSteadyFitSolContinue.h]: Done [" << counter << "] iterations without improvement." << std::endl;
+ }
+ return counter!=maxNumberOfIterationsWithoutImprovement;
+ }
- if ( __sol.fitness() > fitness )
- {
- fitness=__sol.fitness();
- counter=0;
- }
+ //! Procedure which allows to initialise the stuff needed.
+ /*!
+ It can be also used to reinitialize the counter all the needed things.
+ */
+ void init ()
+ {
+ maxNumberOfIterationsReached=false;
+ counter=0;
+ firstFitnessSaved=true;
+ }
- if (counter==maxNumberOfIterationsWithoutImprovement)
- {
- std::cout << "moSteadyFitSolContinue: Done [" << counter << "] iterations without improvement." << std::endl;
- }
- return counter!=maxNumberOfIterationsWithoutImprovement;
- }
+ private:
- //! Procedure which allows to initialise the stuff needed.
- /*!
- It can be also used to reinitialize the counter all the needed things.
- */
- void init ()
- {
- maxNumberOfIterationsReached=false;
- counter=0;
- firstFitnessSaved=true;
- }
+ //! Maximum number of iterations before considering the fitness.
+ unsigned int maxNumberOfIterations;
- private:
+ //! Maximum number of iterations without improvement allowed.
+ unsigned int maxNumberOfIterationsWithoutImprovement;
- //! Maximum number of iterations before considering the fitness.
- unsigned int maxNumberOfIterations;
+ //! Flag that indicates that the maxNumberIteration have been reached.
+ bool maxNumberOfIterationsReached;
- //! Maximum number of iterations without improvement allowed.
- unsigned int maxNumberOfIterationsWithoutImprovement;
+ //! Flag that this is the first time that the fitness is used.
+ bool firstFitnessSaved;
- //! Flag that indicates that the maxNumberIteration have been reached.
- bool maxNumberOfIterationsReached;
+ //! Current Fitness.
+ Fitness fitness;
- //! Flag that this is the first time that the fitness is used.
- bool firstFitnessSaved;
-
- //! Current Fitness.
- Fitness fitness;
-
- //! The iteration couter.
- unsigned int counter;
- };
+ //! The iteration couter.
+ unsigned int counter;
+};
#endif
diff --git a/trunk/paradiseo-mo/src/moTS.h b/trunk/paradiseo-mo/src/moTS.h
index ffb99e103..e205151b5 100755
--- a/trunk/paradiseo-mo/src/moTS.h
+++ b/trunk/paradiseo-mo/src/moTS.h
@@ -1,169 +1,151 @@
/*
-*
-* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
-* (C) OPAC Team, LIFL, 2002-2007
-*
-* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
-*
-* 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
-*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+ (C) OPAC Team, LIFL, 2002-2008
+
+ Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+
+ 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 __moTS_h
-#define __moTS_h
+#ifndef _moTS_h
+#define _moTS_h
-#include
#include
-#include "moAlgo.h"
-#include "moSolContinue.h"
-
-#include "moMoveExpl.h"
-#include "moTSMoveLoopExpl.h"
-
+#include
+#include