Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Setting up a starting solution for an LP problem

    Posted 03/11/16 12:05 PM

    Originally posted by: Perth2


    I use CPLEX with Java in a column generation context, having a restricted master problem (RPM) that I add columns to and that I solve as an LP.

    I want to set the starting solution for the RMP, so as to let CPLEX solve it as effectively as possible. I have experimented with several different setups (setting of primal values,  dual values, reduced costs, slacks, and setting the algorithm to Primal or Dual). However I can not see which setup works the best generally. Moreover, I am not able to see a significant speed-up in any of the setups I have tried.

    Since I am adding a new column in the primal problem in each iteration, a new constraint is added to the dual problem. This constraint may make the former dual solution infeasible. However, the former primal solution is still feasible.

    Should I therefore use cplex.setStart() with the former primal solution (prior to adding new columns)?

    Is it necessary, in this case, to fix IloCplex.Param.RootAlgorithm to IloCplex.Algorithm.Primal so as to make sure the primal starting solution is used, and not the dual, which I know is probably infeasible?

    If I have a starting solution, should't CPLEX then be able to find the next optimum using a number of simplex iterations less than or equal to the number of columns I have added? I do not observe this.

    How can I see if CPLEX uses a given starting solution?

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Setting up a starting solution for an LP problem

    Posted 03/14/16 07:55 AM

    Originally posted by: RWunderling


    The barrier algorithm cannot be warmstarted after adding columns to your RPM.  Thus I assume that you are using the Simplex algorithm.  If so, CPLEX will automatically warmstart from the previous basic solution using the primal Simplex algorithm after you add new constraints as long as the IloCplex.Param.Advance parameter is set to 1 and you manipulate the previously solved RPM rather than building a new problem.  No need to call setStart() or anything else.  You should see from the log of solving the RPM that primal Simplex is being used and starting from the previous basis.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Setting up a starting solution for an LP problem

    Posted 03/14/16 03:10 PM

    Originally posted by: Perth2


    Thanks, Roland.

    I have not set the IloCplex.Param.Advance parameter so it should still be at its default value of 1. I have looked through the other parameters I am setting, and none have any relation to this matter. I am letting CPLEX decide which algorithm to use.

    In the first iteration, the Barrier algorithm solved the model. Subsequent iterations are solved by Primal Simplex. However, even though I am only adding 117 new columns in each iteration, the log shows thousands of simplex iterations.

    How can this be? How can I find out why the former basis is not used?


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Setting up a starting solution for an LP problem

    Posted 03/16/16 02:54 AM

    Originally posted by: Perth2


    After settting IloCplex.IntParam.SimDisplay to 2 to output every iteration of the simplex algorithm, I have discovered that the many iterations are changing the values of the explicit slack variables in the model, which of course also need simplex iterations to be set. I had forgotten that.


    #CPLEXOptimizers
    #DecisionOptimization