00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef EOSIGBINARYFLIGHT_H
00012 #define EOSIGBINARYFLIGHT_H
00013
00014
00015 #include <eoBinaryFlight.h>
00016
00017
00018
00019
00028 template < class POT > class eoSigBinaryFlight:public eoBinaryFlight < POT >
00029 {
00030
00031 public:
00032
00036 eoSigBinaryFlight (){}
00037
00038
00042 double sigmoid( double _value)
00043 {
00044 return(1/(1+ exp(- _value)));
00045
00046 }
00047
00052 void operator () (POT & _po)
00053 {
00054
00055 for (unsigned j = 0; j < _po.size (); j++)
00056 {
00057 double sigma=rng.uniform(1);
00058
00059 if (sigma < sigmoid(_po.velocities[j]))
00060 _po[j]=1;
00061 else
00062 _po[j]=0;
00063 }
00064
00065
00066 _po.invalidate();
00067 }
00068 };
00069
00070
00071
00072 #endif