Show
Ignore:
Timestamp:
06/22/09 13:17:49 (15 years ago)
Author:
smidl
Message:

merging works for merger_mx

Files:
1 modified

Legend:

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

    r392 r395  
    132132                        } 
    133133                        // fill samples 
    134                         int act_dim=0; //active dimension 
    135134                        for (int i = 0; i < Npoints; i++) { 
    136135                                // copy  
     
    139138                                for (int j = 0;j < dim;j++) { 
    140139                                        if (ind (j) == gridsize (j) - 1) { //j-th index is full 
    141 //                                              ind (j) = 0; //shift back 
     140                                                ind (j) = 0; //shift back 
    142141                                                smpi(j) = XYZ(j)(0); 
    143142                                                 
    144 //                                              ind (j + 1) ++; //increase the next dimension; 
    145                                                 smpi(j+1) += steps(j+1); 
     143                                                if (i<Npoints-1) { 
     144                                                        ind (j + 1) ++; //increase the next dimension; 
     145                                                        smpi(j+1) += steps(j+1); 
     146                                                        break; 
     147                                                } 
    146148                                                 
    147                                                 if (ind (j + 1) < gridsize (j + 1) - 1) break; 
    148149                                        } else { 
    149 //                                              ind (j) ++;  
     150                                                ind (j) ++;  
    150151                                                smpi(j) +=steps(j); 
    151152                                                break; 
     
    185186 
    186187                //!Merge given sources in given points 
    187                 void merge () { 
     188                virtual void merge () { 
    188189                        validate(); 
    189190 
     
    205206                                } 
    206207 
    207                                 vec wtmp = exp (merge_points (lW)); 
     208                                vec w_nn=merge_points (lW); 
     209                                vec wtmp = exp (w_nn-max(w_nn)); 
    208210                                //renormalize 
    209211                                eSmp._w() = wtmp / sum (wtmp); 
     
    277279                                } 
    278280                        } 
     281                        if (set.exists("dbg_file")){  
     282                                string dbg_file; 
     283                                UI::get<string> (dbg_file, set, "dbg_file"); 
     284                                set_debug_file(dbg_file); 
     285                        } 
     286                        //validate() - not used 
    279287                } 
    280288 
     
    295303                //!Number of components in a mixture 
    296304                int Ncoms; 
    297                 //! coefficient of resampling 
     305                //! coefficient of resampling [0,1] 
    298306                double effss_coef; 
     307                //! stop after niter iterations 
     308                int stop_niter; 
    299309 
    300310        public: 
     
    338348                emix* proposal() {emix* tmp = Mix.epredictor(); tmp->set_rv (rv); return tmp;} 
    339349                //! from_settings 
    340                 void from_settings(const Setting& set){ 
     350                void from_setting(const Setting& set){ 
    341351                        merger_base::from_setting(set); 
    342352                        set.lookupValue("ncoms",Ncoms); 
     353                        set.lookupValue("effss_coef",effss_coef); 
     354                        set.lookupValue("stop_niter",stop_niter); 
    343355                } 
    344356