Changeset 766 for library/bdm/estim

Show
Ignore:
Timestamp:
01/11/10 22:55:57 (14 years ago)
Author:
mido
Message:

abstract methods restored wherever they are meaningful
macros NOT_IMPLEMENTED and NOT_IMPLEMENTED_VOID defined to make sources shorter
emix::set_parameters and mmix::set_parameters removed, corresponding acces methods created and the corresponding validate methods improved appropriately
some compilator warnings were avoided
and also a few other things cleaned up

Location:
library/bdm/estim
Files:
8 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/estim/arx.cpp

    r741 r766  
    7878} 
    7979 
    80 ARX* ARX::_copy_ ( ) const { 
     80ARX* ARX::_copy ( ) const { 
    8181        ARX* Tmp = new ARX ( *this ); 
    8282        return Tmp; 
  • library/bdm/estim/arx.h

    r746 r766  
    5656        ARX ( const double frg0 = 1.0 ) : BMEF ( frg0 ),  have_constant ( true ), dyad(), est(), alter_est() {}; 
    5757        ARX ( const ARX &A0 ) : BMEF ( A0 ),  have_constant ( A0.have_constant ), dyad ( A0.dyad ), est ( A0.est ), alter_est ( A0.alter_est ) { }; 
    58         ARX* _copy_() const; 
     58 
     59        ARX* _copy() const; 
     60 
    5961        void set_parameters ( double frg0 ) { 
    6062                frg = frg0; 
     
    174176        //! copy constructor 
    175177        ARXfrg ( const ARXfrg &A0 ) : ARX ( A0 ) {}; 
    176         ARXfrg* _copy_() const { 
     178        virtual ARXfrg* _copy() const { 
    177179                ARXfrg *A = new ARXfrg ( *this ); 
    178180                return A; 
  • library/bdm/estim/ekf_template.h

    r744 r766  
    3030class EKFCh_dQ : public EKFCh { 
    3131public: 
    32         BM* _copy_() const {return new EKFCh_dQ(*this);} 
     32        root* _copy_() const { 
     33                return new EKFCh_dQ(*this); 
     34        } 
     35 
    3336        //! new bayes, expects cond = [ut, Qt] 
    3437        void bayes( const vec &yt , const vec &cond) { 
  • library/bdm/estim/kalman.h

    r744 r766  
    154154                bdm_assert ( est.dimension(), "Statistics and model parameters mismatch" ); 
    155155        } 
     156 
     157        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0); 
     158 
     159        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL); 
     160         
     161        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL); 
    156162}; 
    157163/*! 
     
    165171        //! Here dt = [yt;ut] of appropriate dimensions 
    166172        void bayes ( const vec &yt, const vec &cond = empty_vec ); 
    167         BM* _copy_() const { 
     173 
     174        virtual KalmanFull* _copy() const { 
    168175                KalmanFull* K = new KalmanFull; 
    169176                K->set_parameters ( A, B, C, D, Q, R ); 
     
    192199public: 
    193200        //! copy constructor 
    194         BM* _copy_() const { 
     201        virtual KalmanCh* _copy() const { 
    195202                KalmanCh* K = new KalmanCh; 
    196203                K->set_parameters ( A, B, C, D, Q, R ); 
     
    335342public: 
    336343        //! copy constructor duplicated - calls different set_parameters 
    337         BM* _copy_() const { 
     344        EKFCh* _copy() const { 
    338345                return new EKFCh(*this); 
    339346        } 
     
    422429        // TODO dodelat void to_setting( Setting &set ) const; 
    423430 
     431        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0);  
     432 
     433        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL);  
     434 
     435        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL);  
    424436}; 
    425437 
  • library/bdm/estim/mixtures.cpp

    r750 r766  
    1515        int ndat = Data.cols(); 
    1616        //Estimate  Com0 from all data 
    17         Coms ( 0 ) = Com0->_copy_(); 
     17        Coms ( 0 ) = (BMEF*) Com0->_copy(); 
    1818//      Coms(0)->set_evalll(false); 
    1919        Coms ( 0 )->bayes_batch ( Data ); 
     
    2424        for ( i = 1; i < n; i++ ) { 
    2525                //copy Com0 and create new rvs for them 
    26                 Coms ( i ) =  Coms ( 0 )->_copy_ ( ); 
     26                Coms ( i ) =  (BMEF*) Coms ( 0 )->_copy ( ); 
    2727        } 
    2828        //Pick some data for each component and update it 
    2929        for ( i = 0; i < n; i++ ) { 
    3030                //pick one datum 
    31                 int ind = floor ( ndat * UniRNG.sample() ); 
     31                int ind = (int) floor ( ndat * UniRNG.sample() ); 
    3232                Coms ( i )->bayes ( Data.get_col ( ind ), empty_vec ); 
    3333                //flatten back to oringinal 
     
    4949        Array<BMEF*> Coms0 ( n ); 
    5050        for ( i = 0; i < n; i++ ) { 
    51                 Coms0 ( i ) = ( BMEF* ) Coms ( i )->_copy_(); 
     51                Coms0 ( i ) = ( BMEF* ) Coms ( i )->_copy(); 
    5252        } 
    5353 
     
    147147        emix* tmp; 
    148148        tmp = new emix( ); 
    149         tmp->set_parameters ( weights.posterior().mean(), pC ); 
     149        tmp->_w() = weights.posterior().mean(); 
     150        tmp->_Coms() = pC; 
    150151        tmp->validate(); 
    151152        return tmp; 
  • library/bdm/estim/mixtures.h

    r746 r766  
    7575                        weights (), method ( QB ) { 
    7676                for ( int i = 0; i < n; i++ ) { 
    77                         Coms ( i ) = ( BMEF* ) Coms0 ( i )->_copy_(); 
     77                        Coms ( i ) = ( BMEF* ) Coms0 ( i )->_copy(); 
    7878                } 
    7979                weights.set_parameters(alpha0); 
     
    9292                        weights ( M2.weights ), method ( M2.method ) { 
    9393                for ( int i = 0; i < n; i++ ) { 
    94                         Coms ( i ) = M2.Coms ( i )->_copy_(); 
     94                        Coms ( i ) = (BMEF*) M2.Coms ( i )->_copy(); 
    9595                } 
    9696                build_est(); 
     
    144144} 
    145145#endif // MIXTURES_H 
    146  
    147  
  • library/bdm/estim/particles.cpp

    r739 r766  
    168168                        if ( ind ( i ) != i ) {//replace the current Bm by a new one 
    169169                                delete BMs ( i ); 
    170                                 BMs ( i ) = BMs ( ind ( i ) )->_copy_(); //copy constructor 
     170                                BMs ( i ) = (BM*) BMs ( ind ( i ) )->_copy(); //copy constructor 
    171171                        } 
    172172                }; 
  • library/bdm/estim/particles.h

    r744 r766  
    203203                return _samples; 
    204204        } 
     205 
     206        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0); 
     207 
     208        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL); 
     209         
     210        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL); 
    205211}; 
    206212UIREGISTER ( PF ); 
     
    242248                void qbounds ( vec &lb, vec &ub, double perc = 0.95 ) const; 
    243249 
    244                 vec sample() const { 
    245                         bdm_error ( "Not implemented" ); 
    246                         return vec(); 
    247                 } 
    248  
    249                 double evallog ( const vec &val ) const { 
    250                         bdm_error ( "not implemented" ); 
    251                         return 0.0; 
    252                 } 
     250                vec sample() const NOT_IMPLEMENTED(0); 
     251 
     252                double evallog ( const vec &val ) const NOT_IMPLEMENTED(0);              
    253253        }; 
    254254 
     
    282282                //BMcond0 .condition ( pf->posterior()._sample ( 0 ) ); 
    283283                for ( int i = 0; i < n; i++ ) { 
    284                         BMs ( i ) = BMcond0._copy_(); 
     284                        BMs ( i ) = (BM*) BMcond0._copy(); 
    285285                } 
    286286        }; 
    287287 
    288288        void bayes ( const vec &yt, const vec &cond ); 
     289 
    289290        const epdf& posterior() const { 
    290291                return jest; 
     
    301302        } 
    302303        PF& _pf() {return *pf;} 
     304 
     305 
     306        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0);  
     307                 
     308        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL);  
     309         
     310        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL);  
     311 
    303312 
    304313        /*! configuration structure for basic PF 
     
    315324        void from_setting ( const Setting &set ) { 
    316325                shared_ptr<pdf> par = UI::build<pdf> ( set, "parameter_pdf", UI::compulsory ); 
    317                 shared_ptr<pdf> obs = new pdf(); // not used!! 
    318326 
    319327                pf = new PF; 
     
    321329                pf->prior_from_set ( set ); 
    322330                pf->resmethod_from_set ( set ); 
    323                 pf->set_model ( par, obs ); 
     331                pf->set_model ( par, par ); // too hackish! 
    324332 
    325333                shared_ptr<BM> BM0 = UI::build<BM> ( set, "BM", UI::compulsory ); 
     
    340348                validate(); 
    341349        } 
     350 
    342351        void validate() { 
    343352                try { 
    344353                        pf->validate(); 
    345                 } catch ( std::exception &e ) { 
     354                } catch ( std::exception ) { 
    346355                        throw UIException ( "Error in PF part of MPF:" ); 
    347356                } 
     
    351360                pf2bm.set_connection ( BMs ( 0 )->_rvc(), pf->posterior()._rv() ); 
    352361        } 
    353  
    354362}; 
    355363UIREGISTER ( MPF );