How can I algorithmically detect whether an (MI)NLP problem is unbounded or not?
Finding a source for this has proven tricky, because people in the literature seem to talk a lot about what to do if a problem is unbounded, but rarely about how to algorithmically detect that it is.
I have considered checking whether the dual of the linear relaxation is proven to be infeasible, but linear solvers do not seem to report this very reliably, so that won't work for me.
I have also considered the trivial case where:
- I have an unbounded variable in the objective which does not appear anywhere else, and
- the case where a higher-order convex term containing that var in the objective is cancelling out the unboundedness.
What I'm not sure about is how to handle unbounded variables which are also present in constraints. Are you aware of a source with a set of rules (e.g., when foo and bar happen then the problem is unbounded) or something similar?