Full Eval modifié

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1656 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
jhumeau 2010-01-20 10:02:57 +00:00
commit 0c7e11a8b5
3 changed files with 24 additions and 21 deletions

View file

@ -0,0 +1,61 @@
#ifndef _fullEvalBitNeighbor_h
#define _fullEvalBitNeighbor_h
#include <neighborhood/moBitNeighbor.h>
#include <ga.h>
template< class Fitness >
class moFullEvalBitNeighbor : public moFullEvalByModif<moBitNeighbor<Fitness> >
{
public:
typedef eoBit<Fitness> EOType ;
using moBitNeighbor<Fitness>::bit ;
// empty constructor needed
moFullEvalBitNeighbor() : moBitNeighbor<Fitness>() { } ;
moFullEvalBitNeighbor(unsigned b) : moBitNeighbor<Fitness>(bit) { } ;
/*
make the evaluation of the current neighbor and update the information on this neighbor
*/
virtual void eval(EOType & solution) {
Fitness fit = solution.fitness();
solution[bit] = solution[bit]?false:true ;
(*fullEval)(solution);
fitness(solution.fitness());
solution[bit] = solution[bit]?false:true ;
solution.fitness(fit);
};
static void setFullEvalFunc(eoEvalFunc<EOType> & eval) {
fullEval = & eval ;
}
static eoEvalFunc<EOType> * fullEval ;
/** Return the class id.
* @return the class name as a std::string
*/
virtual std::string className() const { return "moFullEvalBitNeighbor"; }
};
template<class Fitness>
eoEvalFunc< eoBit<Fitness> > * moFullEvalBitNeighbor<Fitness>::fullEval = NULL ;
#endif
// Local Variables:
// coding: iso-8859-1
// mode: C++
// c-file-offsets: ((c . 0))
// c-file-style: "Stroustrup"
// fill-column: 80
// End: