JuMP model Polyhedron

There is an example here which projects on an orthogonal 3D basis which is not aligned with the original axis.

To make it clearer, you have a 24-dimensional H-represented polyhedron. You would like to have a 3-dimensional view of it. You have 3 operations you can do

  1. Fix some dimension to a fixed value to reduce the dimension with fixandeliminate, this is very cheap to do.
  2. Project the polyhedron along some of the 24 axis. I would recommend using CDDLib with CDDLib.BlockElimination() as algorithm, this is expensive to do.
  3. Project it along combinations of the 24 axis as in the example mentioned above, this requires computing the V-representaiton of the 24 axis first, this is very expensive to do.

You can of course combine different operations, I would recommend starting with 1) to cheaply reduce the dimensionality as lower dimensional operations are usually cheaper.

The pset and I are vector if indices from 1 to 24. For project, they are the dimension you project to and for fixandeliminate, they are the dimension that are fixed to the corresponding values in v and then eliminated.

To see which dimension corresponds to which JuMP variable, use dimension_names as shown in this example.
Of course, this suppose you set names to your JuMP variables.

3 Likes