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
- Fix some dimension to a fixed value to reduce the dimension with
fixandeliminate, this is very cheap to do. - Project the polyhedron along some of the 24 axis. I would recommend using CDDLib with
CDDLib.BlockElimination()as algorithm, this is expensive to do. - 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.