Closed chriscoey closed 7 years ago
yes we have this - set pass_mip_sols = false
. it never registers the heuristic callback
Ok, worth testing
for iterative, cplex has the option CPX_MIPSTART_NOCHECK
https://www.ibm.com/support/knowledgecenter/SS9UKU_12.7.0/com.ibm.cplex.zos.help/CPLEX/UsrMan/topics/discr_optim/mip/para/49_mipStarts.html
Level 5: CPX_MIPSTART_NOCHECK CPLEX does not delay processing to perform the usual checks. CPLEX checks only whether the MIP start is a complete solution; if the MIP start is not a complete solution, CPLEX rejects it. If the MIP start is a complete solution, CPLEX performs no further checks. At this level, CPLEX does not delay processing to check whether any constraints in the MIP start were designated as lazy constraints in the model, for example. If the solution defined by the MIP start is infeasible, behavior is undefined, as a consequence of this lack of checking.
CBC julia interface checks feasibility https://github.com/JuliaOpt/Cbc.jl/blob/master/src/CbcSolverInterface.jl#L203
it ignores solutions that don't satisfy its arbitrary 1e-6 tolerance
ok with that PR https://github.com/JuliaOpt/Cbc.jl/pull/46 we may get a good speed up on iterative with CBC. it should accept the warm-start solution regardless of feasibility and use it as a bound. it is not default so have to set check_warmstart = false
for heuristic callback, if you give CPLEX(.jl) a full solution, it will accept it without validating
We should have an option to disable the heuristic callback in pajarito even when dual cuts are used. It may end up being faster.