#ifndef moeoFullEvalByCopy_H #define moeoFullEvalByCopy_H #include #include /** * Evaluation by copy */ template class moeoFullEvalByCopy : public moEval { public: typedef typename moEval::EOT EOT; typedef typename moEval::Fitness Fitness; /** * Ctor * @param _eval the full evaluation object */ moeoFullEvalByCopy(eoEvalFunc & _eval) : eval(_eval) {} /** * Full evaluation of the neighbor by copy * @param _sol current solution * @param _neighbor the neighbor to be evaluated */ void operator()(EOT & _sol, Neighbor & _neighbor) { // tmp solution EOT tmp(_sol); // move tmp solution wrt _neighbor _neighbor.move(tmp); // eval copy tmp.invalidate(); eval(tmp); // set the fitness value to the neighbor _neighbor.fitness(tmp.objectiveVector()); } private: /** the full evaluation object */ eoEvalFunc & eval; }; #endif