Changeset 197 for bdm/estim/merger.cpp
- Timestamp:
- 11/04/08 14:54:33 (16 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/estim/merger.cpp
r193 r197 47 47 mat V0=1e-8*eye ( rv.count() +1 ); 48 48 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); 50 54 51 55 // ============= MAIN LOOP ================== … … 59 63 //Re-estimate Mix 60 64 //Re-Initialize Mixture model 61 Mix. init ( &A0, Smp_ex, Nc);65 Mix.flatten(&Mix_init); 62 66 Mix.bayesB ( Smp_ex, w*Ns ); 63 67 Mpred = Mix.predictor ( rv ); // Allocation => must be deleted at the end!! 64 68 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 ) );} 78 75 79 76 sprintf ( str,"Mpdf%d",niter ); … … 109 106 if ( rv.count() > ( mpdfs ( i )->_rv().count() + mpdfs ( i )->_rvc().count() ) ) { 110 107 /////////////// 111 cout << Mpred->mean() <<endl;112 108 // There are variales unknown to mpdfs(i) : rvzs 113 109 mpdf* tmp_cond = Mpred->condition ( rvzs ( i ) ); … … 127 123 lw_src ( k ) += mpdfs ( i )->_epdf().evalpdflog ( dls ( i )->get_val ( Smp ( k ) ) ); 128 124 } 129 125 130 126 } 131 127 lW.set_row ( i, lw_src ); // do not divide by mix … … 161 157 // ==== stopping rule === 162 158 niter++; 163 converged = ( niter> 4);159 converged = ( niter>9 ); 164 160 } 165 161