Stop Julia at certain optimiality gap and return decision variables


I have a MILP problem and I am trying to solve it using CPLEX package through JuMP in Julia Language. However, the problem takes a long time to be solved. Is there a way to stop the program and return decision variables when the optimality gap reaches for example 10%. Thank you.


I haven’t used CPLEX, but I believe you can do:

m = Model(solver=CplexSolver(CPX_PARAM_EPGAP=1e-2))


setsolver(m, CplexSolver(CPX_PARAM_EPGAP=1e-2))


(the above assumes you are using CPLEX through JuMP, which I just realized you didn’t actually say).


Thank you, it works.


Yes, I am using CPLEX through JuMP.
Sorry for not mentioning it.


Hi @rdeits,

I am using Julia 1.1.0 and following packages:

“Clp” => v"0.6.1"
“Atom” => v"0.7.14"
“CPLEX” => v"0.4.3"
“JuMP” => v"0.19.0"
“Juno” => v"0.5.4"
“Conda” => v"1.2.0"
“ExcelReaders” => v"0.10.3"
“MathProgBase” => v"0.7.7"
“XLSX” => v"0.4.6"
“Cbc” => v"0.6.0"
“DataFrames” => v"0.17.1".

I am trying to set m = Model(solver=CplexSolver(CPX_PARAM_EPGAP=1e-2)), but I am getting the following error:

The solver= keyword is no longer available in JuMP 0.19 and later.

However, they are suggesting a link for the reference which is somehow not a valid link.

Any help in this regard would be highly appreciated. Also, could you please share any link where I can find how to set different stopping criteria for the CPLEX solver through JuMP?


JuMP has been updated.

The new syntax is

m = Model(with_optimizer(CPLEX.Optimizer, CPX_PARAM_EPGAP=1e-2))


Thanks, @odow . Any idea where can I find the list of keywords to set the stopping criteria, example: absolute MIP gap, relative MIP gap, time etc.? Also, is there a way to set a warm start?


The list of CPLEX parameters can be found here:

Warmstarts can set set using

These were mistakenly missing from the docs:


You’ll soon discover that it’s extremely clunky to navigate the parameter list using the web interface. Luckily IBM also makes a nice easily searchable PDF of the whole thing, but to my knowledge they don’t actually link to it anywhere. Some time ago I googled my way to an old version and then found the latest one by just modifying the URL:

By the way, I think the old parameter names are being deprecated. So if you want to future proof your code you may want to use the newer more verbose names, e.g. CPXPARAM_MIP_Tolerances_MIPGap instead of CPX_PARAM_EPGAP.