Open blegat opened 8 years ago
I don't know exactly how Benson works, but if it has some iterative process of linear solves and dual solves that can be passed to JuMP - that should be fine. We'd need to create a new linear multi-objective type as well.
I'm gonna give this a try. @blegat you didn't work on it on your side?
Not at all, please do :)
IIRC for the best performance, the double description method shouldn't restart the computation from scratch when intersecting with an halfspace.
For this reason, bensolve includes a modified version of CDD which does this.
We could make the change to https://github.com/JuliaPolyhedra/cddlib but it might be easier to apply it to pure Julia implementations of the double description such ashttps://github.com/JuliaPolyhedra/ConvexHull.jl and https://github.com/JuliaPolyhedra/Polyhedra.jl/blob/master/src/doubledescription.jl (which is used by the default library).
Note that ConvexHull
should be much faster than the default while https://github.com/JuliaPolyhedra/Polyhedra.jl/issues/25 are not implemented.
IIRC @joehuchette told me that what's missing in ConvexHull to be as fast as CDD is implementing ordering heuristics for halfspaces (see e.g. sections 4.1 and 4.2 of http://cgm.cs.mcgill.ca/~avis/doc/avis/ABS96a.ps) but for Benson's algorithms it might be less of an issue because the ordering of the halfspaces is fixed (we do not have a list to add at the beginning but we have a new one everytime we solve an LP then we add it then we resolve the LP, ...)
Do you think it would be possible to support Benson's algorithm (in a similar way to bensolve) in
MultiJuMP
when the model is detected to be linear ? It could be done using Polyhedra.jl. Benson's algorithm has a nice application for the Entropic Cone :-P