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

/magnus/back_end/Genetic/include/TwoCommSolver.h

Go to the documentation of this file.
00001 /*
00002  *   $Id$
00003  */
00004  
00005 // Copyright (C) 1998 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 //
00008 // Contents: Definition of TwoCommSolver
00009 //
00010 // Principal Author: Dmitry Bormotov
00011 //
00012 // Status: in progress
00013 //
00014 // Revision History:
00015 //
00016 
00017 
00018 #ifndef _TwoCommSolver_h_
00019 #define _TwoCommSolver_h_
00020 
00021 #include "RandomNumbers.h"
00022 #include "FreeGroup.h"
00023 #include "Config.h"
00024 
00025 
00026 // ---------------------------- TwoCommSolver ------------------------------ //
00027 
00028 
00029 class TwoCommSolver
00030 {
00031 
00032 public:
00033   
00034   /////////////////////////////////////////////////////////////////////////
00035   //                                                                     //
00036   // Constructors:                                                       //
00037   //                                                                     //
00038   /////////////////////////////////////////////////////////////////////////
00039   
00040   TwoCommSolver( FreeGroup F );
00041   
00042   // copy constructor supplied by compiler.
00043   
00044   ~TwoCommSolver( );
00045   
00046 
00047   /////////////////////////////////////////////////////////////////////////
00048   //                                                                     //
00049   // Accessors:                                                          //
00050   //                                                                     //
00051   /////////////////////////////////////////////////////////////////////////
00052 
00053   bool isProductOfTwoComms( Word r, Word& x1, Word& x2,
00054                             Word& y1, Word& y2,
00055                             ostream* out = NULL );
00056        
00057 
00058   /////////////////////////////////////////////////////////////////////////
00059   //                                                                     //
00060   // OI:                                                                 //
00061   //                                                                     //
00062   /////////////////////////////////////////////////////////////////////////
00063 
00064 
00065 private:
00066 
00067   /////////////////////////////////////////////////////////////////////////
00068   //                                                                     //
00069   // Private functions:                                                  //
00070   //                                                                     //
00071   /////////////////////////////////////////////////////////////////////////
00072 
00073   Map getSolution( const Word& u, int& eqInd, int& conjInd,
00074                    ostream* out = NULL );
00075   // returns a solution for equation u found by genetic algorithm
00076 
00077   Word getImage( Map M, Map solution, int ind, int num );
00078 
00079   Word mutate( const Word& u );
00080 
00081   int randomGen( );
00082   
00083   Word randomWord( ); 
00084   
00085   Word crossover( const Word& u, const Word& v );
00086 
00087   int fitness( Word u, Word v, int& ) const;
00088 
00089   /////////////////////////////////////////////////////////////////////////
00090   //                                                                     //
00091   // Data members:                                                       //
00092   //                                                                     //
00093   /////////////////////////////////////////////////////////////////////////
00094   
00095   FreeGroup theGroup;
00096   GHNConfig cfg;
00097   VectorOf<Chars> *varNames;
00098   int numOfVars, numOfConsts, numOfEq;
00099   bool keepDetails;
00100   UniformRandom r;
00101   int maxWordLen;
00102   Word *equation;
00103   Chars popFile;
00104 };
00105 
00106 #endif
00107 
00108 
00109 
00110 
00111 

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