24 #include <boost/serialization/export.hpp> 25 #include <boost/archive/text_iarchive.hpp> 26 #include <boost/archive/text_oarchive.hpp> 27 #include <boost/archive/xml_iarchive.hpp> 28 #include <boost/archive/xml_oarchive.hpp> 39 #include <unordered_map> 41 #include <boost/serialization/base_object.hpp> 42 #include <boost/serialization/nvp.hpp> 43 #include <boost/serialization/vector.hpp> 47 using namespace Eigen;
52 MetaParametersRBFN::MetaParametersRBFN(
int expected_input_dim,
const std::vector<Eigen::VectorXd>& centers_per_dim,
double intersection_height,
double regularization)
55 n_bfs_per_dim_(VectorXi::Zero(0)),
56 centers_per_dim_(centers_per_dim),
57 intersection_height_(intersection_height),
58 regularization_(regularization)
60 assert(expected_input_dim==(
int)centers_per_dim_.size());
61 for (
unsigned int dd=0; dd<centers_per_dim_.size(); dd++)
62 assert(centers_per_dim_[dd].size()>0);
63 assert(intersection_height_>0 && intersection_height_<1);
64 assert(regularization>=0.0);
67 MetaParametersRBFN::MetaParametersRBFN(
int expected_input_dim,
const Eigen::VectorXi& n_bfs_per_dim,
double intersection_height,
double regularization)
70 n_bfs_per_dim_(n_bfs_per_dim),
71 centers_per_dim_(
std::vector<
Eigen::VectorXd>(0)),
72 intersection_height_(intersection_height),
73 regularization_(regularization)
75 assert(expected_input_dim==n_bfs_per_dim_.size());
76 for (
int dd=0; dd<n_bfs_per_dim_.size(); dd++)
77 assert(n_bfs_per_dim_[dd]>0);
78 assert(intersection_height_>0 && intersection_height_<1);
79 assert(regularization>=0.0);
82 MetaParametersRBFN::MetaParametersRBFN(
int expected_input_dim,
int n_bfs,
double intersection_height,
double regularization)
85 n_bfs_per_dim_(VectorXi::Constant(1,n_bfs)),
86 centers_per_dim_(
std::vector<
Eigen::VectorXd>(0)),
87 intersection_height_(intersection_height),
88 regularization_(regularization)
90 assert(expected_input_dim==n_bfs_per_dim_.size());
91 for (
int dd=0; dd<n_bfs_per_dim_.size(); dd++)
92 assert(n_bfs_per_dim_[dd]>0);
93 assert(intersection_height_>0 && intersection_height_<1);
94 assert(regularization>=0.0);
100 if (centers_per_dim_.size()>0)
112 assert(min.size()==n_dims);
113 assert(max.size()==n_dims);
115 vector<VectorXd> centers_per_dim_local(n_dims);
116 if (!centers_per_dim_.empty())
118 centers_per_dim_local = centers_per_dim_;
123 for (
int i_dim=0; i_dim<n_dims; i_dim++)
124 centers_per_dim_local[i_dim] = VectorXd::LinSpaced(n_bfs_per_dim_[i_dim],min[i_dim],max[i_dim]);
128 vector<VectorXd> widths_per_dim_local(n_dims);
129 for (
int i_dim=0; i_dim<n_dims; i_dim++)
131 VectorXd cur_centers = centers_per_dim_local[i_dim];
132 int n_centers = cur_centers.size();
133 VectorXd cur_widths(n_centers);
151 for (
int cc=0; cc<n_centers-1; cc++)
153 double w = sqrt(pow(cur_centers[cc+1]-cur_centers[cc],2)/(-8*log(intersection_height_)));
156 cur_widths[n_centers-1] = cur_widths[n_centers-2];
158 widths_per_dim_local[i_dim] = cur_widths;
161 VectorXd digit_max(n_dims);
163 for (
int i_dim=0; i_dim<n_dims; i_dim++)
165 n_centers = n_centers*centers_per_dim_local[i_dim].size();
166 digit_max[i_dim] = centers_per_dim_local[i_dim].size();
168 VectorXi digit = VectorXi::Zero(n_dims);
170 centers.resize(n_centers,n_dims);
171 widths.resize(n_centers,n_dims);
174 while (digit[0]<digit_max(0))
176 for (
int i_dim=0; i_dim<n_dims; i_dim++)
178 centers(i_center,i_dim) = centers_per_dim_local[i_dim][digit[i_dim]];
179 widths(i_center,i_dim) = widths_per_dim_local[i_dim][digit[i_dim]];
185 for (
int i_dim=n_dims-1; i_dim>0; i_dim--)
187 if (digit[i_dim]>=digit_max[i_dim])
197 template<
class Archive>
198 void MetaParametersRBFN::serialize(Archive & ar,
const unsigned int version)
203 ar & BOOST_SERIALIZATION_NVP(n_bfs_per_dim_);
204 ar & BOOST_SERIALIZATION_NVP(centers_per_dim_);
205 ar & BOOST_SERIALIZATION_NVP(intersection_height_);
206 ar & BOOST_SERIALIZATION_NVP(regularization_);
#define RETURN_STRING_FROM_BOOST_SERIALIZATION_XML(name)
Macro to convert the boost XML serialization of an object into a string.
Header file to generate strings from boost serialized files.
Header file for serialization of Eigen matrices.