Change the random walk explorer (nbStepMax dissappearts) and the constructor of moRandomWalk
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1944 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
c15e3e7a29
commit
9135968b0e
2 changed files with 18 additions and 23 deletions
|
|
@ -32,7 +32,7 @@ Contact: paradiseo-help@lists.gforge.inria.fr
|
||||||
|
|
||||||
#include <algo/moLocalSearch.h>
|
#include <algo/moLocalSearch.h>
|
||||||
#include <explorer/moRandomWalkExplorer.h>
|
#include <explorer/moRandomWalkExplorer.h>
|
||||||
#include <continuator/moTrueContinuator.h>
|
#include <continuator/moIterContinuator.h>
|
||||||
#include <eval/moEval.h>
|
#include <eval/moEval.h>
|
||||||
#include <eoEvalFunc.h>
|
#include <eoEvalFunc.h>
|
||||||
|
|
||||||
|
|
@ -59,8 +59,9 @@ public:
|
||||||
* @param _nbStepMax number of step of the walk
|
* @param _nbStepMax number of step of the walk
|
||||||
*/
|
*/
|
||||||
moRandomWalk(Neighborhood& _neighborhood, eoEvalFunc<EOT>& _fullEval, moEval<Neighbor>& _eval, unsigned _nbStepMax):
|
moRandomWalk(Neighborhood& _neighborhood, eoEvalFunc<EOT>& _fullEval, moEval<Neighbor>& _eval, unsigned _nbStepMax):
|
||||||
moLocalSearch<Neighbor>(explorer, trueCont, _fullEval),
|
moLocalSearch<Neighbor>(explorer, iterCont, _fullEval),
|
||||||
explorer(_neighborhood, _eval, _nbStepMax)
|
iterCont(_nbStepMax),
|
||||||
|
explorer(_neighborhood, _eval)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -68,17 +69,17 @@ public:
|
||||||
* @param _neighborhood the neighborhood
|
* @param _neighborhood the neighborhood
|
||||||
* @param _fullEval the full evaluation function
|
* @param _fullEval the full evaluation function
|
||||||
* @param _eval neighbor's evaluation function
|
* @param _eval neighbor's evaluation function
|
||||||
* @param _nbStepMax number of step of the walk
|
* @param _cont a user-defined continuator
|
||||||
* @param _cont an external continuator
|
|
||||||
*/
|
*/
|
||||||
moRandomWalk(Neighborhood& _neighborhood, eoEvalFunc<EOT>& _fullEval, moEval<Neighbor>& _eval, unsigned _nbStepMax, moContinuator<Neighbor>& _cont):
|
moRandomWalk(Neighborhood& _neighborhood, eoEvalFunc<EOT>& _fullEval, moEval<Neighbor>& _eval, moContinuator<Neighbor>& _cont):
|
||||||
moLocalSearch<Neighbor>(explorer, _cont, _fullEval),
|
moLocalSearch<Neighbor>(explorer, _cont, _fullEval),
|
||||||
explorer(_neighborhood, _eval, _nbStepMax)
|
iterCont(0),
|
||||||
|
explorer(_neighborhood, _eval)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// always true continuator
|
// the continuator to stop on a maximum number of step
|
||||||
moTrueContinuator<Neighbor> trueCont;
|
moIterContinuator<Neighbor> iterCont;
|
||||||
// the explorer of the random walk
|
// the explorer of the random walk
|
||||||
moRandomWalkExplorer<Neighbor> explorer;
|
moRandomWalkExplorer<Neighbor> explorer;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,11 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Explorer for a random walk
|
* Explorer for a random walk
|
||||||
|
*
|
||||||
|
* Choose at each step a random neighbor's solution
|
||||||
|
* So the neighborhood have to be "random"
|
||||||
|
*
|
||||||
|
* The number of steps of the walk is not limited in the explorer
|
||||||
*/
|
*/
|
||||||
template< class Neighbor >
|
template< class Neighbor >
|
||||||
class moRandomWalkExplorer : public moNeighborhoodExplorer<Neighbor>
|
class moRandomWalkExplorer : public moNeighborhoodExplorer<Neighbor>
|
||||||
|
|
@ -55,15 +60,12 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
* @param _neighborhood the neighborhood
|
* @param _neighborhood the neighborhood (which have to be random)
|
||||||
* @param _eval the evaluation function
|
* @param _eval the evaluation function
|
||||||
* @param _nbStep maximum number of step to do
|
|
||||||
*/
|
*/
|
||||||
moRandomWalkExplorer(Neighborhood& _neighborhood, moEval<Neighbor>& _eval, unsigned _nbStep) : moNeighborhoodExplorer<Neighbor>(_neighborhood, _eval), nbStep(_nbStep) {
|
moRandomWalkExplorer(Neighborhood& _neighborhood, moEval<Neighbor>& _eval) : moNeighborhoodExplorer<Neighbor>(_neighborhood, _eval) {
|
||||||
isAccept = false;
|
isAccept = false;
|
||||||
current=new Neighbor();
|
current=new Neighbor();
|
||||||
// number of step done
|
|
||||||
step = 0;
|
|
||||||
if (!neighborhood.isRandom()) {
|
if (!neighborhood.isRandom()) {
|
||||||
std::cout << "moRandomWalkExplorer::Warning -> the neighborhood used is not random" << std::endl;
|
std::cout << "moRandomWalkExplorer::Warning -> the neighborhood used is not random" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
@ -81,7 +83,6 @@ public:
|
||||||
* @param _solution unused solution
|
* @param _solution unused solution
|
||||||
*/
|
*/
|
||||||
virtual void initParam(EOT & _solution) {
|
virtual void initParam(EOT & _solution) {
|
||||||
step = 0;
|
|
||||||
isAccept = true;
|
isAccept = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -90,7 +91,6 @@ public:
|
||||||
* @param _solution unused solution
|
* @param _solution unused solution
|
||||||
*/
|
*/
|
||||||
virtual void updateParam(EOT & _solution) {
|
virtual void updateParam(EOT & _solution) {
|
||||||
step++;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -128,7 +128,7 @@ public:
|
||||||
* @return true there is some steps to do
|
* @return true there is some steps to do
|
||||||
*/
|
*/
|
||||||
virtual bool isContinue(EOT & _solution) {
|
virtual bool isContinue(EOT & _solution) {
|
||||||
return (step < nbStep) && isAccept ;
|
return isAccept ;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -154,12 +154,6 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// current number of step
|
|
||||||
unsigned int step;
|
|
||||||
|
|
||||||
// maximum number of steps to do
|
|
||||||
unsigned int nbStep;
|
|
||||||
|
|
||||||
//Pointer on the best and the current neighbor
|
//Pointer on the best and the current neighbor
|
||||||
Neighbor* current;
|
Neighbor* current;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue