Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Solving a MILP at each node

    Posted 02/21/12 07:48 PM

    Originally posted by: amindehghanian


    Hi,

    We know that CPLEX is using a branch and cut tree to solve a MILP model.
    At each node of this tree, it solves a linear program.

    My question is as follows:

    Could we make CPLEX to solve sub-problem of current node by MILP solver?

    If my question is not clear, please let me know?

    Thanks,
    Amin
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Solving a MILP at each node

    Posted 02/22/12 03:40 AM

    Originally posted by: SystemAdmin


    Yes, you can try this idea. Just install a branch callback where you copy the presolved model, install the local bounds (by querying the nodelp) into the copy, and call CPXmipopt on the copy. Then, query the optimal solution and create only one child in your branch callback with all variables fixed to the optimal solution of the sub-MIP. If the sub-MIP is infeasible, just create 0 children (or one child with contradicting bounds?).

    Of course, you should only apply this procedure if you are not at the root node, and you probably want to do this recursively by using the same branch callback for the sub-MIP.
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Solving a MILP at each node

    Posted 02/23/12 02:22 AM

    Originally posted by: amindehghanian


    Thanks again for your help on my posts!

    Since I am adding my constraints dynamically, I think I need one small modification on what you said. It means even if I solve a node by CPXmipopt and obtain an integral solution, that solution may violate my (hidden) constraints!
    I think I need to do the following in my CPXsetlazyconstraintcallbackfunc:
    1. copy the presolved model into an LP object
    2. call CPXmipopt on the copy, and obtain MIP optimal solution
    3. generate my lazy constraint based on the MIP optimal solution

    Right?

    There is just one small issue with this method. Before calling lazyconstraintcallback, CPLEX solves the linear programming sub-problem of current node, and this is useless.

    Thanks,
    Amin
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Solving a MILP at each node

    Posted 02/27/12 04:33 PM

    Originally posted by: SystemAdmin


    Yes, this is correct.

    If you want to be called before the nodelp is solved, then you need to use a mipcallback or a branch callback (in the latter case, you would use your procedure on the two child nodes).

    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Solving a MILP at each node

    Posted 02/28/12 02:11 PM

    Originally posted by: amindehghanian


    Thanks a lot!
    Amin
    #CPLEXOptimizers
    #DecisionOptimization