Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  LP/IP Conversion or two parallel models?

    Posted 03/11/16 07:54 AM

    Originally posted by: Perth2


    I use CPLEX with Java in a column generation heuristic context. I have a restricted master problem (RPM) and a shortest path sub problem.

    One iteration goes like this: Starting from a current solution to my LP relaxed RMP, I update my sub problem with the duals from the RMP and find new columns. These columns are then added to the RMP, the RMP is reoptimized and the process is repeated.

    At regular points in time I want to solve my RMP as an IP, to see if some of the newly generated columns can be combined to a new IP solution to the RMP.

    Right now, I have only one model in CPLEX and I am converting this model back and forth from IP to LP using the calls cplex.conversion(...), cplex.add(conversion), cplex.remove(conversion). I am unsure whether this is the right way to go. Obviously, I want solution information carried along between iterations, with regard to both my LP and IP versions of the model, so as to enable CPLEX to find new LP and IP solutions based on the previous solution and the newly added columns as effectively as possible.

    Which setup would be the best to achieve this?

    Should I have two models, one IP and one LP that I update in parallel to avoid conversion at all?

    I observe in the current setup, for instance, that a found LP solution to my maximisation problem is not carried over to the converted IP as the upper bound.

    Should I prevent preprocessing of the model between iterations, so as not to discard any previous solution information?

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: LP/IP Conversion or two parallel models?

    Posted 03/11/16 03:18 PM

    Regardless of whether you use conversions or keep a separate IP version of the RMP, each time you solve the (integer) RMP you will lose all information from the previous search tree, because you have changed the model. Nodes that were previously pruned due to infeasibility or bound might be viable with the new variable(s) in the RMP, for one thing.

    I think the best approach, again regardless of conversions or separate IP, is to try to create a MIP starting solution from the last LP solution to the RMP (presuming it's "nearly" integer-feasible). If the LP solution is not particularly close to integer-feasible, I'm not sure what value it would provide.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: LP/IP Conversion or two parallel models?

    Posted 03/14/16 07:30 AM

    To keep things simple I would go for a single model and use conversions to go back and forth between the models. Like Paul said, most of the things you observe are expected and do not depend on whether you have 1 or 2 models.

    One thing you can try to improve things is the following:

    Once you solved the RMP as MIP, store away the current solution. Next time you solve RMP as MIP, install the stored solution as MIP start (if you can derive a MIP start from your LP solution as Paul suggested this is even better).

    What do you mean that a bound is not carried over from LP to MIP? Is the LP bound tighter than the MIP dual bound at the root node? This could happen due to different presolve reductions, but usually the MIP dual bound is tighter than the LP bound.


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: LP/IP Conversion or two parallel models?

    Posted 03/14/16 02:48 PM

    Originally posted by: Perth2


    Thanks, Paul and Daniel.

    Is the LP bound tighter than the MIP dual bound at the root node?

    Yes, it is.


    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: LP/IP Conversion or two parallel models?

    Posted 03/21/16 02:37 AM

    Hm, that is really bad luck then. You can tell CPLEX about the tighter bound for the MIP by using CPX_PARAM_CUTLO or CPX_PARAM_CUTUP. CPLEX can then use the value of this parameter to prune nodes in the search tree.


    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: LP/IP Conversion or two parallel models?

    Posted 03/21/16 07:17 AM

    Originally posted by: Perth2


    Thanks, Daniel. Yes, I will do that.
     


    #CPLEXOptimizers
    #DecisionOptimization