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

@ -2,7 +2,7 @@
#define moFullEvalByCopy_H #define moFullEvalByCopy_H
#include <eoEvalFunc.h> #include <eoEvalFunc.h>
#include <moEval.h> #include <eval/moEval.h>
/** /**
@ -12,8 +12,8 @@ template<class Neighbor>
class moFullEvalByCopy : public moEval<Neighbor> class moFullEvalByCopy : public moEval<Neighbor>
{ {
public: public:
using moEval<Neighbor>::EOT EOT; typedef typename moEval<Neighbor>::EOT EOT;
using moEval<Neighbor>::Fitness Fitness; typedef typename moEval<Neighbor>::Fitness Fitness;
/** /**
* Ctor * Ctor
@ -31,7 +31,7 @@ public:
// tmp solution // tmp solution
EOT tmp(_sol); EOT tmp(_sol);
// move tmp solution wrt _neighbor // move tmp solution wrt _neighbor
_neighbor.(tmp); _neighbor.move(tmp);
// eval copy // eval copy
tmp.invalidate(); tmp.invalidate();
eval(tmp); eval(tmp);

View file

@ -27,24 +27,27 @@ public:
*/ */
void operator()(EOT & _sol, BackableNeighbor & _neighbor) void operator()(EOT & _sol, BackableNeighbor & _neighbor)
{ {
// tmp fitness value of the current solution // tmp fitness value of the current solution
Fitness tmpFit; Fitness tmpFit;
// save current fitness value // save current fitness value
tmpFit = _sol.fitness(); tmpFit = _sol.fitness();
// move the current solution wrt _neighbor // move the current solution wrt _neighbor
_neighbor.move(_sol); _neighbor.move(_sol);
// eval the modified solution
_sol.invalidate();
eval(_sol);
// set the fitness value to the neighbor
_neighbor.fitness(_sol.fitness());
// move the current solution back
_neighbor.moveBack(_sol);
// set the fitness back
_sol.fitness(tmpFit);
// eval the modified solution
_sol.invalidate();
eval(_sol);
// set the fitness value to the neighbor
_neighbor.fitness(_sol.fitness());
// move the current solution back
_neighbor.moveBack(_sol);
// set the fitness back
_sol.fitness(tmpFit);
} }