Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  callback on my own relaxations

    Posted 07/07/10 11:12 AM

    Originally posted by: SystemAdmin


    Hi,
    I am using cplex to solve mixed integer quadratically constrained quadratic problem(MIQCPs). All my coding is done in C++ using Ilog Concert Technology.

    In the Branch & cut method, the relaxation of cplex used is
    1. at root relaxtion, the continuous relaxation neglecting all the integer contraints was used. However, such bound is very poor in terms of bound quality.
    2. At each node, for any subproblems, cplex still use the continuous relaxtion.
    In the aid of cutting plane method, heuristic method, the cplex can solve the problem efficiently when the dimension is medium.

    Now, I have a relaxation of my own, it can be solved efficiently, and better than continuous relaxation. Thus, I want to modify cplex MIQCP solver by modifying
    1. at root relaxation, I want to use my relaxation bound and the solution to the relaxed problem.
    2. For any subproblem at each node, I want use my relaxtion, rather than cplex's continous relaxation.
    I think the model of my relaxation is different from the model of cplex's continuous relaxation.

    I have tried for a few days, unfortunately, I can not find the right way of implementing my ideas. Can you kindly help me? I want to know which callback function I need to choose, and How? I can not
    find such examples.

    Best wishes

    xjz
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: callback on my own relaxations

    Posted 07/08/10 04:45 AM

    Originally posted by: SystemAdmin


    Unfortunately, almost everything in CPLEX is based on the LP relaxation. Therefore, we cannot deal with other types of relaxations. You can use the solve callback to solve the LP relaxation in a different (more efficient) way than the dual simplex algorithm that CPLEX would apply, but you cannot solve a completely different relaxation.

    However, there is a tiny bit of hope left. Maybe, you can solve your relaxation and then deduce information from the solution to tighten the LP relaxation, for example through cutting planes or by tightening the domains of the variables. The most simple approach would be to calculate the objective value of your relaxation and then add a local cut that says the objective must be at least (or at most) this value (this only works if the objective function is linear). These cuts would be added in the cut callback. But unfortunately, I fear that such cuts parallel to the objective function do not perform very well. But in any case, it is worth a try.

    Ultimately, if you really have to use your relaxation instead of the LP relaxation, you need to use a different branch-and-cut framework. For example, SCIP is able to deal with user relaxations (http://scip.zib.de), and it can also deal with quadratic constraints. But note that you typically pay the larger generality with a performance degradation. But if your relaxation is so much stronger than the LP relaxation, it is also worth a try...
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: callback on my own relaxations

    Posted 07/08/10 07:36 AM

    Originally posted by: SystemAdmin


    Dear Tobias,

    Many thanks for your reply. Your answer save me a lot of time. You did help me a lot.
    Thanks again.

    Best wishes

    xjz
    #CPLEXOptimizers
    #DecisionOptimization