@@ -130,7 +130,7 @@ template< typename SpMat, typename VT>
130130void load_crhmc_problem (SpMat &A, VT &b, VT &lb, VT &ub, int &dimension,
131131 std::string problem_name) {
132132 {
133- std::string fileName (" ../crhmc_sampling /data/" );
133+ std::string fileName (" ./data/" );
134134 fileName.append (problem_name);
135135 fileName.append (" .mm" );
136136 if (!exists_check (fileName)){
@@ -144,7 +144,7 @@ void load_crhmc_problem(SpMat &A, VT &b, VT &lb, VT &ub, int &dimension,
144144 b = VT (X.col (dimension));
145145 }
146146 {
147- std::string fileName (" ../crhmc_sampling /data/" );
147+ std::string fileName (" ./data/" );
148148 fileName.append (problem_name);
149149 fileName.append (" _bounds.mm" );
150150 if (!exists_check (fileName)){
@@ -159,12 +159,10 @@ void load_crhmc_problem(SpMat &A, VT &b, VT &lb, VT &ub, int &dimension,
159159
160160
161161int main () {
162- // NEW INTERFACE Sampling
163162
164- // Inputs:
163+ // 1. Inputs:
165164
166- int d = 100 ;
167- int rnum = 1000 ;
165+ int d = 10 ;
168166
169167 // Generating a 3-dimensional cube centered at origin
170168 HPolytopeType HP = generate_cube<HPolytopeType>(d, false );
@@ -176,7 +174,7 @@ int main() {
176174 // Setup parameters for sampling
177175 Point q (HP.dimension ());
178176 RNGType rng (HP.dimension ());
179- /*
177+
180178 // Generating a sparse polytope/problem
181179 using SpMat = Eigen::SparseMatrix<NT>;
182180 using ConstraintProblem =constraint_problem<SpMat, Point>;
@@ -189,9 +187,10 @@ int main() {
189187 ConstraintProblem problem = ConstraintProblem (dimension);
190188 problem.set_equality_constraints (As, b);
191189 problem.set_bounds (lb, ub);
192- */
193190
194- // Walks
191+
192+ // 2. Walks
193+
195194 AcceleratedBilliardWalk abill_walk;
196195 AcceleratedBilliardWalk abill_walk_custom (10 ); // user defined walk parameters
197196 BallWalk ball_walk;
@@ -216,12 +215,12 @@ int main() {
216215 UnderdampedLangevinWalk uld_walk;
217216 CRHMCWalk crhmc_walk;
218217
219- // Distributions
218+ // 3. Distributions
220219
221- // 1. Uniform
220+ // Uniform
222221 UniformDistribution udistr{};
223222
224- // 2. Spherical
223+ // Spherical Gaussian
225224 SphericalGaussianDistribution sgdistr{};
226225
227226 MT A (2 , 2 );
@@ -230,12 +229,12 @@ int main() {
230229 Ellipsoid<Point> ell (A); // origin centered ellipsoid
231230 GaussianDistribution gdistr (ell);
232231
233- // 3. Exponential
232+ // Exponential
234233 NT variance = 1.0 ;
235234 auto c = GetDirection<Point>::apply (HP.dimension (), rng, false );
236235 ExponentialDistribution edistr (c, variance);
237236
238- // 4. LogConcave
237+ // LogConcave
239238
240239 std::pair<Point, NT> inner_ball = HP.ComputeInnerBall ();
241240 Point x0 = inner_ball.first ;
@@ -269,13 +268,13 @@ int main() {
269268
270269
271270
272- // Sampling
271+ // 4. Sampling
273272
274273 using NT = double ;
275274 using MT = Eigen::Matrix<NT,Eigen::Dynamic,Eigen::Dynamic>;
276275 using VT = Eigen::Matrix<NT,Eigen::Dynamic,1 >;
277276
278- // int rnum = 110 ;
277+ int rnum = 100 ;
279278 int nburns = 5 ;
280279 int walk_len = 1 ;
281280
@@ -284,52 +283,38 @@ int main() {
284283 // 1. the eigen matrix interface
285284 std::cout << " uniform" << std::endl;
286285 sample_points_eigen_matrix (HP, q, abill_walk, udistr, rng, 1 , rnum, nburns);
287- // sample_points_eigen_matrix(HP, q, abill_walk_custom, udistr, rng, walk_len, rnum, nburns);
288- // sample_points_eigen_matrix(HP, q, ball_walk, udistr, rng, 2*d, rnum, nburns);
289- // sample_points_eigen_matrix(HP, q, cdhr_walk, udistr, rng, 2*d, rnum, nburns);
290- // sample_points_eigen_matrix(HP, q, dikin_walk, udistr, rng, walk_len, rnum, nburns);
291- // sample_points_eigen_matrix(HP, q, john_walk, udistr, rng, walk_len, rnum, nburns);
292- // sample_points_eigen_matrix(HP, q, rdhr_walk, udistr, rng, 2*d, rnum, nburns);
293- // sample_points_eigen_matrix(HP, q, vaidya_walk, udistr, rng, walk_len, rnum, nburns);
294-
295- // Compute chebychev ball
296- std::pair<Point,NT> CheBall;
297- // CheBall = HP.ComputeInnerBall();
298-
299- // accelerated billiard
300- auto start = std::chrono::steady_clock::now ();
301- samples = accelerated_billiard_walk (HP, rng, 1 , rnum);
302- auto end = std::chrono::steady_clock::now ();
303- auto time = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count ();
304- std::cout << " time= " << time;
305- unsigned int min_ess;
306- auto score = effective_sample_size<NT, VT, MT>(samples, min_ess);
307- std::cout << " \t ess= " << min_ess << std::endl;
286+ sample_points_eigen_matrix (HP, q, abill_walk_custom, udistr, rng, walk_len, rnum, nburns);
287+ sample_points_eigen_matrix (HP, q, ball_walk, udistr, rng, 2 *d, rnum, nburns);
288+ sample_points_eigen_matrix (HP, q, cdhr_walk, udistr, rng, 2 *d, rnum, nburns);
289+ sample_points_eigen_matrix (HP, q, dikin_walk, udistr, rng, walk_len, rnum, nburns);
290+ sample_points_eigen_matrix (HP, q, john_walk, udistr, rng, walk_len, rnum, nburns);
291+ sample_points_eigen_matrix (HP, q, rdhr_walk, udistr, rng, 2 *d, rnum, nburns);
292+ sample_points_eigen_matrix (HP, q, vaidya_walk, udistr, rng, walk_len, rnum, nburns);
293+
308294
309- // std::cout << "shperical gaussian" << std::endl;
310- // sample_points_eigen_matrix(HP, q, gball_walk, sgdistr, rng, walk_len, rnum, nburns);
311- // sample_points_eigen_matrix(HP, q, gcdhr_walk, sgdistr, rng, walk_len, rnum, nburns);
312- // sample_points_eigen_matrix(HP, q, grdhr_walk, sgdistr, rng, walk_len, rnum, nburns);
313- // sample_points_eigen_matrix(HP, q, ghmc_walk, sgdistr, rng, walk_len, rnum, nburns);
295+ std::cout << " shperical gaussian" << std::endl;
296+ sample_points_eigen_matrix (HP, q, gball_walk, sgdistr, rng, walk_len, rnum, nburns);
297+ sample_points_eigen_matrix (HP, q, gcdhr_walk, sgdistr, rng, walk_len, rnum, nburns);
298+ sample_points_eigen_matrix (HP, q, grdhr_walk, sgdistr, rng, walk_len, rnum, nburns);
299+ sample_points_eigen_matrix (HP, q, ghmc_walk, sgdistr, rng, walk_len, rnum, nburns);
314300
315- // std::cout << "general gaussian" << std::endl;
316- // sample_points_eigen_matrix(HP, q, gbill_walk, gdistr, rng, walk_len, rnum, nburns);
301+ std::cout << " general gaussian" << std::endl;
302+ sample_points_eigen_matrix (HP, q, gbill_walk, gdistr, rng, walk_len, rnum, nburns);
317303
318- // std::cout << "exponential" << std::endl;
319- // sample_points_eigen_matrix(HP, q, ehmc_walk, edistr, rng, walk_len, rnum, nburns);
304+ std::cout << " exponential" << std::endl;
305+ sample_points_eigen_matrix (HP, q, ehmc_walk, edistr, rng, walk_len, rnum, nburns);
320306
321307 std::cout << " logconcave" << std::endl;
322- // sample_points_eigen_matrix(HP, q, hmc_walk, logconcave_reflective, rng, walk_len, rnum, nburns);
323- // sample_points_eigen_matrix(HP, q, nhmc_walk, logconcave_reflective, rng, walk_len, rnum, nburns);
324- // sample_points_eigen_matrix(HP, q, nhmc_walk, logconcave_ref_gaus, rng, walk_len, rnum, nburns);
325- // sample_points_eigen_matrix(HP, q, uld_walk, logconcave_ref_gaus, rng, walk_len, rnum, nburns);
308+ sample_points_eigen_matrix (HP, q, hmc_walk, logconcave_reflective, rng, walk_len, rnum, nburns);
309+ sample_points_eigen_matrix (HP, q, nhmc_walk, logconcave_reflective, rng, walk_len, rnum, nburns);
310+ sample_points_eigen_matrix (HP, q, nhmc_walk, logconcave_ref_gaus, rng, walk_len, rnum, nburns);
311+ sample_points_eigen_matrix (HP, q, uld_walk, logconcave_ref_gaus, rng, walk_len, rnum, nburns);
326312
327- // sample_points_eigen_matrix(HP, q, crhmc_walk, logconcave_crhmc, rng, walk_len, rnum, nburns);
313+ sample_points_eigen_matrix (HP, q, crhmc_walk, logconcave_crhmc, rng, walk_len, rnum, nburns);
328314 // The following will compile but segfauls since walk and distribution are not compatible
329315 // sample_points_eigen_matrix(HP, q, nhmc_walk, logconcave_crhmc, rng, walk_len, rnum, nburns);
330- // sample_points_eigen_matrix(problem, q, crhmc_walk, logconcave_crhmc, rng, walk_len, rnum, nburns);
331-
332- // sample_points_eigen_matrix(problem, q, crhmc_walk, logconcave_uniform, rng, walk_len, rnum, nburns);
316+ sample_points_eigen_matrix (problem, q, crhmc_walk, logconcave_crhmc, rng, walk_len, rnum, nburns);
317+ sample_points_eigen_matrix (problem, q, crhmc_walk, logconcave_uniform, rng, walk_len, rnum, nburns);
333318 sample_points_eigen_matrix (HP, q, crhmc_walk, logconcave_uniform, rng, walk_len, rnum, nburns);
334319 // sample_points_eigen_matrix(problem, q, nhmc_walk, logconcave_uniform2, rng, walk_len, rnum, nburns);
335320
0 commit comments