Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Initial point in Cplex

    Posted 01/06/16 11:03 AM

    Originally posted by: BachT


    Hello everyone.

    I would like to ask about the initial point for C++ API of cplex 12.6.

    My problem involved in solving an QCP problem, which can be solved by using Barrier Optimizer.

    Due to the characteristic of our algorithm (linear objective, quadratic constraints), we may has good initial point for the algorithm, instead letting the Barrier optimizer do all the job.

    The issue is that, I read through the manual / documentation of Cplex API for C++ (concert) without finding any good solution for it (please correct me if i am wrong):

    - The QCP problem can be solved by Barrie Optimizer, which does not let user choose initial point (but it allows user to choose algorithm to find initial point), which turn out to be super slow for our application.

    - Also, we often have to change the objective function a little bit, but still keep the same constraints (i.e. setup the IloEnv, IloModel, and IloCplex outside the loop, and update the objective inside the loop by using setLinearCoefs then re-solve it again) . My experience is that with my setup, each time i solve the problem, the Barrier Optimizer still use the same process, which is a waste of time to my problem.

    - We can remodel QCP into a huge LP problem, and can also use the initial point for the LP by using Simplex Optimizer, but my attempt with the LP (on toy and small problem) does not show a really success on using the initial point (or may be I use the wrong API).

     

    My questions are:

    1. Is it possible to use a user-chosen initial point for QCP problem? (by any mean of using any way / optimizer that Cplex support).

    2. By using the same model (QCP), and update the model interactively (i.e. update the objective function by setLinearCoefs  and then resolve it again), is it "save" anything in term of time?

    3. How to "correctly' setup initial point for the LP problem? (by any mean of using any way / optimizer that Cplex support).

    4. The same as question 2, but for LP problem.

     

    Thank you for reading :)

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Initial point in Cplex

    Posted 01/06/16 08:40 PM

    Originally posted by: EdKlotz


    >> 1. Is it possible to use a user-chosen initial point for QCP problem? (by any mean of using any way / optimizer that Cplex support).

    No.   At least part of the problem is the relatively elaborate transformation of the QCP to the SOCP, so mapping your QCP starting solution to the actual SOCP upon which CPLEX applies the barrier algorithm poses a significant challenge.   However, I think there's more to it than that, since CPLEX does not accept starting solutions for the barrier algorithm even on LPs.

    >> 2. By using the same model (QCP), and update the model interactively (i.e. update the objective function by setLinearCoefs  and then resolve it again), is it "save" anything in term of time?

    No; it will solve the modified QCP from scratch.

     

    >> 3. How to "correctly' setup initial point for the LP problem? (by any mean of using any way / optimizer that Cplex support).

    CPLEX does accept starting points as well as starting bases for LPs.   However, in general our experience is that this works more effectively if you provide both a primal and dual starting point, not just primal values.   From the C++ API, use the IloCplex::setStart method.   Note that you can decide whether to make use of presolve or not, as described in the setStart docs:

     

    ----

    CPLEX uses this information at the next call to IloCplex::solve to construct a starting point for the algorithm, provided that the AdvInd parameter is set to a value greater than or equal to 1 (one). In particular, if the extracted model is an LP, and the root algorithm is dual or primal, CPLEX uses the information to construct a starting basis for the simplex method for the original model, if AdvInd is set to 1 (one). If AdvInd is set to 2, the information is used to construct a starting basis for the presolved model.

    ----

    >> 4. The same as question 2, but for LP problem.

     

    Yes, CPLEX automatically will handle this in the LP and QP cases, provided you use one of the simplex methods in one of the subsequent solves.  Barrier will still start over.    When you only modify the objective, you preserve primal feasibility but compromise dual feasibility, so consider running the primal simplex method after changing the objective, even if the dual simplex method or barrier method runs faster for the initial solve.

     

     


    #CPLEXOptimizers
    #DecisionOptimization