Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Concurrently solve node LPs, but sequentially process nodes

    Posted 03/01/12 02:16 AM

    Originally posted by: HamishWaterer


    Hi,

    When solving a MILP I'd like to be able to use, for example, three threads to concurrently solve each node LP with the three optimizers simultaneously: dual simplex, primal simplex, and barrier (single thread). Note that this is different from wanting to process the nodes of the tree in parallel. I'd still be doing that sequentially. Is it possible to do this in CPLEX, possibly through the use of hidden thread parameters?

    Thanks,
    Hamish
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Concurrently solve node LPs, but sequentially process nodes

    Posted 03/01/12 02:36 AM

    Originally posted by: SystemAdmin


    I am not sure whether it will work, but it is worth a try.
    Set the hidden "MIP threads" parameter to 1. In the interactive, this is "set mip limits _threads 1". From the programming APIs, this is the parameter number 2014.
    Then, set the regular "global threads" parameter to 3.

    In order to get dual, barrier, and primal simplex, you need to use opportunistic parallel mode (because in deterministic parallel, the concurrent optimizer would only use dual and barrier).
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Concurrently solve node LPs, but sequentially process nodes

    Posted 03/01/12 04:57 AM

    Originally posted by: HamishWaterer


    Hi Tobias,

    Unfortunately I don't think that it worked. The root node is solved concurrently, but the nodes in the tree don't appear to be. The two clone*.log files log the solution of 'nodelp' which I assume is the root as the date stamps on these files are 11 min earlier than the CPLEX log file after an ~660 sec solve time.

    Any other ideas?

    Thanks,
    Hamish
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Concurrently solve node LPs, but sequentially process nodes

    Posted 03/01/12 01:46 PM

    Originally posted by: SystemAdmin


    I would not take the clone.log files as a proof.
    Check with the task manager (Windows) or top (Linux) how many CPUs are in use by CPLEX.

    But I just saw that concurrent opt is not supported as "sub algorithm" for MIP solves, so I fear you are out of luck here.
    What you could get with threads = n and mipthreads = 1 plus setting subalg = 4 is a parallel barrier LP solve for the nodelps within a sequential search tree.
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Concurrently solve node LPs, but sequentially process nodes

    Posted 03/01/12 08:28 PM

    Originally posted by: HamishWaterer


    At most two CPUS were being used by CPLEX during B&B (presumably the extra CPU was for auxiliary tasks, heuristics or cut generation) and with mip display 5 I couldn't see any evidence of concurrent LP optimization at the nodes of the tree in any of the log files.

    Could you please add this feature to a wish list?

    Thanks,
    Hamish
    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Concurrently solve node LPs, but sequentially process nodes

    Posted 03/02/12 12:11 AM

    Originally posted by: SystemAdmin


    I added this to the user wish list but right now I fail to see why this would be useful.
    Could you elaborate a little why exactly you want to do that? Do you believe that at different nodes different algorithms will be faster? Could you identify the nodes at which a particular algorithm would be faster? If so then it would probably better to use a solve callback and explicitly select the algorithm to be used for each node. Using a solve callback you could also use concurrentopt but as I said, I do not see why this could be useful.
    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: Concurrently solve node LPs, but sequentially process nodes

    Posted 03/07/12 05:08 PM

    Originally posted by: HamishWaterer


    Hi Daniel,

    This would be useful in situations where I have an excess of CPUs and just want to use default CPLEX as a very large hammer. I don't want to play around tuning anything, just let CPLEX loose on the problem. If CPLEX's automatic choice for CPX_PARAM_SUBALG is the right one then I've not gained anything, but in the cases where it is not, then I'm getting the fastest node LP solves.

    Also I wouldn't be surprised if in some problems the best choice for CPX_PARAM_SUBALG is a function of node depth, but I don't know if that has been observed in practice.

    Cheers,
    Hamish
    #CPLEXOptimizers
    #DecisionOptimization