Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

Random_Field.hpp

00001 #define __cplusplus__
00002 #ifndef __RF__
00003 #define __RF__
00004 
00005 #include<iostream>
00006 #include<istream>
00007 #include<fstream>
00008 #include<string>
00009 #include<vector>
00010 #include<sstream>
00011 #include <cmath>
00012 
00013 #include <Neighborhood_System.hpp>
00014 
00015 using namespace std;
00016 
00027 class Random_Field{
00028 
00029 protected :
00031   Neighborhood_System *NHS;
00032  
00034   vector<double> Z_mf;  
00036   vector<double> S_mf;
00037 
00039   bool precomputed_smf;
00041         bool fix;
00042 
00044   virtual void Precompute_Smf();
00045 
00047   double gradient_tol;
00049   uint gradient_maxiter;
00051   vector<double> gradient_step;
00052 
00053 
00054 
00055 public :
00056 
00058   virtual ~Random_Field();
00059         
00061         void Fix();
00062 
00064   virtual uint Get_K();
00066   uint Get_N();
00067 
00069   virtual double H(uint i, uint k, vector<uint>  const &  Z);
00071   virtual double Hmf(uint i, uint k);
00072 
00074   void Compute_PGmf(uint i, vector<double> & PG);
00076   void Compute_PGmf(vector<double> & PG);
00078   void Compute_PG(uint i, vector<uint>  const &  Z, vector<double> &  PG);
00079 
00081   void Simulate(vector<uint> & Z);
00083   void Simulate(uint nbiter, vector<uint> & Z);
00084 
00086   void Set_Zmf( vector<double> const &  z );
00088   void Set_Zmf( vector<double> const &  z , uint i);
00090   void Get_Zmf( vector<double> & z );
00092   void Set_Z( vector<uint> const &  z );
00093 
00095   virtual void Gradient(vector<double> const & tik, vector<double> & Q);  
00097   void Gradient(vector<uint> const & Z, vector<double> & Q);
00099   virtual void Update_Gradient(vector<double> const &   Q);
00101   void Init_Gradient_Descent();
00103   void Finalize_Gradient_Descent();
00105   void Set_Gradient(double step, double tol, uint maxiter);
00107   void Update_Gradient_Step(vector<double> const & Qold, vector<double> const & Q);
00109   void Gradient_Descent(vector<double> const &  tik);
00110 
00111 
00113   virtual void Read_Params(istream & is);
00115   virtual void Write_Params(ostream & os);
00117         void Estimate (vector<double> const &  tik);
00119         void Estimate (vector<uint> const &  Z);
00120 
00122   virtual uint Degrees_Of_Freedom();
00123 
00125   virtual void Info();
00126 };
00127 
00128 #endif

Generated on Thu Jan 12 11:54:58 2006 for NEM by  doxygen 1.4.4