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

/magnus/back_end/Enumerators/include/REnumerator.h

Go to the documentation of this file.
00001 #include "Supervisor.h"
00002 #include "SMEnumerator.h"
00003 #include "File.h"
00004 #include "Word.h"
00005 #include "SMFPGroup.h"
00006 #include "OutMessages.h"
00007 #include "RandomNumbers.h"
00008 
00009 #ifndef _REnumerator_H_
00010 #define _REnumerator_H_
00011 
00012 // ------------------ NCEnumerateTotalARCer ---------------------- //
00013 
00014 
00015 class NCEnumerateTotalARCer : public EnumeratorARCer
00016 {
00017 public:
00018 
00019   /////////////////////////////////////////////////////////////////////////
00020   //                                                                     //
00021   // Constructors:                                                       //
00022   //                                                                     //
00023   /////////////////////////////////////////////////////////////////////////
00024 
00025   NCEnumerateTotalARCer( ComputationManager& boss, SMListData& d,
00026                          const FPGroup& group ) 
00027     : EnumeratorARCer( boss, d ), 
00028       theGroup(group),
00029       numberOfAll(100),
00030       counter(0) { } 
00031   
00032  
00033   /////////////////////////////////////////////////////////////////////////
00034   //                                                                     //
00035   // Accessors:                                                          //
00036   //                                                                     //
00037   /////////////////////////////////////////////////////////////////////////
00038 
00039   // Inherited from ARCer:
00040   // bool takeControl( );
00041   // Inherited from EnumeratorARCer:
00042   // void runComputation( );
00043   
00044   void setTotalNumber(int n) { numberOfAll = n; }
00045   
00046   /////////////////////////////////////////////////////////////////////////
00047   //                                                                     //
00048   // IPC interaction members:                                            //
00049   //                                                                     //
00050   /////////////////////////////////////////////////////////////////////////
00051 
00052   void writeResults( ostream& ostr ) 
00053     {
00054       ostr < currentWord < counter;
00055       ostr < theData;
00056     }
00057 
00058   void readResults( istream& istr) 
00059     {
00060       istr > currentWord > counter;
00061       istr > theData;
00062     }
00063   
00064 protected:
00065   void enumerate();
00066 private:
00067 
00068   /////////////////////////////////////////////////////////////////////////
00069   //                                                                     //
00070   // Data Members:                                                       //
00071   //                                                                     //
00072   /////////////////////////////////////////////////////////////////////////
00073 
00074   FPGroup theGroup;
00075 
00076   int numberOfAll;
00077   Word currentWord;
00078   int counter;
00079 };
00080 
00081 // ------------------ NCEnumerateRandomARCer ---------------------- //
00082 
00083 
00084 class NCEnumerateRandomARCer : public EnumeratorARCer
00085 {
00086 public:
00087 
00088   /////////////////////////////////////////////////////////////////////////
00089   //                                                                     //
00090   // Constructors:                                                       //
00091   //                                                                     //
00092   /////////////////////////////////////////////////////////////////////////
00093 
00094   NCEnumerateRandomARCer( ComputationManager& boss, SMListData& d,
00095                           const FPGroup& group ) 
00096     : EnumeratorARCer( boss, d ), 
00097     theGroup(group),
00098     numberOfAll(100),
00099     maxConjLength(100),
00100     typeIsUniform( true ),
00101     numberOfFactors( 10 ),
00102     counter(0) { } 
00103  
00104   /////////////////////////////////////////////////////////////////////////
00105   //                                                                     //
00106   // Accessors:                                                          //
00107   //                                                                     //
00108   /////////////////////////////////////////////////////////////////////////
00109 
00110   // Inherited from ARCer:
00111   // bool takeControl( );
00112   
00113   void setTotalNumber(int n) { numberOfAll = n; }
00114   void setConjL(int n) { maxConjLength = n; }
00115   void setNumOfFactors(int n) { numberOfFactors = n; }
00116   
00117   void setTypeUniform() { typeIsUniform = true; }
00118   void setTypeNormal() { typeIsUniform = false; }
00119 
00120   /////////////////////////////////////////////////////////////////////////
00121   //                                                                     //
00122   // IPC interaction members:                                            //
00123   //                                                                     //
00124   /////////////////////////////////////////////////////////////////////////
00125 
00126   // void runComputation( );
00127  
00128   void writeResults( ostream& o ) { 
00129     o < counter; 
00130     o < theData;
00131   }
00132 
00133   void readResults( istream& i ) { 
00134     i > counter; 
00135     i > theData;
00136   }
00137 
00138 protected:
00139   Word getRelConj();
00140   void enumerate();
00141 private:
00142 
00143   /////////////////////////////////////////////////////////////////////////
00144   //                                                                     //
00145   // Data Members:                                                       //
00146   //                                                                     //
00147   /////////////////////////////////////////////////////////////////////////
00148 
00149   FPGroup theGroup;
00150 
00151   int numberOfAll;
00152   int maxConjLength;
00153   bool typeIsUniform;
00154   int counter;
00155   int numberOfFactors;
00156   
00157   UniformRandom ur; 
00158   NormalRandom nr; 
00159 };
00160 
00161 
00162 class NCRelatorEnumerator : public EnumeratorProblem< Word >
00163 {
00164 public:
00165 
00166   /////////////////////////////////////////////////////////////////////////
00167   //                                                                     //
00168   // Constructors:                                                       //
00169   //                                                                     //
00170   /////////////////////////////////////////////////////////////////////////
00171 
00172   NCRelatorEnumerator(SMFPGroup& );
00173   
00174   /////////////////////////////////////////////////////////////////////////
00175   //                                                                     //
00176   // Front End Interfacing:                                              //
00177   //                                                                     //
00178   /////////////////////////////////////////////////////////////////////////
00179 
00180   void viewStructure(ostream& ostr) const;  // overrides SMObject
00181 
00182   /////////////////////////////////////////////////////////////////////////
00183   //                                                                     //
00184   // Control:                                                            //
00185   //                                                                     //
00186   /////////////////////////////////////////////////////////////////////////
00187 
00188   void takeControl( );         // overrides ComputationManager
00189 
00190   /////////////////////////////////////////////////////////////////////////
00191   //                                                                     //
00192   // State Transitions:                                                  //
00193   //                                                                     //
00194   /////////////////////////////////////////////////////////////////////////
00195 
00196   void start( ) ;                // overrides ComputationManager  
00197   void terminate( ) { }          // overrides ComputationManager
00198   
00199   void resume( );                // overrides ComputationManager
00200     
00201   
00202    
00203 private:
00204 
00205   /////////////////////////////////////////////////////////////////////////
00206   //                                                                     //
00207   // Data Members:                                                       //
00208   //                                                                     //
00209   /////////////////////////////////////////////////////////////////////////
00210 
00211   SMFPGroup& theGroup;
00212   EnumeratorARCer* arcer;
00213 };
00214 
00215 
00216 
00217 #endif

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