jump-dev / Pajarito.jl

A solver for mixed-integer convex optimization
Mozilla Public License 2.0
131 stars 22 forks source link

look at cplex docs for warm-start / heuristic callback options #302

Closed chriscoey closed 7 years ago

mlubin commented 7 years ago

We should have an option to disable the heuristic callback in pajarito even when dual cuts are used. It may end up being faster.

chriscoey commented 7 years ago

yes we have this - set pass_mip_sols = false. it never registers the heuristic callback

mlubin commented 7 years ago

Ok, worth testing

chriscoey commented 7 years ago

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.

chriscoey commented 7 years ago

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

chriscoey commented 7 years ago

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

chriscoey commented 7 years ago

for heuristic callback, if you give CPLEX(.jl) a full solution, it will accept it without validating