Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Multiple solutions in CPLEX

    Posted 07/08/10 11:13 AM

    Originally posted by: gokhank


    Dear All,

    I am solving series of MILP models by using Ilog Cplex 12.1 concert technology (C++) on Ubuntu 10.04 (x64). After constructing the model, I am solving the model with IloCplex.solve() method (not IloCplex.populate()). Although, I don't want multiple solutions, cplex returns multiple solutions. In some cases number of multiple solutions are increased to 11. I am getting multiple solutions with the following code:
    for (int i=0; i<cplex.getSolnPoolNsolns(); i++)
    {
    obj=IloCplex.getObjValue(i);
    }
    I do not want Cplex to search multiple solutions, because in parallel mode (8 threads) everything goes worse. Compared to single thread mode solution time increases to twice.

    How can I avoid Cplex to generate multiple incumbent solutions?
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Multiple solutions in CPLEX

    Posted 07/08/10 11:43 AM

    Originally posted by: SystemAdmin


    First of all, the solution pool is certainly not the reason for the performance degradation of parallel MIP that you are seeing. Moreover, you need to note that the parallel MIP solver will just take a different path than the sequential solver. For example, it will take different branching decisions and thereby construct a different search tree.
    This difference is unavoidable, and it is just random which of the algorithms produces a smaller search tree. So, my guess is that the performance degradation that you are seeing is really just bad luck on a single model. If you see a consistent degradation on a larger set of models, then something structural must happen, but I don't think that this will be the case. On average, the parallel MIP solver should be faster because it processes more nodes per second.

    The solutions you have in the solution pool after calling cplex.solve() are just the solutions that CPLEX encountered during the search process. There is no additional overhead involved to produce these solutions. We just do not throw them away if we find a better incumbent but instead keep them in the solution pool. Therefore, limiting the number of pool solutions will most probably not change anything w.r.t. solving speed. The only benefit that you will get is a very small reduction in memory consumption.

    If you really want to limit the solution pool size, you can do so by setting the CPX_PARAM_SOLNPOOLCAPACITY parameter to 0. Please look at the manual to find out how this parameter is called in Concert.
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Multiple solutions in CPLEX

    Posted 07/09/10 04:43 AM

    Originally posted by: gokhank


    Thanks for the explanations, everything is clear now.

    Best Regards
    Gokhan Kirlik
    #CPLEXOptimizers
    #DecisionOptimization