From 6dca6d0ed480fb776f3624f914715e988c719a44 Mon Sep 17 00:00:00 2001 From: jhumeau Date: Thu, 27 May 2010 12:25:40 +0000 Subject: [PATCH] Debug pack unpack des moeoVector et changement d'un cast dynamic en reinterpret git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1834 331e1502-861f-0410-8da2-ba01fb791d7f --- trunk/paradiseo-peo/src/core/eoVector_mesg.h | 198 ++++++++++++------ .../paradiseo-peo/src/core/peoAbstractDefs.h | 2 +- trunk/paradiseo-peo/tutorial/Lesson3/main.cpp | 2 +- 3 files changed, 137 insertions(+), 65 deletions(-) diff --git a/trunk/paradiseo-peo/src/core/eoVector_mesg.h b/trunk/paradiseo-peo/src/core/eoVector_mesg.h index 733dfe1ed..094f39a34 100644 --- a/trunk/paradiseo-peo/src/core/eoVector_mesg.h +++ b/trunk/paradiseo-peo/src/core/eoVector_mesg.h @@ -156,45 +156,45 @@ template void unpack (moeoObjectiveVector void unpack(moeoVector & _v) -{ - unsigned int valid; - unsigned len; -// unpack(valid); -// if (! valid) -// _v.invalidateFitness(); +//template void unpack(moeoVector & _v) +//{ +// unsigned int valid; +// unsigned len; +//// unpack(valid); +//// if (! valid) +//// _v.invalidateFitness(); +//// else +//// { +//// Fitness fit; +//// unpack (fit); +//// std::cerr << "fit = " << fit << std::endl; +//// _v.fitness (fit); +//// } +// +// //Unpack fitness and diversity +// +//// unpack(valid); +//// if (! valid) +//// _v.invalidateDiversity(); +//// else +//// { +//// V diver; +//// unpack(diver); +//// _v.diversity(diver); +//// } +// //Unpack Objective Vector +// unpack(valid); +// if (! valid) +// _v.invalidateObjectiveVector(); // else // { -// Fitness fit; -// unpack (fit); -// std::cerr << "fit = " << fit << std::endl; -// _v.fitness (fit); -// } - - //Unpack fitness and diversity - -// unpack(valid); -// if (! valid) -// _v.invalidateDiversity(); -// else -// { -// V diver; -// unpack(diver); -// _v.diversity(diver); -// } - //Unpack Objective Vector - unpack(valid); - if (! valid) - _v.invalidateObjectiveVector(); - else - { - unpack(_v.objectiveVector()); - } - unpack (len); - _v.resize (len); - for (unsigned i = 0 ; i < len; i ++) - unpack (_v [i]); -} +// unpack(_v.objectiveVector()); +// } +// unpack (len); +// _v.resize (len); +// for (unsigned i = 0 ; i < len; i ++) +// unpack (_v [i]); +//} @@ -211,39 +211,111 @@ template void pack (const moeoObjectiveVector void pack(const moeoVector & _v) +//template void pack(const moeoVector & _v) +//{ +// unsigned int len; +////Pack fitness : in comment but maybe useful in the future +//// if (_v.invalidFitness()) +//// pack((unsigned int) 0); +//// else +//// { +//// pack((unsigned int) 1); +//// std::cerr << "FITENNESSS" << _v.fitness() << std::endl; +//// pack (_v.fitness()); +//// } +//// //Pack diversity +//// if (_v.invalidDiversity()) +//// pack((unsigned)0); +//// else +//// { +//// pack((unsigned)1); +//// pack(_v.diversity()); +//// } +// if (_v.invalidObjectiveVector()) +// pack((unsigned int) 0); +// else +// { +// pack((unsigned int) 1); +// pack(_v.objectiveVector()); +// } +// len = _v.size (); +// pack (len); +// for (unsigned i = 0 ; i < len; i ++) +// pack (_v[i]); +//} +template void pack (moeoVector &_v) { - unsigned int len; -//Pack fitness : in comment but maybe useful in the future -// if (_v.invalidFitness()) -// pack((unsigned int) 0); -// else -// { -// pack((unsigned int) 1); -// std::cerr << "FITENNESSS" << _v.fitness() << std::endl; -// pack (_v.fitness()); -// } -// //Pack diversity -// if (_v.invalidDiversity()) -// pack((unsigned)0); -// else -// { -// pack((unsigned)1); -// pack(_v.diversity()); -// } - if (_v.invalidObjectiveVector()) - pack((unsigned int) 0); + if (_v.invalid()) + pack((unsigned)0); else - { - pack((unsigned int) 1); - pack(_v.objectiveVector()); - } - len = _v.size (); + { + pack((unsigned)1); + pack (_v.fitness ()); + } + if (_v.invalidDiversity()) + pack((unsigned)0); + else + { + pack((unsigned)1); + pack(_v.diversity()); + } + unsigned len = _v.size (); pack (len); for (unsigned i = 0 ; i < len; i ++) pack (_v[i]); + if (_v.invalidObjectiveVector()) + pack((unsigned)0); + else + { + pack((unsigned)1); + F object; + object=_v.objectiveVector(); + len=object.nObjectives(); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (object[i]); + } } +template void unpack (moeoVector &_v) +{ + unsigned valid; + unpack(valid); + if (! valid) + _v.invalidate(); + else + { + T fit; + unpack (fit); + _v.fitness (fit); + } + unpack(valid); + if (! valid) + _v.invalidateDiversity(); + else + { + V diver; + unpack(diver); + _v.diversity(diver); + } + unsigned len; + unpack (len); + _v.resize (len); + for (unsigned i = 0 ; i < len; i ++) + unpack (_v [i]); + unpack(valid); + if (! valid) + _v.invalidateObjectiveVector(); + else + { + F object; + unpack (len); + object.resize(len); + for (unsigned i = 0 ; i < len; i ++) + unpack (object[i]); + _v.objectiveVector(object); + } +} /* template void unpack (moeoVector &_v) diff --git a/trunk/paradiseo-peo/src/core/peoAbstractDefs.h b/trunk/paradiseo-peo/src/core/peoAbstractDefs.h index db678ce9f..b9fa96c2c 100755 --- a/trunk/paradiseo-peo/src/core/peoAbstractDefs.h +++ b/trunk/paradiseo-peo/src/core/peoAbstractDefs.h @@ -54,7 +54,7 @@ struct AbstractEntity template < typename EntityType > operator EntityType& () { - return ( dynamic_cast< Entity< EntityType >& >( *this ) ).entity; + return ( reinterpret_cast< Entity< EntityType >& >( *this ) ).entity; } }; diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp index 1cba7e282..59198ec70 100755 --- a/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp @@ -129,7 +129,7 @@ void main_function(int argc, char **argv) eoGenContinue genCont(param.maxGen); // generation continuation - eoEasyEA gga(genCont, plainEval, select, transform, replace); + eoEasyEA gga(genCont, eval, select, transform, replace); // PEO ADD peo :: init( argc, argv );