Ask Your Question

Arie's profile - activity

2018-06-20 12:35:58 +0200 received badge  Famous Question (source)
2017-09-22 06:16:51 +0200 received badge  Good Question (source)
2017-05-08 17:03:16 +0200 received badge  Notable Question (source)
2016-08-17 13:57:10 +0200 received badge  Nice Question (source)
2016-08-17 13:57:01 +0200 received badge  Popular Question (source)
2014-10-14 13:40:05 +0200 commented answer Speed of enumerating integer points in polytope

I'm trying to do an intermediately big case, where the dimension is 8, and the polytope has 1804 vertices. Latte Integrale has already been computing for over 20 minutes (just counting the points, for now), and there is no indication how long it will take. It just says: "431000 unimodular cones done", this number increasing by a 1000 every few seconds, but I don't know how many unimodular cones it must do.

2014-10-13 18:29:33 +0200 commented answer Speed of enumerating integer points in polytope

I see. It does not sound like a very convenient way to represent the thousands of points in somewhat higher-dimensional spaces of my other cases. I'll give it a try, though. Thanks for the suggestion!

2014-10-13 13:27:45 +0200 commented answer Speed of enumerating integer points in polytope

Unfortunately, it seems Latte Integrale does not enumerate the lattice points, it only counts them. I need the coordinates of all the integer points, for further calculations.

2014-10-11 23:31:28 +0200 received badge  Student (source)
2014-10-10 18:53:00 +0200 asked a question Speed of enumerating integer points in polytope

I'm trying to enumerate all integer points in some polytopes, but sage takes way too long.

This is a pretty minimal example of one of these polytopes.

q = MixedIntegerLinearProgram(maximization=False)
x = q.new_variable(integer=True, nonnegative=True)

q.add_constraint(     x[0] == 1)
q.add_constraint(88 * x[2] == -306 * x[0] + 1 * x[1])
q.add_constraint( 1 * x[3] == 42636 * x[0] + 42 * x[1])
q.add_constraint(11 * x[4] == 30804 * x[0] + -42 * x[1])

P = q.polyhedron()

P
# A 1-dimensional polyhedron in QQ^5 defined as the convex hull of 2 vertices

P.Vrepresentation()
# (A vertex at (1, 34/7, 5134/7, 73440, 0), A vertex at (1, 0, 306, 55488, 1632))

Now, I would like to enumerate the integral points in this (1-dimensional) polytope. Looking at the second coordinate of the two boundary points, it is clear there can be at most five such points (in fact, there are exactly five).

However, P.integral_points() seems to take forever.

Is there anything I can do to speed this up? I would like to do similar problems that are higher-dimensional, and have a lot more constraints (bounding hyperplanes).

Earlier, I used a MILP library (COIN) to solve the system, giving one integer point, then further constrain the system to exclude this solution, solve again, etc. This is fast enough for this particular example, but becomes unfeasible when the dimension of the polytope and/or the number of integer points increases.