00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _eoInitVirus_H
00028 #define _eoInitVirus_H
00029
00030 #include <algorithm>
00031
00032 #include <eoOp.h>
00033 #include <eoSTLFunctor.h>
00034 #include <utils/eoRndGenerators.h>
00035 #include <eoInit.h>
00036
00040 template <class FitT>
00041 class eoInitVirus: public eoInit< eoVirus<FitT> > {
00042 public:
00043
00044 eoInitVirus(unsigned _combien, eoRndGenerator<bool>& _generator )
00045 : combien(_combien), generator(_generator) {}
00046
00047 virtual void operator()( eoVirus<FitT>& chrom)
00048 {
00049 chrom.resize(combien);
00050 chrom.virResize(combien);
00051 std::generate(chrom.begin(), chrom.end(), generator);
00052 for ( unsigned i = 0; i < combien; i ++ ) {
00053 chrom.virusBitSet(i, generator() );
00054 }
00055 chrom.invalidate();
00056 }
00057
00058 private :
00059 unsigned combien;
00061 eoSTLF<bool> generator;
00062 };
00063
00065 template <class FitT>
00066 class eoInitVirus1bit: public eoInit< eoVirus<FitT> > {
00067 public:
00068
00069 eoInitVirus1bit(unsigned _combien, eoRndGenerator<bool>& _generator )
00070 : combien(_combien), generator(_generator) {}
00071
00072 virtual void operator()( eoVirus<FitT>& chrom)
00073 {
00074 chrom.resize(combien);
00075 chrom.virResize(combien);
00076 std::generate(chrom.begin(), chrom.end(), generator);
00077 chrom.virusBitSet(0, true );
00078 chrom.invalidate();
00079 }
00080
00081 private :
00082 unsigned combien;
00084 eoSTLF<bool> generator;
00085 };
00086 #endif