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

plKernel.h

00001 /*=============================================================================
00002  * Product        : OpenPL 
00003  * File           : plKernel.h
00004  * Author         : Juan-Manuel Ahuactzin
00005  * Creation       : Fri Mar 16 16:22:42 2001
00006  *
00007  *=============================================================================
00008  *     (c) Copyright 2000, Centre National de la Recherche Scientifique,
00009  *                              all rights reserved
00010  *=============================================================================
00011  *
00012  *------------------------- Description ---------------------------------------
00013  *   
00014  *   
00015  *-----------------------------------------------------------------------------
00016  */
00017 
00018 #ifndef _plKernel_h_
00019 #define _plKernel_h_
00020 
00021 
00022 #include <plComputableObject.h>
00023 #include <plMath.h>
00024 #include <plDataValues.h>
00025 #include <plVariablesConjunction.h>
00026 #include <plValues.h>
00027 #include <plTechniquesTypes.h>
00028 
00029 /*****************************************************************************
00030  *                           External Classes
00031  *****************************************************************************/
00032 class kplVariable;
00033 class kplKernel;
00034 class kplComputableObject;
00035 
00036 
00037 /*****************************************************************************
00038  *                           Classes Definitions
00039  *****************************************************************************/
00040 
00041 
00042 
00043 //=============================================================================
00045 class plKernel : public plComputableObject
00046 {
00047 
00048 protected:
00049 
00052   //virtual plProbValue kernel_compute(const plDataValues &params);
00053   plProbValue kernel_compute(const plDataValues &params) const;
00054 
00056   void kernel_rename(const map <kplVariable*, kplVariable *> &rename_map);
00057 
00059   void  write_var_test_result(const kplVariable* var_ptr,
00060                   const vector <unsigned int>& vars_histogram,
00061                   const string &test_name);
00062   
00064   kplKernel* root_kernel;
00065 
00066 
00067 
00068 
00069 public:
00070 
00072   plKernel& operator=(const plKernel& assigned_kernel);
00073 
00074 
00075   /* Empty constructor */
00076   plKernel();
00077   
00078   /* Constructor with a set of variables */
00079   plKernel(const plVariablesConjunction& variables);
00080 
00082   plKernel(const plKernel &);
00083   
00085   plKernel(const class plProduct &);
00086   
00088   plKernel(const class plComputableObjectList &);
00089   
00090 
00092   virtual ~plKernel();
00093 
00097   void draw(plValues &res) const;
00098 
00105   plValues draw() const;
00106 
00107   
00108 #ifndef RAVI_INTERFACE
00109 
00111   void draw(int *parameter)const;
00112 
00116   void draw(unsigned int *parameter)const;
00117   
00120   void draw(long int *parameter)const;
00121   
00125   void draw(float *parameter)const;
00126   
00129   void draw(double *parameter)const;
00130 
00133   void draw(long double *parameter)const;
00134 
00140   void draw(int &parameter)const;
00141 
00147   void draw(unsigned int &parameter)const;
00148 
00154   void draw(long int &parameter)const;
00155 
00161   void draw(float &parameter)const;
00162 
00168   void draw(double &parameter)const;
00169 
00175   void draw(long double &parameter)const;
00176 
00179   void draw( vector <int> &parameter)const;
00180 
00184   void draw( vector <unsigned int> &parameter)const;
00185   
00189   void draw( vector <long int> &parameter)const;
00190   
00193   void draw( vector <float> &parameter)const;
00194   
00197   void draw( vector <double> &parameter)const;
00198 
00202   void draw( vector <long double> &parameter)const;
00203 #endif
00204 
00207   void best(plValues &res)const;
00208 
00215   plValues best()const;
00216 
00217   
00218 #ifndef RAVI_INTERFACE
00219 
00223   void best(int *parameter)const;
00224   
00229   void best(unsigned int *parameter)const;
00230     
00235   void best(long int *parameter)const;
00236   
00240   void best(float *parameter)const;
00241   
00245   void best(double *parameter)const;
00246   
00250   void best(long double *parameter)const;
00251   
00257   void best(int &parameter)const;
00258   
00264   void best(unsigned int &parameter)const;
00265   
00271   void best(long int &parameter)const;
00272   
00278   void best(float &parameter)const;
00279   
00285   void best(double &parameter)const;
00286   
00292   void best(long double &parameter)const;
00293   
00299   void best( vector <int> &parameter)const;
00300   
00305   void best( vector <unsigned int> &parameter)const;
00306   
00311   void best( vector <long int> &parameter)const;
00312   
00316   void best( vector <float> &parameter)const;
00317   
00321   void best( vector <double> &parameter)const;
00322   
00327   void best( vector <long double> &parameter)const;
00328 
00329 #endif
00330 
00342   void test_draw(const unsigned int number_of_tests,const string &file_name);
00343 
00362   void test_draw(const unsigned int number_of_tests,const string &file_name,
00363          const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n);
00364   
00384   void n_compile(plKernel& result,
00385          unsigned long n_iterations,
00386          plGeneratorType generator_type = PL_MC_GENERATOR,
00387          plCompiledDistributionType compiled_distrib_type = PL_MAP)const;
00388 
00389 
00409   void time_compile(plKernel& result,
00410             double time_in_seconds,
00411             plGeneratorType generator_type = PL_MC_GENERATOR, 
00412             plCompiledDistributionType compiled_distrib_type = PL_MAP)const;
00413 
00422   plKernel time_compile(double time_in_seconds,
00423              plGeneratorType generator_type = PL_MC_GENERATOR, 
00424              plCompiledDistributionType compliled_distrib_type = PL_MAP)const;
00425 
00426 
00430   void compile(plKernel& result)const;
00431 
00439   plKernel compile()const;
00440 
00441 
00445   void lowMemoryUse_compile(plKernel& result)const;
00446 
00447   
00451   void compile(plKernel& result,
00452            plCompiledDistributionType compiled_distrib_type)const;
00453 
00454   
00457   void compile(plKernel& result, const vector <plDataValues>& values, 
00458               const plCompiledDistributionType &compilType)const;
00459  
00462   void compile(plKernel& result, const vector <plValues>& values,
00463                const plCompiledDistributionType &compilType)const;
00464                        
00467   void compile(plKernel& result, const list <plValues>& values,
00468                const plCompiledDistributionType &compilType)const;
00469 
00470 
00473   void build_using_samples(const vector <plDataValues>& values, 
00474                const plCompiledDistributionType &compilType);
00475 
00478   void build_using_samples(const vector <plValues>& values,
00479                const plCompiledDistributionType &compilType);
00480   
00483   void build_using_samples(const list <plValues>& values,
00484                const plCompiledDistributionType &compilType);
00485 
00486 
00489   void compile(plKernel& result, const vector < pair <plDataValues, plProbValue> >& values, 
00490            const plCompiledDistributionType &compilType)const;
00491   
00494   void compile(plKernel& result, const vector <pair <plValues, plProbValue> >& values,
00495                const plCompiledDistributionType &compilType)const;
00496                        
00499   void compile(plKernel& result, const list <pair <plValues, plProbValue> >& values,
00500                const plCompiledDistributionType &compilType)const;
00501   
00509   void incremental_n_compile(plKernel& result,
00510                  unsigned long n_iterations,
00511                  plGeneratorType generatorType = PL_MC_GENERATOR,
00512                  plCompiledDistributionType distrib_type = PL_MAP)const;
00513   
00522   void incremental_time_compile(plKernel& result,
00523                 double time_in_seconds,
00524                 plGeneratorType generatorType = PL_MC_GENERATOR,
00525                 plCompiledDistributionType distrib_type = PL_MAP)const;
00526 
00527   
00528   
00534   void tabulate(ostream& out=cout, bool print_on_zero=true)const;
00535   
00558   void tabulate(vector <plProbValue> &output)const;
00559 
00564   void tabulate(list <plProbValue> &output)const;
00565 
00570   void sorted_tabulate( vector <pair <plValues, plProbValue> >& output )const;
00571 
00577   void plot(char *file_name, const int n_samples = 100)const;
00578 
00582   kplComputableObject*  get_root_kernel() const;
00583 
00584   void set_root_kernel(kplKernel* new_kernel);
00585   
00586   void dispose_root_kernel();
00587 
00589   //virtual ostream& write_head(ostream &out) const;
00590   ostream& write_head(ostream &out) const;
00591 
00593   //virtual ostream& write_body(ostream &out) const ;
00594   ostream& write_body(ostream &out) const ;
00595   
00597   friend class plCndKernel;
00598 
00599 
00603   void time_best(plValues &res, double time_in_seconds)const;
00604   
00605 #ifndef RAVI_INTERFACE
00606 
00610   void time_best(int *parameter, double time_in_seconds)const;
00611   
00617   void time_best(unsigned int *parameter, double time_in_seconds)const;
00618     
00624   void time_best(long int *parameter, double time_in_seconds)const;
00625   
00630   void time_best(float *parameter, double time_in_seconds)const;
00631   
00636   void time_best(double *parameter, double time_in_seconds)const;
00637   
00642   void time_best(long double *parameter, double time_in_seconds)const;
00643   
00650   void time_best(int &parameter, double time_in_seconds)const;
00651   
00658   void time_best(unsigned int &parameter, double time_in_seconds)const;
00659   
00666   void time_best(long int &parameter, double time_in_seconds)const;
00667   
00674   void time_best(float &parameter, double time_in_seconds)const;
00675   
00682   void time_best(double &parameter, double time_in_seconds)const;
00683   
00690   void time_best(long double &parameter, double time_in_seconds)const;
00691   
00698   void time_best( vector <int> &parameter, double time_in_seconds)const;
00699   
00705   void time_best( vector <unsigned int> &parameter, double time_in_seconds)const;
00706   
00712   void time_best( vector <long int> &parameter, double time_in_seconds)const;
00713   
00718   void time_best( vector <float> &parameter, double time_in_seconds)const;
00719   
00724   void time_best( vector <double> &parameter, double time_in_seconds)const;
00725   
00731   void time_best( vector <long double> &parameter, double time_in_seconds)const;
00732 
00743   void draw(plValues &res, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00744   
00756 #endif
00757 
00758   void draw(int *parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00759 
00772 #ifndef RAVI_INTERFACE
00773 
00774   void draw(unsigned int *parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00775   
00786   void draw(long int *parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00787   
00798   void draw(float *parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00799   
00810   void draw(double *parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00811 
00822   void draw(long double *parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00823 
00837   void draw(int &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00838 
00844   void draw(unsigned int &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00845 
00859   void draw(long int &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00860 
00874   void draw(float &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00875 
00889   void draw(double &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00890 
00904   void draw(long double &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00905 
00916   void draw( vector <int> &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00917 
00929   void draw( vector <unsigned int> &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00930   
00942   void draw( vector <long int> &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00943   
00954   void draw( vector <float> &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00955   
00966   void draw( vector <double> &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00967 
00979   void draw( vector <long double> &parameter, const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00980   
00981 #endif  
00982 
00983   void best(plValues &res, const plValues &initial_state, 
00984             const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00985 
00986 #ifndef RAVI_INTERFACE
00987 
00988   void best(int *parameter, const plValues &initial_state,
00989             const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00990 
00991 
00992   void best(unsigned int *parameter, 
00993             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00994    
00995   void best(long int *parameter, 
00996             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
00997   
00998   void best(float *parameter, 
00999             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01000   
01001 
01002   void best(double *parameter,
01003             const plValues &initial_state, const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01004 
01005   void best(long double *parameter, 
01006             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01007 
01008   void best(int &parameter, 
01009             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01010 
01011 
01012   void best(unsigned int &parameter, 
01013             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01014 
01015   void best(long int &parameter, 
01016             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01017 
01018   void best(float &parameter, 
01019             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01020 
01021   void best(double &parameter, 
01022             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01023 
01024   void best(long double &parameter, 
01025             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01026 
01027   void best( vector <int> &parameter, 
01028             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01029 
01030 
01031   void best( vector <unsigned int> &parameter, 
01032             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01033   
01034 
01035   void best( vector <long int> &parameter, 
01036             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01037   
01038 
01039   void best( vector <float> &parameter, 
01040             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01041   
01042 
01043   void best( vector <double> &parameter, 
01044             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01045 
01046 
01047   void best( vector <long double> &parameter, 
01048             const plValues &initial_state,const  vector <plFloat>  &proposal_standard_deviation, unsigned int n, plProbValue &probability)const;
01049   
01050 #endif  
01051 
01055   void replace(const plVariablesConjunction &left_vars, const plVariablesConjunction &right_vars, 
01056            plCndKernel &new_cnd_kernel);
01057 
01061   void replace(const plVariablesConjunction &left_vars, plKernel &new_kernel);
01062 
01063   
01066   double get_exhaustive_compilation_complexity() const;
01067 
01070   double get_exhaustive_update_complexity() const;
01071   
01073   plFloat computeShannonEntropy() const;
01074   
01076   void computeExpectation(plValues & res) const;
01077   
01079   void computeExpectation(vector <float> & res) const;
01080   
01082   void computeExpectation(vector <double> & res) const;
01083   
01085   void computeExpectation(vector <long double> & res) const;
01086   
01088   ostream &outputTree(ostream &out)const;
01089 
01091   bool isNull()const;
01092 
01093 };
01094 
01095 #endif

Generated on Fri Apr 1 10:58:13 2005 for ProBT by  doxygen 1.4.1