Skip to content

Commit 9be4f78

Browse files
committed
Activate all examples
1 parent dce66d6 commit 9be4f78

File tree

1 file changed

+39
-54
lines changed

1 file changed

+39
-54
lines changed

examples/sample_points/simple_example.cpp

Lines changed: 39 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ template< typename SpMat, typename VT>
130130
void 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

161161
int 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

Comments
 (0)