Question regarding TIME_LIMIT status


I am trying to solve some optimization problems using JuMP + CPLEX. Since some problems take a long time I define a time limit of 3600 seconds for my model :

model = Model(CPLEX.Optimizer)
set_optimizer_attribute(model, “CPX_PARAM_TILIM”, 3600)

During the resolution it seems quite clear that there are dual solutions. Here is an extract of the solver’s output :

Iteration log . . .
Iteration: 1 Dual objective = 17.000000
Iteration: 279 Dual objective = 103.439732
Iteration: 611 Dual objective = 123.893585
Iteration: 942 Dual objective = 136.268979
Iteration: 1305 Dual objective = 141.619549

I am interested in these dual objective values, however I cannot query them. As soon as the time limit is reached, I get the following :

ERROR: AssertionError: MOI.get(model, MOI.TerminationStatus()) == MOI.INFEASIBLE

This happens on the line where I call optimize! . I expected to get a status such as MOI.TIME_LIMIT and still be able to query information about the model. Am I doing something wrong, or is there a problem with JuMP / CPLEX.jl ?

I am on Julia 1.3.1, JuMP 0.21.2, and CPLEX.jl 0.6.5, thank you for reading.

This was fixed in a recent commit. I will prepare a new release, but you can test that it works with

] add CPLEX#master
1 Like

Thank you very much ! I’ll be trying that right away.