|
1 | 1 | <p align="center"><img src="docs/logo/volesti_logo.jpg"></p> |
2 | 2 |
|
3 | | -**VolEsti** is a `C++` library for volume approximation and sampling of convex bodies (*e.g.* polytopes) with an `R` interface. For a limited `Python` interface we refer to package [dingo](https://github.com/GeomScale/dingo). **VolEsti** is part of the [GeomScale](https://geomscale.github.io) project. |
| 3 | +**VolEsti** is a `C++` library for volume approximation and sampling of convex bodies (*e.g.* polytopes, spectrahedra) with an `R` interface. For a `Python` interface see [dingo](https://github.com/GeomScale/dingo). **VolEsti** is part of the [GeomScale](https://geomscale.github.io) project. |
4 | 4 |
|
5 | 5 | [](https://cran.r-project.org/package=volesti) |
6 | 6 | [](https://cran.r-project.org/package=volesti) |
|
21 | 21 | [](https://github.com/GeomScale/volesti/actions?query=workflow%3AR-CMD-macOS) |
22 | 22 | [](https://github.com/GeomScale/volesti/actions?query=workflow%3AR-CMD-windows) |
23 | 23 |
|
| 24 | +### 📖 Citing VolEsti |
| 25 | + |
| 26 | +If you use **volesti** in your research, please cite: |
| 27 | + |
| 28 | +> A. Chalkis, V. Fisikopoulos, M. Papachristou, E. Tsigaridas. |
| 29 | +> **volesti: A C++ library for sampling and volume computation on convex bodies.** |
| 30 | +> *Journal of Open Source Software*, 10(108):7886, 2025. |
| 31 | +> [](https://doi.org/10.21105/joss.07886) |
| 32 | +
|
| 33 | +For the R interface: |
| 34 | +> A. Chalkis, V. Fisikopoulos. |
| 35 | +> **volesti: Volume Approximation and Sampling for Convex Polytopes in R.** |
| 36 | +> *The R Journal*, 13(2):642–660, 2021. |
| 37 | +> DOI: [10.32614/RJ-2021-077](https://doi.org/10.32614/RJ-2021-077) |
| 38 | +
|
| 39 | +For specific algorithms (Cooling Balls, Reflective HMC, CRHMC, spectrahedra, |
| 40 | +etc.), see [Publications](docs/misc/publications.md) and |
| 41 | +[Research & Bibliography](docs/misc/research.md). |
| 42 | + |
| 43 | +### 🚀 Quick Start |
| 44 | + |
| 45 | +```cpp |
| 46 | +#include "volume/volume_cooling_hpoly.hpp" |
| 47 | + |
| 48 | +// Define a 3D cube H-polytope |
| 49 | +Eigen::MatrixXd A(6, 3); |
| 50 | +Eigen::VectorXd b(6); |
| 51 | +A << 1, 0, 0, |
| 52 | + -1, 0, 0, |
| 53 | + 0, 1, 0, |
| 54 | + 0, -1, 0, |
| 55 | + 0, 0, 1, |
| 56 | + 0, 0, -1; |
| 57 | +b << 1, 1, 1, 1, 1, 1; |
| 58 | +HPolytope P(A, b); |
| 59 | + |
| 60 | +// Approximate its volume |
| 61 | +std::pair<double, double> vol = volume(P); // ~8.0 |
| 62 | +``` |
| 63 | +
|
| 64 | +See [Getting Started](https://volesti.readthedocs.io/en/latest/getting_started/install.html) |
| 65 | +for full build instructions. |
| 66 | +
|
| 67 | +### ✨ Key Features |
| 68 | +
|
| 69 | +| Feature | Algorithms | Papers | |
| 70 | +|---------|-----------|--------| |
| 71 | +| **Volume Computation** | Cooling Balls (CB), Cooling Gaussians (CG), Sequence of Balls (SOB), CRHMC variants | Chalkis et al. 2023 ([JEA](https://doi.org/10.1145/3584182)); Emiris & Fisikopoulos 2018 ([TOMS](https://doi.org/10.1145/3194656)) | |
| 72 | +| **Uniform Sampling** | Billiard, Ball Walk, CDHR, RDHR, Dikin, John, Vaidya, Shake-and-Bake | Chalkis et al. 2019/2023; Emiris & Fisikopoulos 2014 ([SoCG](https://doi.org/10.1145/2582112.2582133)) | |
| 73 | +| **Log-Concave Sampling** | Reflective HMC, CRHMC, Langevin, NUTS, Boltzmann HMC | Chalkis et al. 2023 ([TOMS](https://doi.org/10.1145/3589505)); Kook et al. 2022 ([NeurIPS](https://arxiv.org/abs/2303.00480)) | |
| 74 | +| **Convex Body Types** | H-polytopes, V-polytopes, Zonotopes, Spectrahedra, Order Polytopes, general ConvexBody | Chalkis et al. 2022 ([LAA](https://doi.org/10.1016/j.laa.2022.04.002)) | |
| 75 | +| **Rounding** | SVD, inscribed ellipsoid, min-covering ellipsoid | Emiris & Fisikopoulos 2018 | |
| 76 | +| **SDP Solver** | Simulated Annealing + Reflective HMC | Chalkis et al. 2020/2023 | |
| 77 | +| **MCMC Diagnostics** | PSRF (Gelman-Rubin), ESS, Geweke, Raftery-Lewis | Gelman & Rubin 1992 | |
| 78 | +
|
| 79 | +Performance highlights: |
| 80 | +- Volume estimation scales to **thousands of dimensions** for H-polytopes |
| 81 | +- 20–130× faster than prior state-of-the-art on standard benchmarks |
| 82 | +- First practical volume estimation for V- and Z-polytopes |
| 83 | +- Sampled the **5,335-dimensional** Recon3D human metabolic network in <30 hours |
| 84 | +
|
24 | 85 | ### 📄 Documentation |
25 | 86 |
|
26 | 87 | * [Package documentation](https://volesti.readthedocs.io) |
27 | 88 | * [Wikipage with Tutorials and Demos](https://github.com/GeomScale/volesti/wiki) |
28 | | -* [Tutorial given to PyData meetup](https://vissarion.github.io/tutorials/volesti_tutorial_pydata.html) |
| 89 | +* [Research & Bibliography](docs/misc/research.md) — paper-to-code mapping |
| 90 | +* [Publications](docs/misc/publications.md) — complete bibliography |
29 | 91 | * [Tutorial on (truncated) logconcave sampling (R and C++)](https://papachristoumarios.github.io/2020/07/21/Sampling-from-high-dimensional-truncated-log-concave-densities-with-volesti) |
30 | 92 | * [Contributing](CONTRIBUTING.md) |
31 | 93 |
|
32 | 94 | ### ⭐ Credits |
33 | 95 |
|
34 | 96 | * [Contributors and Package History](docs/misc/credits.md) |
35 | 97 | * [List of Publications](docs/misc/publications.md) |
| 98 | +* [Research & Bibliography](docs/misc/research.md) |
36 | 99 |
|
37 | 100 | ### © Copyright and Licensing |
38 | 101 |
|
39 | | -Copyright (c) 2012-2024 Vissarion Fisikopoulos\ |
40 | | -Copyright (c) 2018-2024 Apostolos Chalkis\ |
41 | | -Copyright (c) 2020-2024 Elias Tsigaridas |
| 102 | +Copyright (c) 2012–2025 Vissarion Fisikopoulos\ |
| 103 | +Copyright (c) 2018–2025 Apostolos Chalkis\ |
| 104 | +Copyright (c) 2020–2025 Elias Tsigaridas |
42 | 105 |
|
43 | | -You may redistribute or modify the software under the [GNU Lesser General Public License](/LICENSE) as published by Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. |
| 106 | +You may redistribute or modify the software under the [GNU Lesser General Public License](/LICENSE) as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. |
0 commit comments