inline void set_sample(size_t sample_id, real_vector_type const & sample, real_scalar_type const weight ) { boost::numeric::ublas::row(m_chain,sample_id) = sample; m_weights(sample_id) = weight; }
void AAKR::computeWeights(double variance) { // Initialize some variables double svar = variance * variance; double k = (1 / std::sqrt(2 * DUNE::Math::c_pi * svar)); m_weights.fill(0.0); // Compute weights for (unsigned i = 0; i < m_num_values; i++) m_weights(i) = k * std::exp(- m_distances(i) * m_distances(i) / svar); }
void write_samples_to_csv(std::string const & file_name) const { std::string delimiter(","); std::ofstream out_file; out_file.open(file_name,std::ios::trunc); if( out_file.is_open() ) { out_file << std::scientific; out_file << std::setprecision(10); for(size_t i=0;i<m_num_samples;++i) { out_file << m_weights(i) << delimiter; for(size_t j=0;j<size_t(m_num_dims-1);++j) { out_file << m_chain(i,j) << delimiter; } out_file << m_chain(i,size_t(m_num_dims-1)) <<std::endl; } } out_file.close(); }