Add one constructor to moTS
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1897 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
4a9ee864d3
commit
9e804090fd
2 changed files with 43 additions and 13 deletions
|
|
@ -36,6 +36,7 @@ Contact: paradiseo-help@lists.gforge.inria.fr
|
|||
#include <eoOp.h>
|
||||
#include <neighborhood/moDummyNeighbor.h>
|
||||
#include <perturb/moMonOpPerturb.h>
|
||||
#include <perturb/moPerturbation.h>
|
||||
#include <acceptCrit/moAlwaysAcceptCrit.h>
|
||||
#include <eval/moEval.h>
|
||||
#include <eoEvalFunc.h>
|
||||
|
|
@ -44,14 +45,15 @@ Contact: paradiseo-help@lists.gforge.inria.fr
|
|||
/**
|
||||
* Iterated Local Search
|
||||
*/
|
||||
template<class Neighbor>
|
||||
class moILS: public moLocalSearch<moDummyNeighbor<typename Neighbor::EOT> >
|
||||
template<class Neighbor, class NeighborLO = moDummyNeighbor<typename Neighbor::EOT> >
|
||||
class moILS: public moLocalSearch< NeighborLO >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef typename Neighbor::EOT EOT;
|
||||
typedef moNeighborhood<Neighbor> Neighborhood ;
|
||||
|
||||
|
||||
/**
|
||||
* Basic constructor for Iterated Local Search
|
||||
* @param _ls the local search to iterates
|
||||
|
|
@ -60,7 +62,7 @@ public:
|
|||
* @param _nbIteration the time limit for search
|
||||
*/
|
||||
moILS(moLocalSearch<Neighbor>& _ls, eoEvalFunc<EOT>& _fullEval, eoMonOp<EOT>& _op, unsigned int _nbIteration):
|
||||
moLocalSearch<moDummyNeighbor<EOT> >(explorer, iterCont, _fullEval),
|
||||
moLocalSearch< moDummyNeighbor<EOT> >(explorer, iterCont, _fullEval),
|
||||
iterCont(_nbIteration),
|
||||
defaultPerturb(_op, _fullEval),
|
||||
explorer(_ls, defaultPerturb, defaultAccept)
|
||||
|
|
@ -73,8 +75,8 @@ public:
|
|||
* @param _op the operator used to perturb solution
|
||||
* @param _cont a continuator
|
||||
*/
|
||||
moILS(moLocalSearch<Neighbor>& _ls, eoEvalFunc<EOT>& _fullEval, eoMonOp<EOT>& _op, moContinuator<moDummyNeighbor<EOT> >& _cont):
|
||||
moLocalSearch<moDummyNeighbor<EOT> >(explorer, _cont, _fullEval),
|
||||
moILS(moLocalSearch<Neighbor>& _ls, eoEvalFunc<EOT>& _fullEval, eoMonOp<EOT>& _op, moContinuator<NeighborLO>& _cont):
|
||||
moLocalSearch< NeighborLO >(explorer, _cont, _fullEval),
|
||||
iterCont(0),
|
||||
defaultPerturb(_op, _fullEval),
|
||||
explorer(_ls, defaultPerturb, defaultAccept)
|
||||
|
|
@ -88,13 +90,15 @@ public:
|
|||
* @param _perturb a perturbation operator
|
||||
* @param _accept a acceptance criteria
|
||||
*/
|
||||
moILS(moLocalSearch<Neighbor>& _ls, eoEvalFunc<EOT>& _fullEval, moContinuator<moDummyNeighbor<EOT> >& _cont, moMonOpPerturb<Neighbor>& _perturb, moAcceptanceCriterion<Neighbor>& _accept):
|
||||
moLocalSearch<moDummyNeighbor<EOT> >(explorer, _cont, _fullEval),
|
||||
// moILS(moLocalSearch<Neighbor>& _ls, eoEvalFunc<EOT>& _fullEval, moContinuator<moDummyNeighbor<EOT> >& _cont, moMonOpPerturb<Neighbor>& _perturb, moAcceptanceCriterion<Neighbor>& _accept):
|
||||
// moILS(moLocalSearch<Neighbor>& _ls, eoEvalFunc<EOT>& _fullEval, moContinuator<NeighborLO>& _cont, moPerturbation<Neighbor>& _perturb):
|
||||
moILS(moLocalSearch<Neighbor>& _ls, eoEvalFunc<EOT>& _fullEval, moContinuator<NeighborLO>& _cont, moPerturbation<Neighbor>& _perturb, moAcceptanceCriterion<Neighbor>& _accept):
|
||||
moLocalSearch<NeighborLO>(explorer, _cont, _fullEval),
|
||||
iterCont(0),
|
||||
defaultPerturb(dummyOp, _fullEval),
|
||||
explorer(_ls, _perturb, _accept)
|
||||
{}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
class dummmyMonOp: public eoMonOp<EOT> {
|
||||
|
|
@ -102,11 +106,12 @@ private:
|
|||
bool operator()(EOT&) {
|
||||
return false;
|
||||
}
|
||||
}dummyOp;
|
||||
moIterContinuator<moDummyNeighbor<EOT> > iterCont;
|
||||
moMonOpPerturb<Neighbor> defaultPerturb;
|
||||
moAlwaysAcceptCrit<Neighbor> defaultAccept;
|
||||
moILSexplorer<Neighbor> explorer;
|
||||
} dummyOp;
|
||||
|
||||
moIterContinuator<moDummyNeighbor<EOT> > iterCont;
|
||||
moMonOpPerturb<Neighbor> defaultPerturb;
|
||||
moAlwaysAcceptCrit<Neighbor> defaultAccept;
|
||||
moILSexplorer< Neighbor , NeighborLO > explorer; // inherits from moNeighborhoodExplorer< NeighborLO >
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -93,6 +93,31 @@ public:
|
|||
explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp, _tabuList, dummyIntensification, dummyDiversification, defaultAspiration)
|
||||
{}
|
||||
|
||||
/**
|
||||
* General constructor for a tabu search
|
||||
* @param _neighborhood the neighborhood
|
||||
* @param _fullEval the full evaluation function
|
||||
* @param _eval neighbor's evaluation function
|
||||
* @param _neighborComp a comparator between 2 neighbors
|
||||
* @param _solNeighborComp a solution vs neighbor comparator
|
||||
* @param _cont an external continuator
|
||||
* @param _tabuList the tabu list
|
||||
* @param _intensification the intensification strategy
|
||||
* @param _diversification the diversification strategy
|
||||
* @param _aspiration the aspiration Criteria
|
||||
*/
|
||||
moTS(Neighborhood& _neighborhood,
|
||||
eoEvalFunc<EOT>& _fullEval,
|
||||
moEval<Neighbor>& _eval,
|
||||
moContinuator<Neighbor>& _cont,
|
||||
moTabuList<Neighbor>& _tabuList,
|
||||
moAspiration<Neighbor>& _aspiration):
|
||||
moLocalSearch<Neighbor>(explorer, _cont, _fullEval),
|
||||
timeCont(0),
|
||||
tabuList(0,0),
|
||||
explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp, _tabuList, dummyIntensification, dummyDiversification, _aspiration)
|
||||
{}
|
||||
|
||||
/**
|
||||
* General constructor for a tabu search
|
||||
* @param _neighborhood the neighborhood
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue