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
This commit is contained in:
jhumeau 2010-05-27 12:25:40 +00:00
commit 6dca6d0ed4
3 changed files with 137 additions and 65 deletions

View file

@ -156,45 +156,45 @@ template <class Traits, class Type> void unpack (moeoObjectiveVector<Traits,Type
unpack (_objVec[i]); unpack (_objVec[i]);
} }
template <class ObjectiveVector, class Fitness, class Diversity, class Type> void unpack(moeoVector <ObjectiveVector, Fitness, Diversity, Type> & _v) //template <class ObjectiveVector, class Fitness, class Diversity, class Type> void unpack(moeoVector <ObjectiveVector, Fitness, Diversity, Type> & _v)
{ //{
unsigned int valid; // unsigned int valid;
unsigned len; // unsigned len;
// unpack(valid); //// unpack(valid);
// if (! valid) //// if (! valid)
// _v.invalidateFitness(); //// _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 // else
// { // {
// Fitness fit; // unpack(_v.objectiveVector());
// unpack (fit); // }
// std::cerr << "fit = " << fit << std::endl; // unpack (len);
// _v.fitness (fit); // _v.resize (len);
// } // for (unsigned i = 0 ; i < len; i ++)
// unpack (_v [i]);
//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]);
}
@ -211,39 +211,111 @@ template <class Traits, class Type> void pack (const moeoObjectiveVector<Traits,
} }
template <class ObjectiveVector, class Fitness, class Diversity, class Type> void pack(const moeoVector <ObjectiveVector, Fitness, Diversity, Type> & _v) //template <class ObjectiveVector, class Fitness, class Diversity, class Type> void pack(const moeoVector <ObjectiveVector, Fitness, Diversity, Type> & _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 <class F, class T, class V, class W> void pack (moeoVector <F,T,V,W> &_v)
{ {
unsigned int len; if (_v.invalid())
//Pack fitness : in comment but maybe useful in the future pack((unsigned)0);
// 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 else
{ {
pack((unsigned int) 1); pack((unsigned)1);
pack(_v.objectiveVector()); pack (_v.fitness ());
} }
len = _v.size (); if (_v.invalidDiversity())
pack((unsigned)0);
else
{
pack((unsigned)1);
pack(_v.diversity());
}
unsigned len = _v.size ();
pack (len); pack (len);
for (unsigned i = 0 ; i < len; i ++) for (unsigned i = 0 ; i < len; i ++)
pack (_v[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 <class F, class T, class V, class W> void unpack (moeoVector <F,T,V,W> &_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 <class F, class T, class V, class W> void unpack (moeoVector <F,T,V,W> &_v) template <class F, class T, class V, class W> void unpack (moeoVector <F,T,V,W> &_v)

View file

@ -54,7 +54,7 @@ struct AbstractEntity
template < typename EntityType > operator EntityType& () template < typename EntityType > operator EntityType& ()
{ {
return ( dynamic_cast< Entity< EntityType >& >( *this ) ).entity; return ( reinterpret_cast< Entity< EntityType >& >( *this ) ).entity;
} }
}; };

View file

@ -129,7 +129,7 @@ void main_function(int argc, char **argv)
eoGenContinue<Problem> genCont(param.maxGen); // generation continuation eoGenContinue<Problem> genCont(param.maxGen); // generation continuation
eoEasyEA<Problem> gga(genCont, plainEval, select, transform, replace); eoEasyEA<Problem> gga(genCont, eval, select, transform, replace);
// PEO ADD // PEO ADD
peo :: init( argc, argv ); peo :: init( argc, argv );