//
// gagenome.h - GAGenome and
// GABitStringGenome classes.
/////////////////////////////////////////////////
#ifndef GAGENOME_H
#define GAGENOME_H
#include "gaimport.h"
/////////////////////////////////////////////////
class GA_API GAGenome
{
public :
GAGenome();
virtual ~GAGenome();
GAGenome(const GAGenome &src){*this = src;};
GAGenome& operator = (const GAGenome& rhs);
//
// Genetic operators. Must be overriden.
virtual void Initialize(){};
virtual void Mutate( double /*mutation*/){};
virtual void CrossOver( GAGenome *genome){};
virtual double Evaluate(){return 0;};
//
// Keep track of obj funct,
// fitness and selection
// probability.
double m_obj;
double m_fitness;
double m_selProb;
int m_selected;
};
/////////////////////////////////////////////////
class GA_API GABitStringGenome:public GAGenome
{
public :
GABitStringGenome(int size=0);
virtual ~GABitStringGenome();
GABitStringGenome(const GABitStringGenome &src)
{*this = src;};
GABitStringGenome&
operator = (const GABitStringGenome& rhs);
//
// Initialization.
void SetSize(int size);
void Randomize();
//
// Simple bit string operations.
void Clear() ;
void Clear(int bit);
void Clear(int startBit, int length);
void Set() ;
void Set(int bit);
void Set(int startBit, int length);
bool IsSet(int i);
//
// Genetic operators.
virtual void Initialize(){Randomize();};
virtual void Mutate( double mfactor);
virtual void CrossOver( GAGenome* genome);
protected:
BYTE* m_bits;
int m_size;
};
GA_API int RandomNum(int maxValPlusOne);
GA_API void RandomSeed(int seed);
#endif
End of Listing