Turned bonary_value into the onemax (not pow that exploded for even only
moderately small size of genome!) Turned it into a double (it was a float) as floats are dead and should dissappear
This commit is contained in:
parent
f41cd957c0
commit
d686b37c1f
4 changed files with 11 additions and 19 deletions
|
|
@ -1,25 +1,16 @@
|
|||
#include <eo>
|
||||
#include <algorithm>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/** Just a simple function that takes binary value of a chromosome and sets
|
||||
/** Just the simple function that takes binary value of a chromosome and sets
|
||||
the fitnes.
|
||||
@param _chrom A binary chromosome
|
||||
*/
|
||||
|
||||
template <class Chrom> float binary_value(const Chrom& _chrom)
|
||||
template <class Chrom> double binary_value(const Chrom& _chrom)
|
||||
{
|
||||
float sum = 0;
|
||||
for (unsigned i = 0; i < _chrom.size(); i++)
|
||||
if (_chrom[i])
|
||||
sum += pow(2, _chrom.size() - i - 1);
|
||||
return sum;
|
||||
double sum = 0.0;
|
||||
for (unsigned i=0; i<_chrom.size(); i++)
|
||||
sum += _chrom[i];
|
||||
return sum;
|
||||
}
|
||||
|
||||
struct BinaryValue
|
||||
{
|
||||
template <class Chrom> void operator()(Chrom& _chrom)
|
||||
{
|
||||
_chrom.fitness(binary_value(_chrom));
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include <iostream>
|
||||
|
||||
#include <ga/make_ga.h>
|
||||
#include <eoEvalFuncPtr.h>
|
||||
#include "binary_value.h"
|
||||
#include <apply.h>
|
||||
|
||||
|
|
@ -21,7 +22,7 @@ int main(int argc, char* argv[])
|
|||
//////////////////////////////////////////////////////
|
||||
|
||||
// The evaluation fn - encapsulated into an eval counter for output
|
||||
eoEvalFuncPtr<EOT, float> mainEval( binary_value<EOT> );
|
||||
eoEvalFuncPtr<EOT, double> mainEval( binary_value<EOT> );
|
||||
eoEvalFuncCounter<EOT> eval(mainEval);
|
||||
|
||||
// the genotype - through a genotype initializer
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ int main(int argc, char* argv[])
|
|||
//////////////////////////////////////////////////////
|
||||
|
||||
// The evaluation fn - encapsulated into an eval counter for output
|
||||
eoEvalFuncPtr<Indi, float> mainEval( binary_value<Indi>);
|
||||
eoEvalFuncPtr<Indi, double> mainEval( binary_value<Indi>);
|
||||
eoEvalFuncCounter<Indi> eval(mainEval);
|
||||
|
||||
// COnstruction of the distribution
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
typedef eoBit<float> Chrom;
|
||||
typedef eoBit<double> Chrom;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
|
|
|||
Reference in a new issue