diff --git a/trunk/paradiseo-peo/src/core/eoVector_mesg.h b/trunk/paradiseo-peo/src/core/eoVector_mesg.h index 13675588b..733dfe1ed 100644 --- a/trunk/paradiseo-peo/src/core/eoVector_mesg.h +++ b/trunk/paradiseo-peo/src/core/eoVector_mesg.h @@ -38,10 +38,13 @@ #define __eoVector_mesg_h #include + #include +#include #include "messaging.h" + template void pack (const eoVector & __v) { @@ -110,6 +113,8 @@ template void pack (const eoVectorParticle pack (__v.velocities[i]); } + + template void unpack (eoVectorParticle & __v) { @@ -140,6 +145,107 @@ template void unpack (eoVectorParticle & _ unpack (__v.velocities[i]); } + +template void unpack (moeoObjectiveVector _objVec) +{ + unsigned int len; + + unpack (len); + _objVec.resize(len); + for (unsigned i = 0 ; i < len; i ++) + unpack (_objVec[i]); +} + +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 + { + unpack(_v.objectiveVector()); + } + unpack (len); + _v.resize (len); + for (unsigned i = 0 ; i < len; i ++) + unpack (_v [i]); +} + + + +template void pack (const moeoObjectiveVector & _objVec) +{ +// unsigned int len; + //typedef typename moeoVector::ObjectiveVector ObjectiveVector; +// moeoObjectiveVector object; +// object=_Ov; + unsigned int len = _objVec.nObjectives(); + pack(len); + for (unsigned i=0; i 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 unpack (moeoVector &_v) { unsigned valid; @@ -214,5 +320,6 @@ template void pack (moeoVector &_ pack (object[i]); } } +*/ #endif