Big source code update: simplification, accessibility, include, date, ... All .h have been verified and updated
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@877 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
ff55f03920
commit
a94380fadb
39 changed files with 3045 additions and 3155 deletions
|
|
@ -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.
|
||||
<br>
|
||||
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.
|
||||
<BR>
|
||||
It contains classes for almost any kind of one solution based heuristics.
|
||||
|
||||
@section authors AUTHORS
|
||||
@section authors AUTHORS
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TD>Sebastien CAHON</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><A href=http://www.lifl.fr/~boisson TARGET=blank>Jean-Charles BOISSON</A></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TD>Sebastien CAHON</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<A href=http://www.lifl.fr/~boisson TARGET=blank>Jean-Charles BOISSON</A>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
@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
|
||||
|
||||
<A href=http://paradiseo.gforge.inria.fr>http://paradiseo.gforge.inria.fr</A>
|
||||
<A href=http://paradiseo.gforge.inria.fr>http://paradiseo.gforge.inria.fr</A>
|
||||
|
||||
@section Installation
|
||||
@section Installation
|
||||
|
||||
The installation procedure of the package is detailed in the
|
||||
<a href="../../README">README</a> file in the top-directory of the source-tree.
|
||||
The installation procedure of the package is detailed in the
|
||||
<a href="../../README">README</a> file in the top-directory of the source-tree.
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,38 +1,38 @@
|
|||
/*
|
||||
* <mo>
|
||||
* 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
|
||||
*
|
||||
<mo>
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -1,77 +1,76 @@
|
|||
/*
|
||||
* <mo.h>
|
||||
* 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
|
||||
*
|
||||
<mo.h>
|
||||
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 <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>
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,49 +1,49 @@
|
|||
/*
|
||||
* <moAlgo.h>
|
||||
* 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
|
||||
*
|
||||
<moAlgo.h>
|
||||
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 <eoOp.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,41 +1,40 @@
|
|||
/*
|
||||
* <moAspirCrit.h>
|
||||
* 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
|
||||
*
|
||||
<moAspirCrit.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,118 +1,117 @@
|
|||
/*
|
||||
* <moBestImprSelect.h>
|
||||
* 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
|
||||
*
|
||||
<moBestImprSelect.h>
|
||||
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 <moMoveSelect.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,49 +1,48 @@
|
|||
/*
|
||||
* <moComparator.h>
|
||||
* 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
|
||||
*
|
||||
<moComparator.h>
|
||||
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 EOT>
|
||||
class moComparator: public eoBF<const EOT&, const EOT&, bool>
|
||||
{};
|
||||
class moComparator: public eoBF<const EOT &, const EOT &, bool>
|
||||
{};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,41 +1,40 @@
|
|||
/*
|
||||
* <moCoolingSchedule.h>
|
||||
* 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
|
||||
*
|
||||
<moCoolingSchedule.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,80 +1,79 @@
|
|||
/*
|
||||
* <moExponentialCoolingSchedule.h>
|
||||
* 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
|
||||
*
|
||||
<moExponentialCoolingSchedule.h>
|
||||
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 <moCoolingSchedule.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,43 +1,42 @@
|
|||
/*
|
||||
* <moFirstImprSelect.h>
|
||||
* 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
|
||||
*
|
||||
<moFirstImprSelect.h>
|
||||
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 <moMoveSelect.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,61 +1,62 @@
|
|||
/*
|
||||
* <moFitComparator.h>
|
||||
* 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
|
||||
*
|
||||
<moFitComparator.h>
|
||||
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 <moComparator.h>
|
||||
|
||||
//! Comparison according to the fitness.
|
||||
/*!
|
||||
An EOT is better than an other if its fitness is better.
|
||||
*/
|
||||
*/
|
||||
template<class EOT>
|
||||
class moFitComparator: public moComparator<EOT>
|
||||
{
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,91 +1,90 @@
|
|||
/*
|
||||
* <moFitSolContinue.h>
|
||||
* 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
|
||||
*
|
||||
<moFitSolContinue.h>
|
||||
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 <moSolContinue.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,92 +1,92 @@
|
|||
/*
|
||||
* <moGenSolContinue.h>
|
||||
* 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
|
||||
*
|
||||
<moGenSolContinue.h>
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,37 +1,36 @@
|
|||
/*
|
||||
* <moHC.h>
|
||||
* 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
|
||||
*
|
||||
<moHC.h>
|
||||
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 <eoEvalFunc.h>
|
||||
|
||||
#include "moAlgo.h"
|
||||
#include "moMoveExpl.h"
|
||||
#include "moHCMoveLoopExpl.h"
|
||||
#include <moAlgo.h>
|
||||
#include <moHCMoveLoopExpl.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,131 +1,138 @@
|
|||
/*
|
||||
* <moHCMoveLoopExpl.h>
|
||||
* 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
|
||||
*
|
||||
<moHCMoveLoopExpl.h>
|
||||
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 <moMoveLoopExpl.h>
|
||||
#include <moMoveInit.h>
|
||||
#include <moNextMove.h>
|
||||
#include <moMoveIncrEval.h>
|
||||
#include <moMoveSelect.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,203 +1,205 @@
|
|||
/*
|
||||
* <moILS.h>
|
||||
* 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
|
||||
*
|
||||
<moILS.h>
|
||||
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 <eoEvalFunc.h>
|
||||
|
||||
#include "moHC.h"
|
||||
#include "moTS.h"
|
||||
#include "moSA.h"
|
||||
#include <moHC.h>
|
||||
#include <moTS.h>
|
||||
#include <moSA.h>
|
||||
|
||||
//! 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<EOT> & _algorithm, moSolContinue <EOT> & _continue, moComparator<EOT> & _acceptance_criterion,
|
||||
eoMonOp<EOT> & _perturbation, eoEvalFunc<EOT> & _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 <EOT> & _continue, moComparator<EOT> & _acceptance_criterion,
|
||||
eoMonOp<EOT> & _perturbation, eoEvalFunc<EOT> & _full_evaluation):
|
||||
algorithm( *new moHC<M>(_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 <M> & _move_initializer, moNextMove <M> & _next_move_generator,
|
||||
moMoveIncrEval <M> & _incremental_evaluation, moTabuList <M> & _tabu_list,
|
||||
moAspirCrit <M> & _aspiration_criterion, moSolContinue <EOT> & _moTS_continue,
|
||||
moSolContinue <EOT> & _continue, moComparator<EOT> & _acceptance_criterion, eoMonOp<EOT> & _perturbation,
|
||||
eoEvalFunc<EOT> & _full_evaluation):
|
||||
algorithm( *new moTS<M>(_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<M> & _random_move_generator, moMoveIncrEval <M> & _incremental_evaluation, moSolContinue <EOT> & _moSA_continue,
|
||||
double _initial_temperature, moCoolingSchedule & _cooling_schedule, moSolContinue <EOT> & _continue,
|
||||
moComparator<EOT> & _acceptance_criterion, eoMonOp<EOT> & _perturbation, eoEvalFunc<EOT> & _full_evaluation):
|
||||
algorithm( *new moSA<M>(_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<EOT> &__algo, moSolContinue <EOT> &__continue, moComparator<EOT> &__acceptance_criterion, eoMonOp<EOT> &__perturbation,
|
||||
eoEvalFunc<EOT> &__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 <EOT> &__continue, moComparator<EOT> &__acceptance_criterion,
|
||||
eoMonOp<EOT> &__perturbation, eoEvalFunc<EOT> &__full_eval):
|
||||
algo(*new moHC<M>(__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 <M> &__move_init, moNextMove <M> &__next_move, moMoveIncrEval <M> &__incr_eval,
|
||||
moTabuList <M> &__tabu_list, moAspirCrit <M> &__aspir_crit, moSolContinue <EOT> &__moTS_continue,
|
||||
moSolContinue <EOT> &__continue, moComparator<EOT> &__acceptance_criterion, eoMonOp<EOT> &__perturbation,
|
||||
eoEvalFunc<EOT> &__full_eval):
|
||||
algo(*new moTS<M>(__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<M> &__move_rand, moMoveIncrEval <M> &__incr_eval, moSolContinue <EOT> &__moSA_continue, double __init_temp,
|
||||
moCoolingSchedule & __cool_sched, moSolContinue <EOT> &__continue, moComparator<EOT> &__acceptance_criterion,
|
||||
eoMonOp<EOT> &__perturbation, eoEvalFunc<EOT> &__full_eval):
|
||||
algo(*new moSA<M>(__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<EOT> & 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<EOT> & continu;
|
||||
|
||||
\param __sol a current solution to improve.
|
||||
\return TRUE.
|
||||
*/
|
||||
bool operator()(EOT & __sol)
|
||||
{
|
||||
EOT __sol_saved=__sol;
|
||||
//! The acceptance criterion.
|
||||
moComparator<EOT> & acceptance_criterion;
|
||||
|
||||
cont.init ();
|
||||
//! The perturbation generator
|
||||
eoMonOp<EOT> & 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<EOT> &algo;
|
||||
|
||||
//! The stopping criterion.
|
||||
moSolContinue<EOT> &cont;
|
||||
|
||||
//! The acceptance criterion.
|
||||
moComparator<EOT> &acceptance_criterion;
|
||||
|
||||
//! The perturbation generator
|
||||
eoMonOp<EOT> &perturbation;
|
||||
|
||||
//! The full evaluation function
|
||||
eoEvalFunc<EOT> &full_eval;
|
||||
};
|
||||
//! The full evaluation function
|
||||
eoEvalFunc<EOT> & full_evaluation;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,109 +1,104 @@
|
|||
/*
|
||||
* <moImprBestFitAspirCrit.h>
|
||||
* 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
|
||||
*
|
||||
<moImprBestFitAspirCrit.h>
|
||||
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 <moAspirCrit.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,107 +1,102 @@
|
|||
/*
|
||||
* <moItRandNextMove.h>
|
||||
* 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
|
||||
*
|
||||
<moItRandNextMove.h>
|
||||
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 <moNextMove.h>
|
||||
#include <moRandMove.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,41 +1,40 @@
|
|||
/*
|
||||
* <moLSCheckPoint.h>
|
||||
* 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
|
||||
*
|
||||
<moLSCheckPoint.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,80 +1,79 @@
|
|||
/*
|
||||
* <moLinearCoolingSchedule.h>
|
||||
* 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
|
||||
*
|
||||
<moLinearCoolingSchedule.h>
|
||||
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 <moCoolingSchedule.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,41 +1,41 @@
|
|||
/*
|
||||
* <moMove.h>
|
||||
* 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
|
||||
*
|
||||
<moMove.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,52 +1,49 @@
|
|||
/*
|
||||
* <moMoveExpl.h>
|
||||
* 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
|
||||
*
|
||||
<moMoveExpl.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,41 +1,40 @@
|
|||
/*
|
||||
* <moMoveIncrEval.h>
|
||||
* 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
|
||||
*
|
||||
<moMoveIncrEval.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,41 +1,40 @@
|
|||
/*
|
||||
* <moMoveInit.h>
|
||||
* 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
|
||||
*
|
||||
<moMoveInit.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,49 +1,50 @@
|
|||
/*
|
||||
* <moMoveLoopExpl.h>
|
||||
* 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
|
||||
*
|
||||
<moMoveLoopExpl.h>
|
||||
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 <moMoveExpl.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,50 +1,44 @@
|
|||
/*
|
||||
* <moMoveSelect.h>
|
||||
* 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
|
||||
*
|
||||
<moMoveSelect.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
//! 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 <stdexcept>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,41 +1,40 @@
|
|||
/*
|
||||
* <moNextMove.h>
|
||||
* 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
|
||||
*
|
||||
<moNextMove.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,72 +1,70 @@
|
|||
/*
|
||||
* <moNoAspirCrit.h>
|
||||
* 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
|
||||
*
|
||||
<moNoAspirCrit.h>
|
||||
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 <moAspirCrit.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,123 +1,123 @@
|
|||
/*
|
||||
* <moNoFitImprSolContinue.h>
|
||||
* 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
|
||||
*
|
||||
<moNoFitImprSolContinue.h>
|
||||
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 <moSolContinue.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,129 +1,127 @@
|
|||
/*
|
||||
* <moRandImprSelect.h>
|
||||
* 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
|
||||
*
|
||||
<moRandImprSelect.h>
|
||||
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 <vector>
|
||||
|
||||
#include <utils/eoRNG.h>
|
||||
#include "moMoveSelect.h"
|
||||
#include <moMoveSelect.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,49 +1,49 @@
|
|||
/*
|
||||
* <moRandMove.h>
|
||||
* 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
|
||||
*
|
||||
<moRandMove.h>
|
||||
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 <eoFunctor.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,174 +1,165 @@
|
|||
/*
|
||||
* <moSA.h>
|
||||
* 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
|
||||
*
|
||||
<moSA.h>
|
||||
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 <eoOp.h>
|
||||
#include <eoEvalFunc.h>
|
||||
|
||||
#include "moAlgo.h"
|
||||
#include "moRandMove.h"
|
||||
#include "moMoveIncrEval.h"
|
||||
#include "moCoolingSchedule.h"
|
||||
#include "moSolContinue.h"
|
||||
#ifndef _moSA_h
|
||||
#define _moSA_h
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <eoEvalFunc.h>
|
||||
#include <moAlgo.h>
|
||||
#include <moRandMove.h>
|
||||
#include <moMoveIncrEval.h>
|
||||
#include <moCoolingSchedule.h>
|
||||
#include <moSolContinue.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,151 +1,154 @@
|
|||
/*
|
||||
* <moSimpleMoveTabuList.h>
|
||||
* 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
|
||||
*
|
||||
<moSimpleMoveTabuList.h>
|
||||
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 <list>
|
||||
#include <iterator>
|
||||
|
||||
#include "moTabuList.h"
|
||||
#include <moTabuList.h>
|
||||
|
||||
//! Class describing a move tabu list with a limited memory.
|
||||
template <class M>
|
||||
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<M>::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<M>::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<M>::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<M> 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<M> tabuList;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,160 +1,159 @@
|
|||
/*
|
||||
* <moSimpleSolutionTabuList.h>
|
||||
* 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
|
||||
*
|
||||
<moSimpleSolutionTabuList.h>
|
||||
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 <list>
|
||||
#include <iterator>
|
||||
|
||||
#include "moTabuList.h"
|
||||
#include <moTabuList.h>
|
||||
|
||||
//! Class describing a solution tabu list with limited length.
|
||||
template <class M>
|
||||
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<EOT>::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<EOT>::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<EOT>::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<EOT> 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<EOT> tabuList;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,58 +1,58 @@
|
|||
/*
|
||||
* <moSolContinue.h>
|
||||
* 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
|
||||
*
|
||||
<moSolContinue.h>
|
||||
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 <eoFunctor.h>
|
||||
#include <stdexcept>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,143 +1,142 @@
|
|||
/*
|
||||
* <moSteadyFitSolContinue.h>
|
||||
* 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
|
||||
*
|
||||
<moSteadyFitSolContinue.h>
|
||||
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 <moSolContinue.h>
|
||||
|
||||
//! 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
|
||||
|
|
|
|||
|
|
@ -1,169 +1,151 @@
|
|||
/*
|
||||
* <moTS.h>
|
||||
* 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
|
||||
*
|
||||
<moTS.h>
|
||||
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 <eoOp.h>
|
||||
#include <eoEvalFunc.h>
|
||||
|
||||
#include "moAlgo.h"
|
||||
#include "moSolContinue.h"
|
||||
|
||||
#include "moMoveExpl.h"
|
||||
#include "moTSMoveLoopExpl.h"
|
||||
|
||||
#include <moAlgo.h>
|
||||
#include <moSolContinue.h>
|
||||
#include <moTSMoveLoopExpl.h>
|
||||
|
||||
//! Tabu Search (TS)
|
||||
/*!
|
||||
Generic algorithm that describes a tabu search.
|
||||
*/
|
||||
template < class M > class moTS:public moAlgo < typename M::EOType >
|
||||
*/
|
||||
template < class M >
|
||||
class moTS:public moAlgo < typename M::EOType >
|
||||
{
|
||||
//!Alias for the type
|
||||
typedef typename M::EOType EOT;
|
||||
|
||||
//!Alias for the fitness
|
||||
typedef typename EOT::Fitness Fitness;
|
||||
|
||||
public:
|
||||
|
||||
//!Constructor of a moTS specifying all the boxes
|
||||
/*!
|
||||
In this constructor, a moTSMoveLoopExpl is instanciated.
|
||||
|
||||
\param _move_initializer The move initializer.
|
||||
\param _next_move_generator The neighbourhood explorer.
|
||||
\param _incremental_evaluation The (generally) efficient evaluation.
|
||||
\param _tabu_list The tabu list.
|
||||
\param _aspiration_criterion An aspiration criterion.
|
||||
\param _continue The stopping criterion.
|
||||
\param _full_evaluation A full evaluation function.
|
||||
*/
|
||||
moTS (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator,
|
||||
moMoveIncrEval < M > & _incremental_evaluation, moTabuList < M > & _tabu_list,
|
||||
moAspirCrit < M > & _aspiration_criterion, moSolContinue < EOT > & _continue,
|
||||
eoEvalFunc < EOT > & _full_evaluation):
|
||||
move_explorer ( *new moTSMoveLoopExpl < M >(_move_initializer, _next_move_generator, _incremental_evaluation,
|
||||
_tabu_list,_aspiration_criterion) ),
|
||||
continu (_continue), full_evaluation (_full_evaluation)
|
||||
{}
|
||||
|
||||
//! Constructor with less parameters
|
||||
/*!
|
||||
The explorer is given in the parameters.
|
||||
|
||||
\param _move_explorer The explorer (generally different that a moTSMoveLoopExpl).
|
||||
\param _continue The stopping criterion.
|
||||
\param _full_evaluation A full evaluation function.
|
||||
*/
|
||||
moTS (moMoveExpl < M > & _move_explorer, moSolContinue < EOT > & _continue, eoEvalFunc < EOT > & _full_evaluation):
|
||||
move_explorer (_move_explorer), continu (_continue), full_evaluation (_full_evaluation)
|
||||
{}
|
||||
|
||||
//! Function which launchs the Tabu Search
|
||||
/*!
|
||||
Algorithm of the tabu search.
|
||||
As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm.
|
||||
For security a lock (pthread_mutex_t) is closed during the algorithm.
|
||||
|
||||
\param _solution a solution to improve.
|
||||
\return TRUE.
|
||||
*/
|
||||
bool operator ()(EOT & _solution)
|
||||
{
|
||||
M move;
|
||||
|
||||
EOT best_solution, new_solution;
|
||||
|
||||
//!Alias for the type
|
||||
typedef
|
||||
typename
|
||||
M::EOType
|
||||
EOT;
|
||||
if ( _solution.invalid () )
|
||||
{
|
||||
full_evaluation (_solution);
|
||||
}
|
||||
|
||||
best_solution=_solution;
|
||||
|
||||
//!Alias for the fitness
|
||||
typedef
|
||||
typename
|
||||
EOT::Fitness
|
||||
Fitness;
|
||||
// code used for avoiding warning because new_solution is indirectly initialized by move_expl.
|
||||
new_solution=_solution;
|
||||
|
||||
continu.init ();
|
||||
|
||||
public:
|
||||
do
|
||||
{
|
||||
move_explorer (_solution, new_solution);
|
||||
|
||||
// Updating the best solution found until now ?
|
||||
if (new_solution.fitness() > _solution.fitness())
|
||||
{
|
||||
best_solution = new_solution;
|
||||
}
|
||||
|
||||
_solution = new_solution;
|
||||
}
|
||||
while ( continu (_solution) );
|
||||
|
||||
//!Constructor of a moTS specifying all the boxes
|
||||
/*!
|
||||
In this constructor, a moTSMoveLoopExpl is instanciated.
|
||||
_solution = best_solution;
|
||||
|
||||
\param __move_init move initialisation
|
||||
\param __next_move neighborhood explorer
|
||||
\param __incr_eval efficient evaluation
|
||||
\param __tabu_list tabu list
|
||||
\param __aspir_crit aspiration criterion
|
||||
\param __cont stop criterion
|
||||
\param __full_eval full evaluation function
|
||||
*/
|
||||
moTS (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (*new moTSMoveLoopExpl < M >
|
||||
(__move_init, __next_move, __incr_eval, __tabu_list,
|
||||
__aspir_crit)), cont (__cont), full_eval (__full_eval)
|
||||
{}
|
||||
return true;
|
||||
}
|
||||
|
||||
//! Constructor with less parameters
|
||||
/*!
|
||||
The explorer is given in the parameters.
|
||||
private:
|
||||
|
||||
\param __move_expl the explorer (generally different that a moTSMoveLoopExpl)
|
||||
\param __cont stop criterion
|
||||
\param __full_eval full evaluation function
|
||||
*/
|
||||
moTS (moMoveExpl < M > &__move_expl, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl),
|
||||
cont (__cont),
|
||||
full_eval (__full_eval)
|
||||
{}
|
||||
//! Neighborhood explorer
|
||||
moMoveExpl < M > & move_explorer;
|
||||
|
||||
//! Function which launchs the Tabu Search
|
||||
/*!
|
||||
Algorithm of the tabu search.
|
||||
As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm.
|
||||
For security a lock (pthread_mutex_t) is closed during the algorithm.
|
||||
//! Stop criterion
|
||||
moSolContinue < EOT > & continu;
|
||||
|
||||
\param __sol a solution to improve.
|
||||
\return TRUE.
|
||||
*/
|
||||
bool operator ()(EOT & __sol)
|
||||
{
|
||||
if (__sol.invalid ())
|
||||
{
|
||||
full_eval (__sol);
|
||||
}
|
||||
|
||||
M move;
|
||||
|
||||
EOT best_sol = __sol, new_sol;
|
||||
|
||||
cont.init ();
|
||||
|
||||
do
|
||||
{
|
||||
|
||||
new_sol = __sol;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
move_expl (__sol, new_sol);
|
||||
|
||||
}
|
||||
catch (EmptySelection & __ex)
|
||||
{
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/* Updating the best solution
|
||||
found until now ? */
|
||||
if (new_sol.fitness () > __sol.fitness ())
|
||||
{
|
||||
best_sol = new_sol;
|
||||
}
|
||||
|
||||
__sol = new_sol;
|
||||
|
||||
}
|
||||
while (cont (__sol));
|
||||
|
||||
__sol = best_sol;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//! Neighborhood explorer
|
||||
moMoveExpl < M > &move_expl;
|
||||
|
||||
//! Stop criterion
|
||||
moSolContinue < EOT > &cont;
|
||||
|
||||
//! Full evaluation function
|
||||
eoEvalFunc < EOT > &full_eval;
|
||||
};
|
||||
//! Full evaluation function
|
||||
eoEvalFunc < EOT > & full_evaluation;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,157 +1,158 @@
|
|||
/*
|
||||
* <moTSMoveLoopExpl.h>
|
||||
* 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
|
||||
*
|
||||
<moTSMoveLoopExpl.h>
|
||||
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 __moTSMoveLoopExpl_h
|
||||
#define __moTSMoveLoopExpl_h
|
||||
#ifndef _moTSMoveLoopExpl_h
|
||||
#define _moTSMoveLoopExpl_h
|
||||
|
||||
#include "moMoveLoopExpl.h"
|
||||
|
||||
#include "moMoveInit.h"
|
||||
#include "moNextMove.h"
|
||||
#include "moMoveIncrEval.h"
|
||||
#include "moMoveSelect.h"
|
||||
|
||||
#include "moTabuList.h"
|
||||
#include "moAspirCrit.h"
|
||||
#include "moBestImprSelect.h"
|
||||
#include <moMoveLoopExpl.h>
|
||||
#include <moMoveInit.h>
|
||||
#include <moNextMove.h>
|
||||
#include <moMoveIncrEval.h>
|
||||
#include <moMoveSelect.h>
|
||||
#include <moTabuList.h>
|
||||
#include <moAspirCrit.h>
|
||||
#include <moBestImprSelect.h>
|
||||
|
||||
//! Explorer for a Tabu Search algorithm
|
||||
/*!
|
||||
It is used by a moTS.
|
||||
*/
|
||||
template < class M > class moTSMoveLoopExpl:public moMoveLoopExpl < M >
|
||||
*/
|
||||
template < class M >
|
||||
class moTSMoveLoopExpl:public moMoveLoopExpl < M >
|
||||
{
|
||||
//!Alias for the type
|
||||
typedef typename M::EOType EOT;
|
||||
|
||||
//!Alias for the fitness
|
||||
typedef typename M::EOType::Fitness Fitness;
|
||||
|
||||
public:
|
||||
|
||||
//!Constructor
|
||||
/*!
|
||||
\param _move_initializer The move initializer.
|
||||
\param _next_move_generator The neighbourhood explorer.
|
||||
\param _incremental_evaluation A (generally) efficient evaluation.
|
||||
\param _tabu_list The tabu list.
|
||||
\param _aspiration_criterion An aspiration criterion.
|
||||
*/
|
||||
moTSMoveLoopExpl (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator,
|
||||
moMoveIncrEval < M > & _incremental_evaluation, moTabuList < M > & _tabu_list,
|
||||
moAspirCrit < M > & _aspiration_criterion):
|
||||
move_initializer(_move_initializer), next_move_generator(_next_move_generator), incremental_evaluation(_incremental_evaluation),
|
||||
tabu_list(_tabu_list), aspiration_criterion(_aspiration_criterion)
|
||||
{
|
||||
tabu_list.init ();
|
||||
aspiration_criterion.init ();
|
||||
}
|
||||
|
||||
//!Procedure which lauches the exploration
|
||||
/*!
|
||||
The exploration continues while the chosen move is not in the tabu list
|
||||
or the aspiration criterion is true. If these 2 conditions are not true, the
|
||||
exploration stops if the move selector update function returns false.
|
||||
|
||||
//!Alias for the type
|
||||
typedef typename M::EOType EOT;
|
||||
\param _old_solution the initial solution
|
||||
\param _new_solution the new solution
|
||||
*/
|
||||
void operator () (const EOT & _old_solution, EOT & _new_solution)
|
||||
{
|
||||
M move, best_move;
|
||||
Fitness fitness, best_move_fitness;
|
||||
|
||||
//!Alias for the fitness
|
||||
typedef typename M::EOType::Fitness Fitness;
|
||||
bool move_is_tabu, aspiration_criterion_is_verified, selection_update_is_ok, has_next_move;
|
||||
|
||||
//At the begining, the new solution is equivalent to the old one.
|
||||
_new_solution=(EOT)_old_solution;
|
||||
|
||||
public:
|
||||
// Restarting the exploration of of the neighborhood !
|
||||
move_initializer (move, _old_solution);
|
||||
|
||||
//!Constructor
|
||||
/*!
|
||||
\param __move_init move initialisation
|
||||
\param __next_move neighborhood explorer
|
||||
\param __incr_eval efficient evaluation
|
||||
\param __tabu_list tabu list
|
||||
\param __aspir_crit aspiration criterion
|
||||
*/
|
||||
moTSMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit):
|
||||
move_init (__move_init),
|
||||
next_move (__next_move),
|
||||
incr_eval (__incr_eval),
|
||||
tabu_list (__tabu_list), aspir_crit (__aspir_crit)
|
||||
{
|
||||
move_selection.init( _old_solution.fitness() );
|
||||
|
||||
tabu_list.init ();
|
||||
aspir_crit.init ();
|
||||
}
|
||||
do
|
||||
{
|
||||
fitness = incremental_evaluation(move, _old_solution);
|
||||
|
||||
//!Procedure which lauches the exploration
|
||||
/*!
|
||||
The exploration continues while the chosen move is not in the tabu list
|
||||
or the aspiration criterion is true. If these 2 conditions are not true, the
|
||||
exploration stops if the move selector update function returns false.
|
||||
move_is_tabu = tabu_list(move, _old_solution);
|
||||
|
||||
\param __old_sol the initial solution
|
||||
\param __new_sol the new solution
|
||||
*/
|
||||
void operator () (const EOT & __old_sol, EOT & __new_sol)
|
||||
{
|
||||
aspiration_criterion_is_verified = aspiration_criterion(move, fitness);
|
||||
|
||||
M move;
|
||||
if( !move_is_tabu || aspiration_criterion_is_verified )
|
||||
{
|
||||
selection_update_is_ok = move_selection.update(move, fitness);
|
||||
}
|
||||
|
||||
has_next_move = next_move_generator(move, _old_solution);
|
||||
}
|
||||
while( has_next_move && selection_update_is_ok );
|
||||
|
||||
move_init (move, __old_sol); /* Restarting the exploration of
|
||||
of the neighborhood ! */
|
||||
move_selection(best_move, best_move_fitness);
|
||||
|
||||
move_select.init (__old_sol.fitness ());
|
||||
|
||||
do
|
||||
{
|
||||
|
||||
Fitness fit = incr_eval (move, __old_sol);
|
||||
|
||||
if (!tabu_list (move, __old_sol) || aspir_crit (move, fit))
|
||||
{
|
||||
if (!move_select.update (move, fit))
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
while (next_move (move, __old_sol));
|
||||
|
||||
M best_move;
|
||||
|
||||
Fitness best_move_fit;
|
||||
|
||||
move_select (best_move, best_move_fit);
|
||||
|
||||
best_move (__new_sol);
|
||||
__new_sol.fitness (best_move_fit);
|
||||
// Apply the best move.
|
||||
best_move(_new_solution);
|
||||
|
||||
// The fitness is set to avoid an additionnal fitness computation.
|
||||
_new_solution.fitness(best_move_fitness);
|
||||
|
||||
/* Removing moves that are
|
||||
no more tabu */
|
||||
tabu_list.update ();
|
||||
// Removing moves that are no more tabu.
|
||||
tabu_list.update ();
|
||||
|
||||
// Updating the tabu list
|
||||
tabu_list.add(best_move, _new_solution);
|
||||
}
|
||||
|
||||
// Updating the tabu list
|
||||
tabu_list.add (best_move, __new_sol);
|
||||
}
|
||||
private:
|
||||
|
||||
private:
|
||||
//! Move initialisation
|
||||
moMoveInit < M > & move_initializer;
|
||||
|
||||
//!Move initialisation
|
||||
moMoveInit < M > &move_init;
|
||||
//! Neighborhood explorer
|
||||
moNextMove < M > & next_move_generator;
|
||||
|
||||
//!Neighborhood explorer
|
||||
moNextMove < M > &next_move;
|
||||
//! Efficient evaluation
|
||||
moMoveIncrEval < M > & incremental_evaluation;
|
||||
|
||||
//!Efficient evaluation
|
||||
moMoveIncrEval < M > &incr_eval;
|
||||
//! Move selector
|
||||
moBestImprSelect < M > move_selection;
|
||||
|
||||
//!Move selector
|
||||
moBestImprSelect < M > move_select;
|
||||
//! Tabu list
|
||||
moTabuList < M > & tabu_list;
|
||||
|
||||
//!Tabu list
|
||||
moTabuList < M > &tabu_list;
|
||||
|
||||
//!Aspiration criterion
|
||||
moAspirCrit < M > &aspir_crit;
|
||||
};
|
||||
//! Aspiration criterion
|
||||
moAspirCrit < M > & aspiration_criterion;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,41 +1,40 @@
|
|||
/*
|
||||
* <moTabuList.h>
|
||||
* 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
|
||||
*
|
||||
<moTabuList.h>
|
||||
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 __moTabuList_h
|
||||
#define __moTabuList_h
|
||||
#ifndef _moTabuList_h
|
||||
#define _moTabuList_h
|
||||
|
||||
#include <eoFunctor.h>
|
||||
|
||||
|
|
@ -43,39 +42,34 @@
|
|||
/*!
|
||||
It is only a description, does nothing... A new object that herits from this class has to be defined in order
|
||||
to be used in a moTS.
|
||||
*/
|
||||
template < class M > class moTabuList:public eoBF < const M &, const typename
|
||||
M::EOType &,
|
||||
bool >
|
||||
{
|
||||
*/
|
||||
template < class M > class moTabuList: public eoBF < const M &, const typename M::EOType &, bool >
|
||||
{
|
||||
public:
|
||||
|
||||
public:
|
||||
//! Alias for the type
|
||||
typedef typename M::EOType EOT;
|
||||
//! Alias for the type
|
||||
typedef typename M::EOType EOT;
|
||||
|
||||
//! Procedure to add a move in the tabu list
|
||||
/*!
|
||||
The two parameters have not to be modified so they are constant parameters.
|
||||
|
||||
\param _move a new tabu move.
|
||||
\param _solution the origianl solution associated to this move.
|
||||
*/
|
||||
virtual void add(const M & _move, const EOT & _solution) = 0;
|
||||
|
||||
//! Procedure to add a move in the tabu list
|
||||
/*!
|
||||
The two parameters have not to be modified so they are constant parameters.
|
||||
|
||||
\param __move a new tabu move.
|
||||
\param __sol the origianl solution associated to this move.
|
||||
*/
|
||||
virtual void
|
||||
add (const M & __move, const EOT & __sol) = 0;
|
||||
|
||||
//! Procedure that updates the tabu list content.
|
||||
/*!
|
||||
Generally, a counter associated to each saved move is decreased by one.
|
||||
*/
|
||||
virtual void
|
||||
update () = 0;
|
||||
|
||||
//! Procedure which initialises the tabu list.
|
||||
/*!
|
||||
Can be useful if the data structure needs to be allocated before being used.
|
||||
*/
|
||||
virtual void
|
||||
init () = 0;
|
||||
};
|
||||
//! Procedure that updates the tabu list content.
|
||||
/*!
|
||||
Generally, a counter associated to each saved move is decreased by one.
|
||||
*/
|
||||
virtual void update () = 0;
|
||||
|
||||
//! Procedure which initialises the tabu list.
|
||||
/*!
|
||||
Can be useful if the data structure needs to be allocated before being used.
|
||||
*/
|
||||
virtual void init () = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue