Learn R Programming

⚠️There's a newer version (1.1.2-9) of this package.Take me there.

Volume computation and sampling

About

The volesti package provides R with functions for volume estimation and sampling. In particular, it provides an R interface for the C++ library volesti.

volesti computes approximations of volume of polytopes given as a set of points or linear inequalities or as a Minkowski sum of segments (zonotopes). There are two algorithms for volume approximation as well as algorithms for sampling, rounding and rotating polytopes.

Download and install

  • The latest stable version is available from CRAN.

  • The latest development version is available on Github www.github.com/GeomScale/volume_approximation

  • Install volesti by running:

install.packages("volesti")
  • The package-dependencies are: Rcpp, RcppEigen, BH.

Usage

  • The main function is volume(). It can be used to approximate the volume of a convex polytope given as a set of linear inequalities or a set of vertices (d-dimensional points) or as a Minkowski sum of segments (zonotope). There are two algorithms that can be used. The first is SequenceOfBalls and the second is CoolingGaussian.
  • sample_points() can be used to sample points from a convex polytope approximating uniform or multidimensional spherical gaussian target distribution using: (a) coordinate directions hit-and-run (default), (b) random directions hit-and-run or (c) ball walk. This function can be used as well in order to sample exact uniform points from simplices and the boundary or the interior of hyperspheres.
  • round_polytope() can be used to round a convex polytope.
  • rand_rotate() can be used to apply a random rotation to a convex polytope.
  • GenCross() can be used to generate a d-dimensional cross polytope.
  • GenCube() can be used to generate a d-dimensional unit cube.
  • GenProdSimplex() can be used to generate a 2d-dimensional polytope that is defined as the product of two d-dimensional unit simplices.
  • GenSimplex() can be used to generate the d-dimensional unit simplex.
  • GenSkinnyCube() can be used to generate a d-dimensional skinny hypercube.
  • GenRandHpoly() can be used to generate a d-dimensional polytope in H-representation with m facets.
  • GenRandVpoly() can be used to generate a d-dimensional polytope in V-representation with m vertices.
  • GenZonotope() can be used to generate a random d-dimensional zonotope defined by the Minkowski sum of m d-dimensional segments.
  • fileToMatrix() takes the path for an ine or an ext file and returns the corresponding polytope.
  • SliceOfSimplex() can be used to evaluate the portion of of the d-dimensional unit simplex contained in a given half-space using M. Ali's version of G. Varsi's iterative formula.
  • InnerBall() can be used to compute an inscribed ball of a convex polytope (works for all the representations).
  • copula1() can be used to compute the copula when two families of parallel hyperplanes are given.
  • copula2() can be used to compute the copula when one familiy of parallel hyperplanes and a family of concentric ellipsoids are given.

For more details, features, examples and references you can read the documentation.

Credits

Copyright (c) 2012-2019 Vissarion Fisikopoulos
Copyright (c) 2018-2019 Apostolos Chalkis

You may redistribute or modify the software under the GNU Lesser General Public 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.

Main development by Vissarion Fisikopoulos while he was affiliated with University of Athens (UoA, Greece) and University of Brussels (ULB, Belgium), and Chalkis Apostolos affiliated with University of Athens. Part of the development was done while A.Chalkis (as student) and V.Fisikopoulos (as mentor) were participating in Google Summer of Code 2018 program.

Publications

  1. I.Z. Emiris and V. Fisikopoulos, Efficient random-walk methods for approximating polytope volume, In Proc. ACM Symposium on Computational Geometry, Kyoto, Japan, p.318-325, 2014.
  2. I.Z. Emiris and V. Fisikopoulos, Practical polytope volume approximation, ACM Transactions on Mathematical Software, vol 44, issue 4, 2018.
  3. L. Cales, A. Chalkis, I.Z. Emiris, V. Fisikopoulos, Practical volume computation of structured convex bodies, and an application to modeling portfolio dependencies and financial crises, Proc. of Symposium on Computational Geometry, Budapest, Hungary, 2018.

Copy Link

Version

Install

install.packages('volesti')

Monthly Downloads

382

Version

1.0.0

License

LGPL-3

Maintainer

Vissarion Fisikopoulos

Last Published

May 13th, 2019

Functions in volesti (1.0.0)

Hpolytope

An R class to represent H-polytopes.
Zonotope

An R class to represent zonotopes.
GenCube

Generator function for hypercubes
Rcpp_IntVP

An Rcpp class to represent the intersection of two V-polytope, exposed to R via modules.
GenProdSimplex

Generator function for product of simplices
GenRandHpoly

Generator function for random H-polytopes
GenSkinnyCube

Generator function for skinny hypercubes
copula2

Construct a copula using uniform sampling from the unit simplex
GenZonotope

Generator function for zonotopes
copula1

Construct a copula using uniform sampling from the unit simplex
IntVP

An R class to represent the intersection of two V-polytopes.
SliceOfSimplex

Compute the percentage of the volume of the unit simplex that is contained in the intersection of a half-space and the unit simplex.
volume

The main function for volume approximation of a convex Polytope (H-polytope, V-polytope or a zonotope)
sample_points

Sample points from a convex Polytope (H-polytope, V-polytope or a zonotope) or use direct methods for uniform sampling from the unit or the canonical or an arbitrary \(d\)-dimensional simplex and the boundary or the interior of a \(d\)-dimensional hypersphere
Rcpp_Vpolytope

An Rcpp class to represent V-polytopes, exposed to R via modules.
rounding

Internal rcpp function for the rounding of a convex polytope
Rcpp_Hpolytope

An Rcpp class to represent H-polytopes, exposed to R via modules.
Rcpp_Zonotope

An Rcpp class to represent zonotopes, exposed to R via modules.
exact_vol

Compute the exact volume of (a) a zonotope (b) an arbitrary simplex (c) a unit simplex (d) a cross polytope (e) a hypercube
fileToMatrix

function to get an ine or an ext file and returns the corresponding polytope
rotating

An internal Rccp function for the random rotation of a convex polytope
round_polytope

Apply rounding to a convex polytope (H-polytope, V-polytope or a zonotope)
GenSimplex

Generator function for simplices
InnerBall

Compute an inscribed ball of a convex polytope
GenCross

Generator function for cross polytopes
GenRandVpoly

Generator function for random V-polytopes
poly_gen

An internal Rccp function as a polytope generator
rand_rotate

Apply a random rotation to a convex polytope (H-polytope, V-polytope or a zonotope)
Vpolytope

An R class to represent V-polytopes.