moeoBitVector.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
00002 
00003 //-----------------------------------------------------------------------------
00004 // moeoBitVector.h
00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
00006 /*
00007     This library...
00008 
00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
00010  */
00011 //-----------------------------------------------------------------------------
00012 
00013 #ifndef MOEOBITVECTOR_H_
00014 #define MOEOBITVECTOR_H_
00015 
00016 #include <core/moeoVector.h>
00017 
00021 template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity >
00022 class moeoBitVector : public moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool >
00023 {
00024 public:
00025 
00026     using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: begin;
00027     using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: end;
00028     using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: resize;
00029     using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: size;
00030 
00031 
00037     moeoBitVector(unsigned int _size = 0, bool _value = false) : moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool >(_size, _value)
00038     {}
00039 
00040 
00045     virtual void printOn(std::ostream & _os) const
00046     {
00047         MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::printOn(_os);
00048         _os << ' ';
00049         _os << size() << ' ';
00050         std::copy(begin(), end(), std::ostream_iterator<bool>(_os));
00051     }
00052 
00053 
00058     virtual void readFrom(std::istream & _is)
00059     {
00060         MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::readFrom(_is);
00061         unsigned int s;
00062         _is >> s;
00063         std::string bits;
00064         _is >> bits;
00065         if (_is)
00066         {
00067             resize(bits.size());
00068             std::transform(bits.begin(), bits.end(), begin(), std::bind2nd(std::equal_to<char>(), '1'));
00069         }
00070     }
00071 
00072 };
00073 
00074 #endif /*MOEOBITVECTOR_H_*/

Generated on Tue Jun 26 15:13:04 2007 for ParadisEO-MOEO by  doxygen 1.4.7