Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Question on Warm-Start

    Posted 10/12/20 02:59 PM
    Edited by System Admin 01/20/23 04:43 PM
    Suppose I have a set of facilities and need to pick one of them and make some design decisions. I will represent my facility selection decision with variable X. Once the facility is fixed, the design decisions should be performed. However, CPLEX has hard time to identify an initial feasible solution for the design decisions. That is why I designed a heuristic algorithm that gives an individual design decisions for each facility.  

    Something like;

    If X[0] = 1, then use these design options Y[], Z[], .. 
    If X[1] = 1, then use these design options Y[], Z[], .. 

    If I warm-start my model with all such solutions, my guess is that CPLEX will pick the best one and start the branch and bound tree. Suppose CPLEX picks Facility-1 (i.e., X[0]= 1) and start solving the model. After a while, it is highly likely that CPLEX might change the facility selection decision. Say the fifth facility is selected ( X[5]=1) in the following iterations. In this scenario, would CPLEX hold the initial solution that I gave in memory to use (i.e., the design options estimated for X[5])? If not, how can insert a feasible solution whenever X value changes?

    ------------------------------
    S Y
    ------------------------------
    #DecisionOptimization


  • 2.  RE: Question on Warm-Start

    Posted 10/13/20 01:32 AM
    Hi,

    warmstart can really help a lot in many situations and CPLEX could later change the values from the warmstart.
    For instance in https://github.com/AlexFleischerParis/zooopl/blob/master/zoowarmstartapi.mod

    main
    {
    thisOplModel.generate();
    // Warm start the naïve solution
    cplex.addMIPStart(thisOplModel.nbBus,thisOplModel.naiveSolution);
    cplex.solve();
    thisOplModel.postProcess();
    }

    gives

    The naïve cost is 4000 8 buses 40 seats The minimum cost is 3800 6 buses 40 seats 2 buses 30 seats​


    where you can see that cplex changed the values given in  the warmstart.

    If you fo not want those to change, you may use fixed start : https://github.com/AlexFleischerParis/zooopl/blob/master/zoofixedstart.mod

    Sometimes what works best is a mix of warmstart and fixed start.

    Best regards



    ------------------------------
    ALEX FLEISCHER
    ------------------------------



  • 3.  RE: Question on Warm-Start

    Posted 10/14/20 08:14 AM
    To complement Alex's answer, you might look at:
    https://www.ibm.com/support/knowledgecenter/SSSA5P_12.10.0/ilog.odms.cplex.help/CPLEX/UsrMan/topics/discr_optim/mip/para/49_mipStarts.html

    MIP starts are basically assignments from variables to values,  but not algorithms.

    This said , a MIP start need not be complete; actually it is common practice
    to inject only discrete variables in a MIP start to avoid numerical precision issues.
    MIP starts may even violate certain constraints, in which case CPLEX will attempt to repair them. The quantity of effort allocated by CPLEX
    to repair an infeasible MIP start is controlled, mainly,  by the `effort level` parameter (described int above doc page).


           Philippe.

    ------------------------------
    Philippe Couronne
    ------------------------------