Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

/magnus/back_end/Genetic/include/GA.h

Go to the documentation of this file.
00001 /*
00002  *   $Id$
00003  */
00004  
00005 // Copyright (C) 1999 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 //
00008 // Contents: Definition of class GA
00009 //
00010 // Principal Author: Dmitry Bormotov
00011 //
00012 // Status: in progress
00013 //
00014 // Description:
00015 //
00016 // Revision History:
00017 //
00018 
00019 #ifndef _GA_H_
00020 #define _GA_H_
00021 
00022 
00023 #include "RandomNumbers.h"
00024 #include "GAConfig.h"
00025 #include "PM.h"
00026 
00027 
00028 // ---------------------------------- GA ----------------------------------- //
00029 
00030 
00031 class GA
00032 {
00033 
00034 public:
00035 
00036   /////////////////////////////////////////////////////////////////////////
00037   //                                                                     //
00038   // Constructors:                                                       //
00039   //                                                                     //
00040   /////////////////////////////////////////////////////////////////////////
00041   
00042   GA( const GAConfig& GAC );
00043 
00044   GA::~GA( );
00045 
00046   // copy constructor and operator '=' are hidden (not implemented)
00047 
00048 
00049   /////////////////////////////////////////////////////////////////////////
00050   //                                                                     //
00051   // Abstract functions:                                                 //
00052   //                                                                     //
00053   /////////////////////////////////////////////////////////////////////////
00054 
00055   virtual void initPopulation( ) = 0;
00056   // must be called before run(), must initialize the population
00057   // with instances of *aPM, where aPM is a class that is derived from PM
00058 
00059   virtual int fitness( const PM* pm ) = 0;
00060   // fitness function
00061 
00062 
00063   /////////////////////////////////////////////////////////////////////////
00064   //                                                                     //
00065   // Hook functions:                                                     //
00066   //                                                                     //
00067   /////////////////////////////////////////////////////////////////////////
00068 
00069 
00070   /////////////////////////////////////////////////////////////////////////
00071   //                                                                     //
00072   // Accessors:                                                          //
00073   //                                                                     //
00074   /////////////////////////////////////////////////////////////////////////
00075 
00076   void computeFitness( );
00077 
00078   void adjustFitness( );
00079 
00080   void doCrossover( );
00081 
00082   void doMutation( );
00083 
00084   void doReplacement( );
00085 
00086 
00087 private:
00088 
00089   /////////////////////////////////////////////////////////////////////////
00090   //                                                                     //
00091   // Abstract private functions:                                         //
00092   //                                                                     //
00093   /////////////////////////////////////////////////////////////////////////
00094 
00095 
00096   /////////////////////////////////////////////////////////////////////////
00097   //                                                                     //
00098   // Other private functions:                                            //
00099   //                                                                     //
00100   /////////////////////////////////////////////////////////////////////////
00101 
00102   // copy constructor and operator '=' are hidden (not implemented)
00103   
00104   GA( const GA& );
00105 
00106   GA& operator = ( const GA& );
00107 
00108 
00109   /////////////////////////////////////////////////////////////////////////
00110   //                                                                     //
00111   // Data members:                                                       //
00112   //                                                                     //
00113   /////////////////////////////////////////////////////////////////////////
00114 
00115 protected:  
00116 
00117   const GAConfig& gac;
00118   PM **pop, **newPop;
00119   int popSize;
00120   int *fit, *copyFit;
00121   int minFit, maxFit, minFitInd;
00122   bool bFirstGen;
00123   UniformRandom r;
00124 
00125 private:
00126   
00127 };
00128 
00129 #endif

Generated at Tue Jun 19 09:49:35 2001 for Magnus Classes by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001