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

/magnus/back_end/Genetic/include/GANagata.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 GANagata
00009 //
00010 // Principal Author: Dmitry Bormotov
00011 //
00012 // Status: in progress
00013 //
00014 // Description:
00015 //
00016 // Revision History:
00017 //
00018 
00019 
00020 #ifndef _GANagata_H_
00021 #define _GANagata_H_
00022 
00023 
00024 //#include "PMDebornoyWord.h"
00025 //#include "PMArray.h"
00026 #include "GA.h"
00027 #include "FreeGroup.h"
00028 //#include "Matrix.h"
00029 #include "PMPolynomial.h"
00030 //#include "Int2.h"
00031 #include "GAConfig.h"
00032 
00033 
00034 // -------------------------- GANagataConfig ------------------------------- //
00035 
00036 
00037 class GANagataConfig : public GAConfig
00038 {
00039 public:
00040   
00041   /////////////////////////////////////////////////////////////////////////
00042   //                                                                     //
00043   // Constructors:                                                       //
00044   //                                                                     //
00045   /////////////////////////////////////////////////////////////////////////
00046 
00047   GANagataConfig( int popSize = 50, 
00048                   int numOfGens = -1, 
00049                   int crossChance = 100, 
00050                   int mutChance = 100, 
00051                   ElitistSelectionType elitType = GAConfig::SIMPLE, 
00052                   bool fitScaling = true, 
00053                   int Report = 1, 
00054                   int FitnessPrint = 10,
00055                   int PopulationPrint = 100, 
00056                   int NumberOfVariables = 3,
00057                   Polynomial<Int2> aPolynomial 
00058                     = Polynomial<Int2>("x1 + x2^2,"), 
00059                   int MaximalCoefficient = 2, 
00060                   int MaximalPower = 5,
00061                   int MaximalNumberOfMonomials = 1 
00062                   );
00063  
00064   // copy constructor, destructor and operators =, == supplied by compiler.
00065 
00066 
00067   /////////////////////////////////////////////////////////////////////////
00068   //                                                                     //
00069   // Hook functions:                                                     //
00070   //                                                                     //
00071   /////////////////////////////////////////////////////////////////////////
00072 
00073   virtual bool setUserVariable( Chars varName, Chars value );
00074  
00075 
00076   /////////////////////////////////////////////////////////////////////////
00077   //                                                                     //
00078   // Accessors:                                                          //
00079   //                                                                     //
00080   /////////////////////////////////////////////////////////////////////////
00081 
00082   int numberOfVariables( ) const { return theNumberOfVariables; }
00083 
00084   Polynomial<Int2> polynomial( ) const { return thePolynomial; }
00085   
00086   int maximalCoefficient( ) const { return theMaximalCoefficient; }
00087 
00088   int maximalPower( ) const { return theMaximalPower; }
00089 
00090   int maximalNumberOfMonomials( ) const { return theMaximalNumberOfMonomials; }
00091 
00092 
00093   /////////////////////////////////////////////////////////////////////////
00094   //                                                                     //
00095   // OI:                                                                 //
00096   //                                                                     //
00097   /////////////////////////////////////////////////////////////////////////
00098  
00099   void printOn( ostream& ostr ) const;
00100 
00101 
00102 private:
00103 
00104   /////////////////////////////////////////////////////////////////////////
00105   //                                                                     //
00106   // Private functions:                                                  //
00107   //                                                                     //
00108   /////////////////////////////////////////////////////////////////////////
00109 
00110 
00111   /////////////////////////////////////////////////////////////////////////
00112   //                                                                     //
00113   // Data members:                                                       //
00114   //                                                                     //
00115   /////////////////////////////////////////////////////////////////////////
00116    
00117   int theNumberOfVariables;
00118   Polynomial<Int2> thePolynomial;
00119   int theMaximalCoefficient;
00120   int theMaximalPower;
00121   int theMaximalNumberOfMonomials;
00122 };
00123 
00124 
00125 // ----------------------------- GANagata --------------------------------- //
00126 
00127 
00128 class GANagata : public GA
00129 {
00130 
00131 public:
00132   
00133   /////////////////////////////////////////////////////////////////////////
00134   //                                                                     //
00135   // Constructors:                                                       //
00136   //                                                                     //
00137   /////////////////////////////////////////////////////////////////////////
00138   
00139   GANagata( const GANagataConfig& GAC );
00140   
00141   ~GANagata( );
00142   
00143   // copy constructor and operator '=' are hidden (not implemented)
00144 
00145 
00146   /////////////////////////////////////////////////////////////////////////
00147   //                                                                     //
00148   // Overriden abstract functions:                                       //
00149   //                                                                     //
00150   /////////////////////////////////////////////////////////////////////////
00151 
00152   void initPopulation( );
00153 
00154   int fitness( const PM* pm );
00155   
00156 
00157   /////////////////////////////////////////////////////////////////////////
00158   //                                                                     //
00159   // Accessors:                                                          //
00160   //                                                                     //
00161   /////////////////////////////////////////////////////////////////////////
00162 
00163   Polynomial<Int2> getSolution( ostream* o = NULL );
00164 
00165 
00166   /////////////////////////////////////////////////////////////////////////
00167   //                                                                     //
00168   // OI:                                                                 //
00169   //                                                                     //
00170   /////////////////////////////////////////////////////////////////////////
00171 
00172 
00173 private:
00174 
00175   /////////////////////////////////////////////////////////////////////////
00176   //                                                                     //
00177   // Private functions:                                                  //
00178   //                                                                     //
00179   /////////////////////////////////////////////////////////////////////////
00180 
00181   // copy constructor and operator '=' are hidden (not implemented)
00182   
00183   GANagata( const GANagata& );
00184 
00185   GANagata& operator = ( const GANagata& );
00186   
00187   void init( );
00188     
00189   bool checkForSolution( Polynomial<Int2>& res );
00190 
00191 
00192   /////////////////////////////////////////////////////////////////////////
00193   //                                                                     //
00194   // Data members:                                                       //
00195   //                                                                     //
00196   /////////////////////////////////////////////////////////////////////////
00197   
00198   ostream* out;
00199   PMPolyConfig PMPC;
00200   int g;
00201 };
00202 
00203 
00204 #endif

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