I solve a MILP with my proper callback function:
At a CB_MIPSOL event, a restricted problem is solved where all integer variables are fixed to their current values in the MILP solution.
If the restricted problem is feasible, its solution is recorded to be imported (using cbSetSolution/cbUseSolution) at the next CB_MIPNODE event.
Some lazy cuts are also added in-between.
This is a minimization problem. When testing I encountered this (> are my printings at CB_MIPSOL and CB_MIPNODE):
> MIPSOL NOD_CNT=5888: OBJ=175.96778781100244, restricted_obj: 175.9647395334268
H 5888 3010 175.9677878 174.08247 1.07% 21.6 21s
> MIPNODE NOD_CNT=5888: OBJ_BST=175.96778781100244
> import solution: SetSolution(175.9647395334268) -> UseSolution=175.9647395334269
> MIPSOL NOD_CNT=5888: OBJ=175.9647395334269
H 5888 3006 175.9647395 174.08247 1.07% 21.6 21s
It seems that the solver heuristic (H) has computed an integer solution of cost 175.9678 raising a CB_MIPSOL event.
But there exists another integer feasible solution with the same integer values (only some fractional values differ) of lowest cost:
the solver has indeed accepted the solution of cost 175.9647.
Is it possible that the heuristic integer solution returned at CB_MIPSOL is not LP-optimal (with all integer variables fixed) ?
Thank you !
Please sign in to leave a comment.