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

/magnus/back_end/SMApps/include/GeneticProblems.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: GeneticProblems.h,v 1.2 1998/04/19 00:24:26 bormotov Exp $
00003  */
00004  
00005 // Copyright (C) 1997 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 //
00008 // Contents: Declaration of classes GeneticWPBase,GeneticWPArcer,GeneticWPCM
00009 //
00010 // Principal Author: Dmitry Bormotov
00011 //
00012 // Status: in progress
00013 //
00014 // Revision History:
00015 //
00016 
00017 
00018 #ifndef _GeneticProblems_h_
00019 #define _GeneticProblems_h_
00020 
00021 
00022 #include "Supervisor.h"
00023 #include "SMWord.h"
00024 #include "ARCer.h"
00025 
00026 
00027 // ---------------------------- GeneticWPBase ------------------------------ //
00028 
00029 
00030 struct GeneticWPBase {
00031 
00032   enum DetailType { NO_DETAILS, WORD, SET_OF_WORDS, COMMUTATORS }; 
00033 
00034   // Customizes details output for various supervisors.
00035   // You can certainly include types like WORD_PROBLEM, IS_ABELIAN, etc.
00036 
00037 };
00038 
00039 
00040 // --------------------------- GeneticWPArcer ------------------------------ //
00041 
00042 
00043 class GeneticWPArcer : public ARCer, public GeneticWPBase {
00044 
00045 public:
00046 
00047   /////////////////////////////////////////////////////////////////////////
00048   //                                                                     //
00049   // Constructors:                                                       //
00050   //                                                                     //
00051   /////////////////////////////////////////////////////////////////////////
00052 
00053   GeneticWPArcer( ComputationManager& );
00054 
00055   ~GeneticWPArcer( ) { delete file; }
00056 
00057 
00058   /////////////////////////////////////////////////////////////////////////
00059   //                                                                     //
00060   // Accessors:                                                          //
00061   //                                                                     //
00062   /////////////////////////////////////////////////////////////////////////
00063 
00064   void setArguments( const FPGroup&, const SetOf<Word>&, 
00065                      DetailType dt = NO_DETAILS );
00066 
00067   Trichotomy getRetValue() { return retValue; }
00068 
00069   Chars getFileName();
00070 
00071   // Inherited from ARCer:
00072   // bool takeControl( );
00073 
00074 
00075   /////////////////////////////////////////////////////////////////////////
00076   //                                                                     //
00077   // IPC interaction members:                                            //
00078   //                                                                     //
00079   /////////////////////////////////////////////////////////////////////////
00080 
00081   void runComputation( );
00082 
00083   void writeResults( ostream& );
00084 
00085   void readResults( istream& );
00086 
00087   
00088 private:
00089 
00090   /////////////////////////////////////////////////////////////////////////
00091   //                                                                     //
00092   // Private functions:                                                  //
00093   //                                                                     //
00094   /////////////////////////////////////////////////////////////////////////
00095 
00096   /////////////////////////////////////////////////////////////////////////
00097   //                                                                     //
00098   // Data Members:                                                       //
00099   //                                                                     //
00100   /////////////////////////////////////////////////////////////////////////
00101 
00102   FPGroup theGroup;
00103   SetOf<Word> theWords;
00104   Trichotomy retValue;
00105   DetailType dtype;
00106   File *file;
00107 };
00108 
00109 
00110 
00111 // ---------------------------- GeneticWPCM -------------------------------- //
00112 
00113 
00114 class GeneticWPCM : public ComputationManager, public GeneticWPBase {
00115 
00116 public:
00117 
00118   /////////////////////////////////////////////////////////////////////////
00119   //                                                                     //
00120   // Constructors:                                                       //
00121   //                                                                     //
00122   /////////////////////////////////////////////////////////////////////////
00123 
00124   GeneticWPCM( class Supervisor& boss );
00125 
00126   //  ~GeneticWPCM( );
00127 
00128   /////////////////////////////////////////////////////////////////////////
00129   //                                                                     //
00130   // Accessors:                                                          //
00131   //                                                                     //
00132   /////////////////////////////////////////////////////////////////////////
00133 
00134   void init( const FPGroup& group, const SetOf<Word> words, 
00135              DetailType dt = NO_DETAILS ); 
00136   // you must call this function before any other accessor
00137 
00138   Trichotomy areTrivial( ) { return tAreTrivial; }
00139 
00140   Chars getFileName() { return arcer.getFileName(); }
00141    
00142   /////////////////////////////////////////////////////////////////////////
00143   //                                                                     //
00144   // Control:                                                            //
00145   //                                                                     //
00146   /////////////////////////////////////////////////////////////////////////
00147 
00148   void takeControl( );         // overrides ComputationManager
00149 
00150   /////////////////////////////////////////////////////////////////////////
00151   //                                                                     //
00152   // State Transitions:                                                  //
00153   //                                                                     //
00154   /////////////////////////////////////////////////////////////////////////
00155 
00156   void start( );              // overrides ComputationManager
00157 
00158   void terminate( );          // overrides ComputationManager
00159 
00160 
00161 private:
00162 
00163   /////////////////////////////////////////////////////////////////////////
00164   //                                                                     //
00165   // Data Members:                                                       //
00166   //                                                                     //
00167   /////////////////////////////////////////////////////////////////////////
00168 
00169   FPGroup theGroup;
00170   SetOf<Word> theWords;
00171   const Supervisor& theBoss;
00172   
00173   Trichotomy tAreTrivial;
00174   bool bStarted;
00175   bool bInited;
00176   DetailType dtype;
00177   
00178   GeneticWPArcer arcer;
00179 };
00180 
00181 
00182 #endif
00183 
00184 

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