Get infeasibility certificate in CPLEX or Gurobi

Hi,

I’m trying to retrieve an extreme/dual infeasibility ray from a JuMP Model. I tried to do so with the GLPK, CPLEX, and Gurobi Solvers. I currently have the following versions installed:

  [a076750e] CPLEX v0.7.3
  [60bf3e95] GLPK v0.14.2
  [2e9cd046] Gurobi v0.9.3
  [4076af6c] JuMP v0.21.5

When I pose the following problem:

m = Model(GLPK.Optimizer)
@variable(m, x[1:2] >= 0)
@objective(m, Max, sum(x))
optimize!(m)

then primal_status(m) returns INFEASIBILITY_CERTIFICATE::ResultStatusCode = 4 for GLPK, but NO_SOLUTION::ResultStatusCode = 0 for CPLEX and Gurobi. Hence I can only access the ray for the GLPK solved model. However, if I add the constraint @constraint(m, x[2] >= 3) to the model above, then julia crashes with

glp_eval_tab_col: k = 3; variable must be non-basicError detected in file draft/glpapi12.c at line 936

signal (6): Abort trap: 6
in expression starting at REPL[22]:1
__pthread_kill at /usr/lib/system/libsystem_kernel.dylib (unknown line)
Allocations: 114915766 (Pool: 114881956; Big: 33810); GC: 106
Abort trap: 6

upon optimizing with GLPK (CPLEX and Gurobi work as before). Now, this is obviously a toy problem, but I experience the same core dump/no infeasibility certificate in the actual problem I am trying to solve. So, basically, I have two questions:

  • Are CPLEX and Gurobi not supposed to provide infeasibility certificates (I couldn’t find detailed information on that end)?
  • Is there an alternative (free academic license) LP/NLP solver that can give me an infeasibility certificate without crashing?

Thank you for your help!

Can’t say for sure without the exact log, but…
I would guess that CPLEX/Gurobi solved the problem at presolve. For Gurobi you can try setting the InfUnbdInfo parameter manually.

As for GLPK, this looks like an internal error.

3 Likes

Correct. You need to set additional parameters for CPLEX/Gurobi. For CPLEX

set_optimizer_attribute(model, "CPX_PARAM_REDUCE", 0)

The GLPK looks like a bug. Open an issue.

2 Likes

Thanks, that was it! I’ll open an issue w.r.t. GLPK