Changeset 197 for bdm/estim/merger.cpp

Show
Ignore:
Timestamp:
11/04/08 14:54:33 (16 years ago)
Author:
smidl
Message:

opravy v bdm

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • bdm/estim/merger.cpp

    r193 r197  
    4747        mat V0=1e-8*eye ( rv.count() +1 ); 
    4848        ARX A0 ( RV ( "{th_r  }", vec_1 ( rv.count() * ( rv.count() +1 ) ) ),\ 
    49                  V0, rv.count() *rv.count() +3.0 ); //initial guess of Mix: zero mean, large variance 
     49                 V0, rv.count() *rv.count() +5.0 ); //initial guess of Mix: zero mean, large variance 
     50 
     51        Mix.init ( &A0, Smp_ex, Nc ); 
     52        //Preserve initial mixture for repetitive estimation via flattening 
     53        MixEF Mix_init(Mix); 
    5054 
    5155        // ============= MAIN LOOP ================== 
     
    5963                //Re-estimate Mix 
    6064                //Re-Initialize Mixture model 
    61                 Mix.init ( &A0, Smp_ex, Nc ); 
     65                Mix.flatten(&Mix_init); 
    6266                Mix.bayesB ( Smp_ex, w*Ns ); 
    6367                Mpred = Mix.predictor ( rv ); // Allocation => must be deleted at the end!! 
    6468 
    65                 if ( 1 ) { 
    66                         // Generate new samples 
    67                         eSmp.set_samples ( Mpred ); 
    68                         for ( int i=0;i<Ns;i++ ) {      set_col_part ( Smp_ex,i,Smp ( i ) );} 
    69                 } 
    70                 else { 
    71                         for ( int ii=0;ii<10;ii++ ) { 
    72                                 for ( int jj=0; jj<10; jj++ ) { 
    73                                         Smp ( ii+jj*10 ) =vec_2 ( -1.0+6*ii/10.0, -1.0+6*jj/10.0 ); 
    74                                 } 
    75                         } 
    76                         for ( int i=0;i<Ns;i++ ) {      set_col_part ( Smp_ex,i,Smp ( i ) );} 
    77                 } 
     69                sprintf ( str,"Mpred_mean%d",niter ); 
     70                dbg << Name ( str ) << Mpred->mean(); 
     71 
     72                // Generate new samples 
     73                eSmp.set_samples ( Mpred ); 
     74                for ( int i=0;i<Ns;i++ ) {      set_col_part ( Smp_ex,i,Smp ( i ) );} 
    7875 
    7976                sprintf ( str,"Mpdf%d",niter ); 
     
    109106                                if ( rv.count() > ( mpdfs ( i )->_rv().count() + mpdfs ( i )->_rvc().count() ) ) { 
    110107                                        /////////////// 
    111                                         cout << Mpred->mean() <<endl; 
    112108                                        // There are variales unknown to mpdfs(i) : rvzs 
    113109                                        mpdf* tmp_cond = Mpred->condition ( rvzs ( i ) ); 
     
    127123                                        lw_src ( k ) += mpdfs ( i )->_epdf().evalpdflog ( dls ( i )->get_val ( Smp ( k ) ) ); 
    128124                                } 
    129                                  
     125 
    130126                        } 
    131127                        lW.set_row ( i, lw_src ); // do not divide by mix 
     
    161157                // ==== stopping rule === 
    162158                niter++; 
    163                 converged = ( niter>4 ); 
     159                converged = ( niter>9 ); 
    164160        } 
    165161