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

plJointDistribution.h

00001 /*=============================================================================
00002  * Product        : OpenPL 
00003  * File           : plJointDistribution.h (plDescription.h)
00004  * Author         : Juan-Manuel Ahuactzin
00005  * Creation       : Wed Mar 21 13:54:44 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 _plJointDistribution_h
00019 #define _plJointDistribution_h
00020 
00021 #include <plVariablesConjunction.h>
00022 #include <plKernel.h>
00023 #include <plTechniquesTypes.h>
00024 
00025 
00026 #define PL_USE_SUCC_RES_SIMPLIF
00027 
00028 
00029 
00030 /*****************************************************************************
00031  *                           Classes Definitions
00032  *****************************************************************************/
00033 
00034 
00035 //=============================================================================
00060 class plJointDistribution : public plKernel
00061 {
00062   
00063   void check_variables(const plVariablesConjunction &search_params,
00064                        const plVariablesConjunction &known_params)const;
00065                        
00066   void check_variables(const plVariablesConjunction &search_params)const;
00067 
00068 public:
00069 
00070   static plJointDistribution *_global_jd;
00071 
00073   plJointDistribution (const plVariablesConjunction &all_params, 
00074                const plKernel  &f);
00075                        
00077   explicit plJointDistribution (const plKernel  &f);
00078 
00080   plJointDistribution (const plVariablesConjunction &all_params, 
00081                const plComputableObjectList &decomposition);
00082                        
00084   explicit plJointDistribution (const plComputableObjectList &decomposition);
00085 
00086 
00088   virtual ~plJointDistribution ();
00089 
00090   // Creates a question P(search_params | known_params) 
00091   
00107   void ask(plCndKernel &CndExpr,
00108        const plVariablesConjunction &search_params,
00109        const plVariablesConjunction &known_params,
00110        plOptimizationCriterion optimization = PL_NO_OPTIMIZATION) const;
00111 
00130   plCndKernel ask(const plVariablesConjunction &search_params,
00131           const plVariablesConjunction &known_params,
00132           plOptimizationCriterion optimization = PL_NO_OPTIMIZATION) const;
00133 
00134   
00136   void ask(plCndKernel &CndExpr,
00137        const plVariablesConjunction &search_params,
00138        const plVariablesConjunction &known_params, unsigned int n) const;
00139            
00145   plCndKernel ask(const plVariablesConjunction &search_params,
00146           const plVariablesConjunction &known_params, unsigned int n) const;
00147 
00149   void ask(plCndKernel &CndExpr,
00150        const plVariablesConjunction &search_params,
00151        const plVariablesConjunction &known_params, int n) const
00152   { 
00153     ask(CndExpr, search_params, known_params, (unsigned int)n);
00154    }
00155   
00156   
00161   void ask(plCndKernel &CndExpr,
00162        const plVariablesConjunction &search_params,
00163        const plVariablesConjunction &known_params,
00164        plIntegrationModeType integration_mode,
00165        plFloat convergence_threshold) const;
00166   
00167 
00176   plCndKernel ask(const plVariablesConjunction &search_params,
00177           const plVariablesConjunction &known_params,
00178           plIntegrationModeType integration_mode,
00179           plFloat convergence_threshold) const;
00180 
00181 
00182 
00198   void ask(plCndKernel &CndExpr,
00199        const plVariablesConjunction &search_params,
00200        const plVariablesConjunction &known_params,
00201        bool do_not_build_normalization_expression,
00202        plOptimizationCriterion optimization = PL_NO_OPTIMIZATION) const;
00203   
00205   void ask(plCndKernel &CndExpr,
00206        const plVariablesConjunction &search_params,
00207        const plVariablesConjunction &known_params,
00208        bool do_not_build_normalization_expression,
00209        unsigned int n) const;
00210            
00211   void ask(plCndKernel &CndExpr,
00212        const plVariablesConjunction &search_params,
00213        const plVariablesConjunction &known_params,
00214        bool do_not_build_normalization_expression,
00215        int n) const
00216    { 
00217     ask(CndExpr, search_params, known_params, do_not_build_normalization_expression, (unsigned int)n);
00218    }
00219   
00220   
00225   void ask(plCndKernel &CndExpr,
00226        const plVariablesConjunction &search_params,
00227        const plVariablesConjunction &known_params,
00228        bool do_not_build_normalization_expression,
00229        plIntegrationModeType integration_mode,
00230        plFloat convergence_threshold) const;
00231 
00232 
00233 
00234   
00235   // Creates a question P(search_params) 
00236 
00238   void ask(plKernel &Expr,
00239        const plVariablesConjunction &search_params) const;
00240 
00246   plKernel ask(const plVariablesConjunction &search_params) const;
00247   
00249   void ask(plKernel &Expr,
00250        const plVariablesConjunction &search_params, unsigned int n) const;
00251 
00257   plKernel ask(const plVariablesConjunction &search_params, unsigned int n) const;
00258            
00260   void ask(plKernel &Expr,
00261        const plVariablesConjunction &search_params, int n) const
00262   { 
00263     ask(Expr, search_params, (unsigned int)n);
00264   }
00265   
00270   void ask(plKernel &Expr,
00271        const plVariablesConjunction &search_paramss, 
00272        plIntegrationModeType integration_mode,
00273        plFloat convergence_threshold) const;
00274 
00275 
00284   plKernel ask(const plVariablesConjunction &search_params, 
00285            plIntegrationModeType integration_mode,
00286            plFloat convergence_threshold) const;
00287 
00288   //void interpret();
00289   
00290 };
00291 
00292 #endif

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