Show
Ignore:
Timestamp:
05/26/10 23:33:28 (14 years ago)
Author:
smidl
Message:

Scheduling of forgetting factor

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/stat/exp_family.h

    r992 r996  
    8181        //! cached value of lognc() in the previous step (used in evaluation of \c ll ) 
    8282        double last_lognc; 
     83        //! factor k = [0..1] for scheduling of forgetting factor: \f$ frg_t = (1-k) * frg_{t-1} + k \f$, default 0 
     84        double frg_sched_factor; 
    8385public: 
    8486        //! Default constructor (=empty constructor) 
    85         BMEF ( double frg0 = 1.0 ) : BM (), frg ( frg0 ) {} 
     87        BMEF ( double frg0 = 1.0 ) : BM (), frg ( frg0 ), last_lognc(0.0),frg_sched_factor(0.0) {} 
    8688        //! Copy constructor 
    87         BMEF ( const BMEF &B ) : BM ( B ), frg ( B.frg ), last_lognc ( B.last_lognc ) {} 
     89        BMEF ( const BMEF &B ) : BM ( B ), frg ( B.frg ), last_lognc ( B.last_lognc ),frg_sched_factor(B.frg_sched_factor) {} 
    8890        //!get statistics from another model 
    8991        virtual void set_statistics ( const BMEF* BM0 ) NOT_IMPLEMENTED_VOID; 
    9092 
    9193        //! Weighted update of sufficient statistics (Bayes rule) 
    92         virtual void bayes_weighted ( const vec &data, const vec &cond = empty_vec, const double w = 1.0 ) {}; 
     94        virtual void bayes_weighted ( const vec &data, const vec &cond = empty_vec, const double w = 1.0 ) { 
     95                if (frg_sched_factor>0) {frg = frg*(1-frg_sched_factor)+frg_sched_factor;} 
     96        }; 
    9397        //original Bayes 
    9498        void bayes ( const vec &yt, const vec &cond = empty_vec ); 
     
    102106                BM::to_setting( set ); 
    103107                UI::save(frg, set, "frg"); 
     108                UI::save( frg_sched_factor, set, "frg_sched_factor" ); 
    104109        }  
    105110 
     
    108113                if ( !UI::get ( frg, set, "frg" ) ) 
    109114                        frg = 1.0; 
     115                UI::get ( frg_sched_factor, set, "frg_sched_factor",UI::optional ); 
    110116        } 
    111117