Originally posted by: AndreaTramontani
Dear Nadere,
sorry for the delay of this reply.
Unfortunately, if you have an unbounded SOCP, in CPLEX there is no way to query an unbounded ray. This functionality is only available for an LP.
However, there is an easy workaround for this.
In summary, talking about Benders, if you have an unbounded SOCP, you know you have a violated feasibility cut. Thus, you can take the homogeneous version of your SOCP, add a normalization
constraint that makes it bounded, solve it again and construct a feasibility cut from the optimal solution of this bounded SOCP.
Note that CPLEX (starting from release 12.7.0) has a Benders decomposition solver.
This is for Mixed Integer Linear Programming (MILP) only, but feasibility cuts in CPLEX are separated following an approach pretty similar to what described above.
I.e., when the Benders sub-problem (in the dual space) is unbounded, in order to separate a feasibility cut CPLEX considers the homogeneous version of the problem,
adds a normalization constraint that makes the sub-problem bounded (and that maps extreme rays to vertices), and solves again the bounded sub-problem to construct a feasibility
cut from the optimal solution.
The idea implemented in CPLEX is inspired to this paper:
M. Fischetti, D. Salvagnin, A. Zanette, "A note on the selection of Benders' cuts", Mathematical Programming 124, 175-182, 2010.
And you can find a preliminary (and longer) version of the paper at http://www.dei.unipd.it/~fisch/papers/Benders_mis_extended_draft.pdf
Also, for what concern CPLEX 12.8.0 implementation of Benders, you can have a look at slide 12 of the attached presentation that explains (in quick summary) the normalization.
As I said, in CPLEX Benders decomposition is supported for MILP only, and also the paper I mentioned above is focused on MILP.
However, the normalization of the Benders sub-problem is a general idea that can be extended to SOCP as well.
Hope this can help you.
Andrea
#CPLEXOptimizers#DecisionOptimization