Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Same iteration over and over

    Posted 03/02/16 09:13 AM

    Originally posted by: Ccl_


    Hi,

    I am using Concert (12.6.1) for C++  and I have implemented a branch and cut algorithm using a UserCutCallback.

    Everything works fine at first but at some point in the execution, the UserCutCallback is called from the same iteration over and over: the same user cut is found each time, but the number of iterations does not increase.

    I really don't understand why Cplex would not iterate, the user cut added is indeed violated, but the new LP solution with this cut added to the subproblem is never computed.

    Does someone see what is happening here?

    Many thanks in advance!

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Same iteration over and over

    Posted 03/02/16 03:52 PM

    CPLEX does not know how many cuts you want to add, so each time you add a cut CPLEX will process it and then call the callback again. When the callback does not add a cut, the loop ends. My guess is that you keep adding the same cut, which CPLEX interprets to mean you are not done yet.

    This is explained in the documentation.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Same iteration over and over

    Posted 03/03/16 04:24 AM

    Originally posted by: Ccl_


    Thank you for your answer.

    From what I understood of the documentation, the callback is called and in case new cuts are added, the node problem is solved again. And then the callback is called again until no cut is found.

    But you are saying the node problem is not solved between each call to the callback? Then how can I indicate to Cplex to solve the node problem before re-calling the callback?

    Indeed, the procedure I have to find violated cuts is deterministic so if the node solution does not change, the same cuts will be found each time.

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Same iteration over and over

    Posted 03/03/16 05:06 AM

    By how much is the cut violated if you add it?

    Are you adding the cut with purgeable=UseCutForce or with something else?

    If the cut is indeed added then the nodelp should be solved again before the callback is invoked another time.


    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Same iteration over and over

    Posted 03/04/16 07:27 AM

    A few other questions:

    • Do use a single or a multi-threaded solve? Did you change CPX_PARAM_THREADS from its default value 0?
    • Do you add the cuts via add() or via addLocal()?
    • Do you have a (small) example code that reproduces the problem and that you can share, either here or with daniel(dot)junglas(at)de(dot)ibm(dot)com?

    #CPLEXOptimizers
    #DecisionOptimization