Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  cplex ignores my user cuts

    Posted 07/14/13 05:16 PM

    Originally posted by: DilsonPereira


    Hi everyone!

    I'm using the cplex c++ concert api to implement a cutting plane algorithm. My problem formulation has an exponential number of constraints, i use the lazy constraint calllback and the user cut callback to add these constraints to the model (all the constraints are needed in the description of the problem).

    Everything seems to be working fine on most of the problem instances i am solving. However, there are a few in which the user cut callback is called, my separation routine finds violated inequalities and adds them to the model, but cplex simply ignores them, stops the cut generation loop and starts the branch-and-bound phase.

    Any ideas of what may be causing the problem?

    Thanks.


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: cplex ignores my user cuts

    Posted 07/14/13 07:34 PM

    If the cut you just added does not render the current node infeasible, the user cut callback should be called again at that node. (If the node is now infeasible, I assume that CPLEX prunes it and moves to another node without calling the user cut callback again.) Does the extra call to the user cut callback happen and, if so, do you get the current node solution in the user cut callback and verify that the most recent cut is being violated?

    Paul


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: cplex ignores my user cuts

    Posted 07/14/13 07:58 PM

    Originally posted by: DilsonPereira


    Thank you for your reply.

    No. Cplex does not even make the extra call. It simply stops as if i had not added any cut and it had finished solving the root node.

    Also, if i manually add the inequalities to a continuous relaxation of my problem then it works as expected. The problem happens only when i use the user cut callback.


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: cplex ignores my user cuts

    Posted 07/15/13 01:39 AM

    What value do you use as third argument to IloUserCutCallbackI::add()? Do you use the default UseCutForce or anything else? If adding the cut does not render the node infeasible, is it possible that the cut changes the objective function enough so that CPLEX is able to cutoff the node (because it exceeds the incumbent's objective function value)?


    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: cplex ignores my user cuts

    Posted 07/15/13 07:25 PM

    Can you run it in a debugger and verify that the add method is really being called. The lack of an extra call suggests that CPLEX thinks a cut was not added. One other thing is to print the cut and the current LP solution and verify that the cut really does cut off the solution.

    Paul

     


    #CPLEXOptimizers
    #DecisionOptimization