[Paradiseo-help] Problème avec moeo et une définition de gène spécifique

paradiseo-help paradiseo-help at lists.gforge.inria.fr
Lun 28 Avr 13:26:15 CEST 2008


Jerome Desmet a écrit :
> Bonjour,
>
> Je suis actuellement occuper à travailler avec Paradiseo-moeo pour mon 
> TFE.
>
> Il se trouve que j'ai un problème à la compilation sans doute à cause 
> de mon genotype particulier. En effet celui-ci est composé de gènes 
> spécifiques formant une classe à eux seuls. 
>
> Pour etre clair, le genotype est un vecteur de Gene lesquels sont une 
> classe à part.
>
> Dans moeo je fais dériver le génotype utilisé de  moeoVector < 
> moeoFlieObjectiveVector , double , double , FL::Gene >
> /
> /
> /Les erreurs suivantes apparaissent: /
>
> /
> /usr/include/c++/4.0.0/bits/stream_iterator.h:196: error: no match for 
> 'operator<<' in '*((std::ostream_iterator<FL::Gene, char, 
> std::char_traits<char> >*)this)->std::ostream_iterator<FL::Gene, char, 
> std::char_traits<char> >::_M_stream << __value'/
>
> /
> /
> /
> /
> //Users/Jerome/paradiseo-1.1/paradiseo-moeo/src/core/moeoVector.h:137: 
> error: no match for 'operator>>' in '_is >> atom'/
>
> /
>
>
> Ayant cherché, il semble que atom est un objet AtomType templatisé par 
> mon Gene.
>
> Je suppose donc que le problème vient du pendant eo de printOn(...) et 
> readFrom(...) pour le génotype.
>
> Ayant tenté de définir les opérateurs >> et <<, je n'arrive toujours 
> pas à compiler. Auriez-vu un exemple à me fournir avec un gène 
> représenté par une classe autre que double int etc et donc nécessitant 
> la définition de ces opérateurs?
>
> Je vous remercie fortement d'avance,
>
> Jérôme Desmet
>
>
> /
>
>
> /
> ------------------------------------------------------------------------
>
> _______________________________________________
> Paradiseo-help mailing list
> Paradiseo-help at lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/paradiseo-help
>   
Bonjour,

Il faut que vous définissiez, dans votre classe "Gene" les opérateurs 
"<<" et ">>" afin d'écrire ou de lire le contenu d'un gène.
Par exemple, si votre gène ne contient qu'un seul entier "toto" :

std::ostream& operator<<(std::ostream & os, const Gene & g)
{
   os << g.toto;
   return os;
}

std::istream& operator>>(std::istream & is, Gene & g)
{
    int value;
    is >> value;
    g.toto = value;
    return is;
}

Ces deux fonctions sont utilisées dans les fonctions "printOn" et 
"readFrom" de chaque objet EO ou MOEO.

Cordialement,
ParadisEO team




Plus d'informations sur la liste de diffusion Paradiseo-help