Parallelizing Polyhedral volume computation

asked 2017-03-08 00:00:25 -0500

dracoTheDragon gravatar image

For an application, I need to compute volumes of convex polytopes of dimension of about 300. The polytopes of interest have a restricted form:

$$ P:={ (x_1,x_2,\ldots,x_n) } ~\text{with} \ 0\leq x_i\leq x_{i+1} \leq L,\ l\leq x_i - x_{i+1} \leq u $$ where $L,u,l$ are known positive constants.

On my laptop, the polytope volume computation routine takes about 3 hours to compute for $n=9$, and freezes for larger $n$, making it useless for most interesting cases of my application.

Is there an easy way to parallelize the volume routine?

Perhaps by a straightforward use of the [multiprocessing] module, when running on a cluster ?

A more advanced use case, which also arises in my application, lies in computing integrals over the polytope: $\int_{P} f(\mathbf{x}) d\mathbf{x}$, where $f$ is a symmetric function of its arguments. I would greatly be interested in techniques that extend to this case as well.

edit retag flag offensive close merge delete



In version 7.6.beta6, there is a computational engine, LattE integrale, that is interfaced with Sage. See #18232 and related tickets. It allows to handle your second use case out-of-the-box! (technically, once installed the optional latte_int package). For the volume computation, it adds an alternative to the polytope triangulation method, namely a cone-decomposition-based algorithm, see LattE documentation for further details. for curiosity, can you put the data somewhere? (SageMathCloud?)

mforets gravatar imagemforets ( 2017-03-08 15:36:47 -0500 )edit

Does latte integrale scale to 300 dimensions?

dracoTheDragon gravatar imagedracoTheDragon ( 2017-03-09 10:33:59 -0500 )edit

I was asking for the data because it would be easy for me to give it a try :) but I cannot help you much further than that.

mforets gravatar imagemforets ( 2017-03-09 11:37:06 -0500 )edit