Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Problem with purgeable cuts

    Posted 09/15/10 11:40 AM

    Originally posted by: LucasOliveira


    Hi there,

    Last week I was programming a branch and cut that uses a exponential model.
    The model starts with only one constraint and is constructed through a violated cuts addition.
    The formulation used is very strong and often can solve instances with only one node (the root).

    But here is the problem that I observed. When I'm adding a new cut in cutcallback, there is a parameter called "purgeable" in cutcallbackadd function.
    This parameters says to CPLEX to clean up cuts when this is possible. But I thinks that this clean up is very strong.
    For example, lets see some numerical results for an instance:

    With purgeable cuts, the code used 5974 cuts and the total execution spent 3.5 secs.
    Without purgeable cuts, was used 1161 cuts and spent 1.4 secs.

    Seems that the purgeable cuts are removed very soon, and maybe tha same cut is regenerated many times.

    But on the other hand, the code cannot run without purgeable cuts because for very large instances the LP resolution becomes slower.

    Then, my question is: how to calibrate this parameter ? how don't remove a lot of cuts and work with a model of reasonable size ?

    Thanks!
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Problem with purgeable cuts

    Posted 09/15/10 05:22 PM

    Originally posted by: SystemAdmin


    I don't know of any parameter to control when CPLEX elects to purge a purgeable cut (but then purgeable cuts are very new and I have no experience with them).

    Here's one idea (maybe a little esoteric). Suppose that, in your cut generation routine, you generate and store a hash code for each cut, along with a counter of how many times that cut (or cuts with that hash code if it's not unique) are generated. If the hash code (and therefore the cut) is new, add it as purgeable. If it's a repeat (or if it's been rediscovered too many times), add it as nonpurgeable.

    /Paul

    Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Problem with purgeable cuts

    Posted 09/16/10 03:37 AM

    Originally posted by: SystemAdmin


    Unfortunately, there is no way of having a finer control on the purging. CPLEX just does what it thinks is best with purgeable cuts, and in your particular case this might be sub-optimal.

    Paul's suggestion is good (actually, this is exactly the strategy that is used in SCIP).

    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Problem with purgeable cuts

    Posted 03/31/11 10:48 AM

    Originally posted by: LucasOliveira


    Here is a new problem! I try to implement the Paul's idea.
    So, I construct a structure to verify if a cut was already added to the problem.
    If the verification returns true, the cut is added with the purgeable parameter set to 0.
    Otherwise, the cut is added with purgeable parameter set to 1.

    I have one instance that when I used only purgeable cuts the code runs in an infinity loop.
    This happens because the execution add a cut C1 and after add a cut C2 and purge cut C1,
    after add cut C1 and purge cut C2, and so begins the loop.

    When I try to use the fixation of repeated cuts with purgeable parameter 0, in the execution
    seems that the cuts are still purgeable because the loop remains happening.
    The cuts C1,C2,C1,C2... are still being generated, so they can't be in the problem,
    but they are already added with purgeable parameter set to 0.

    I'm doing something wrong ?
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Problem with purgeable cuts

    Posted 03/31/11 02:40 PM

    Originally posted by: SystemAdmin


    And do you have the same problem when you create all of them with purgeable = 0 right from the start?

    Overall, what you describe sounds like a bug. Do you have a (preferably short) example code that shows the behavior and that you can upload to the forum?
    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Problem with purgeable cuts

    Posted 03/31/11 04:10 PM

    Originally posted by: LucasOliveira


    Tobias, when all cuts are inserted with purgeable = 0 the problem don't occurs.
    I sent the code in your email. Verify if you received.
    The code cannot be reduced, but the point that insert the cuts isn't big.

    This code is the same that I sent to you because the thread http://www.ibm.com/developerworks/forums/thread.jspa?threadID=357397.

    Thanks for all.
    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: Problem with purgeable cuts

    Posted 04/05/11 05:06 AM

    Originally posted by: SystemAdmin


    Strange. I didn't receive any mail from you. Again, my email is achterberg at de dot ibm dot com.
    #CPLEXOptimizers
    #DecisionOptimization