Set Programming with JuMP
In domains such as control, machine learning and information theory, many problems are defined on sets with an implicit characterization, e.g., maximal/minimal set satisfying some invariance condition, containing certain points, contained in some given sets, etc... While searching over all possible sets is often intractable, restricting the attention to a specific family can enable the computation of a set satisfying the required conditions, although not being maximal/minimal. Depending on the chosen family, the tools used to carry out the computation can be either semidefinite programming, linear programming, polyhedral computation or even dual dynamic programming. The choice of a particular family to use for a project may be guided by the familiarity with one of these tools and a poor separation between the set computation part and the rest of the project may render the whole project difficult to apprehend for someone non-expert in the chosen tool. We introduce the SetProg JuMP extension which allows to model at the abstract level of sets without the need to dig into any technicality due to a particular choice of family. This enables a clear separation between the set-theoretic constraints that are imposed on the sets and the technicalities induced by a particular family. Moreover, this allows to easily switch between different approaches in order to use the technique more suited to the problem at hand without the need of expert knowledge in the required tools.
