Show
Ignore:
Timestamp:
11/25/09 12:14:38 (15 years ago)
Author:
mido
Message:

ASTYLER RUN OVER THE WHOLE LIBRARY, JUPEE

Files:
1 modified

Legend:

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

    r700 r737  
    55using std::endl; 
    66 
    7 void PF::bayes_gensmp(const vec &ut){ 
    8         if (ut.length()>0){ 
    9                 vec cond(par->dimensionc()); 
    10                 cond.set_subvector(par->dimension(),ut); 
    11                 #pragma parallel for 
    12                 for (int i = 0; i < n; i++ ) { 
    13                         cond.set_subvector(0,_samples ( i )); 
     7void PF::bayes_gensmp ( const vec &ut ) { 
     8        if ( ut.length() > 0 ) { 
     9                vec cond ( par->dimensionc() ); 
     10                cond.set_subvector ( par->dimension(), ut ); 
     11#pragma parallel for 
     12                for ( int i = 0; i < n; i++ ) { 
     13                        cond.set_subvector ( 0, _samples ( i ) ); 
    1414                        _samples ( i ) = par->samplecond ( cond ); 
    15                         lls(i) = 0; 
     15                        lls ( i ) = 0; 
    1616                } 
    17         } else {                 
    18                 #pragma parallel for 
    19                 for (int i = 0; i < n; i++ ) { 
     17        } else { 
     18#pragma parallel for 
     19                for ( int i = 0; i < n; i++ ) { 
    2020                        _samples ( i ) = par->samplecond ( _samples ( i ) ); 
    21                         lls(i) = 0; 
     21                        lls ( i ) = 0; 
    2222                } 
    2323        } 
    2424} 
    2525 
    26 void PF::bayes_weights(){ 
    27 //  
    28         double mlls=max(lls); 
     26void PF::bayes_weights() { 
     27// 
     28        double mlls = max ( lls ); 
    2929        // compute weights 
    30         for (int  i = 0; i < n; i++ ) { 
     30        for ( int  i = 0; i < n; i++ ) { 
    3131                _w ( i ) *= exp ( lls ( i ) - mlls ); // multiply w by likelihood 
    3232        } 
    3333 
    3434        //renormalize 
    35         double sw=sum(_w); 
    36         if (!std::isfinite(sw)) { 
    37                 for (int i=0;i<n;i++){ 
    38                         if (!std::isfinite(_w(i))) {_w(i)=0;} 
     35        double sw = sum ( _w ); 
     36        if ( !std::isfinite ( sw ) ) { 
     37                for ( int i = 0; i < n; i++ ) { 
     38                        if ( !std::isfinite ( _w ( i ) ) ) { 
     39                                _w ( i ) = 0; 
     40                        } 
    3941                } 
    40                 sw = sum(_w); 
    41                 if (!std::isfinite(sw) || sw==0.0) { 
    42                         bdm_error("Particle filter is lost; no particle is good enough."); 
     42                sw = sum ( _w ); 
     43                if ( !std::isfinite ( sw ) || sw == 0.0 ) { 
     44                        bdm_error ( "Particle filter is lost; no particle is good enough." ); 
    4345                } 
    4446        } 
     
    4648} 
    4749 
    48 void PF::bayes( const vec &yt, const vec &cond ) { 
    49         const vec &ut=cond; //todo 
    50          
     50void PF::bayes ( const vec &yt, const vec &cond ) { 
     51        const vec &ut = cond; //todo 
     52 
    5153        int i; 
    5254        // generate samples - time step 
    53         bayes_gensmp(ut); 
     55        bayes_gensmp ( ut ); 
    5456        // weight them - data step 
    5557        for ( i = 0; i < n; i++ ) { 
     
    5961        bayes_weights(); 
    6062 
    61         if (do_resampling()) { 
    62                 est.resample ( resmethod); 
     63        if ( do_resampling() ) { 
     64                est.resample ( resmethod ); 
    6365        } 
    6466 
     
    7375// } 
    7476 
    75 void MPF::bayes ( const vec &yt, const vec &cond ) {     
    76         // follows PF::bayes in most places!!!   
     77void MPF::bayes ( const vec &yt, const vec &cond ) { 
     78        // follows PF::bayes in most places!!! 
    7779        int i; 
    78         int n=pf->__w().length(); 
     80        int n = pf->__w().length(); 
    7981        vec &lls = pf->_lls(); 
    80         Array<vec> &samples=pf->__samples(); 
    81          
     82        Array<vec> &samples = pf->__samples(); 
     83 
    8284        // generate samples - time step 
    83         pf->bayes_gensmp(vec(0)); 
     85        pf->bayes_gensmp ( vec ( 0 ) ); 
    8486        // weight them - data step 
    85         #pragma parallel for 
     87#pragma parallel for 
    8688        for ( i = 0; i < n; i++ ) { 
    87                 vec bm_cond(BMs(i)->dimensionc()); 
    88                 this2bm.fill_cond(yt,cond, bm_cond); 
    89                 pf2bm.filldown(samples(i), bm_cond); 
    90                 BMs(i) -> bayes(this2bm.pushdown(yt), bm_cond); 
    91                 lls ( i ) += BMs(i)->_ll(); 
     89                vec bm_cond ( BMs ( i )->dimensionc() ); 
     90                this2bm.fill_cond ( yt, cond, bm_cond ); 
     91                pf2bm.filldown ( samples ( i ), bm_cond ); 
     92                BMs ( i ) -> bayes ( this2bm.pushdown ( yt ), bm_cond ); 
     93                lls ( i ) += BMs ( i )->_ll(); 
    9294        } 
    9395 
    9496        pf->bayes_weights(); 
    95          
     97 
    9698        ivec ind; 
    97         if (pf->do_resampling()) { 
    98                 pf->resample ( ind); 
    99                  
    100                 #pragma omp parallel for 
     99        if ( pf->do_resampling() ) { 
     100                pf->resample ( ind ); 
     101 
     102#pragma omp parallel for 
    101103                for ( i = 0; i < n; i++ ) { 
    102104                        if ( ind ( i ) != i ) {//replace the current Bm by a new one