Skip to main content

adjust ObjBound with CbcSetSolution



  • Elisabeth Rodriguez-Heck
    Gurobi Staff Gurobi Staff


    I understand that you want to set a feasible MIP solution using a callback.


    But can we force this feasible solution to be considered as the actual optimal solution at that node (instead of the LP solution), so that ObjBound could be improved accordingly ?

    The branch-and-bound algorithm solves LP relaxations at the nodes, so I don't understand what you mean by forcing the feasible MIP solution to be considered as the actual optimal solution of a node. 

    Concerning the Objective Bound improvement, if the solution you provide is indeed better as the best known feasible solution at that stage, then the \( \texttt{Incumbent} \) value will be updated accordingly. The \( \texttt{BestBd} \) value is related to the LP-relaxations, and cannot be changed by providing feasible MIP solutions. 

    I hope this answer helps.


  • Sophie Demassey
    First Comment
    First Question

    Hi Elisabeth, thank you and indeed it was probably not clear, sorry. I try to explain below, but it is OK if there is no answer for now: it is more a wish for a feature, than a question. 

    Just like the Gurobi MILP solver allows for lazy constraints, I was asking if it could manage "lazy solutions" when the MILP model provided to the solver is just a relaxation of the problem we want to solve at end.  

    In my situation (but it may also arise in bilevel prog for example), I minimize a MINLP by solving its MILP relaxation with the Gurobi LP B&C. The original nonlinear constraints and the incumbent update are managed "by hand" within a callback at MIPSOL nodes.

    A MINLP solution that is eventually obtained "by hand" at a MIPSOL node may differ (in the value of the fractional variables) from the solution of the LP relaxation at that node and its cost may also be higher. My wish would be to tell the solver that the MINLP solution is not only a feasible solution but also the actual optimal solution at that node, so that its higher value will be taken into account also in the LB (BestBd) update. 

    My workaround is to store the MINLP solution and eventually discard the node from the search (with a lazy cut) in order to push up the LB: the search will still be complete but I suspect that it confuses the pseudocost computation a lot. Thank you again, Sophie.


Please sign in to leave a comment.