Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  MIQCP problem

    Posted 04/26/11 09:54 AM

    Originally posted by: SlavaMedvedev


    Hi!
    I get CPLEX exception when I solve some of MIQCP problems.
    Message:
    CPLEX(default) cannot extract model: IloAlgorithm cannot extract extractable

    Example:
    dvar boolean x;
    maximize
    x;
    subject to {
    x*x == 1;
    }

    However when I modify this example to equivalent problem...
    ExampleEx:
    dvar boolean x;
    maximize
    x;
    subject to {
    x*x >= 1;
    x*x <= 1;
    }

    ... everything works fine.

    Any help? Thanks!
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: MIQCP problem

    Posted 04/26/11 10:36 AM

    Originally posted by: SystemAdmin


    The underlying C method that is called by Concert for quadratic constraints is CPXaddqconstr(). This allows only 'L' and 'G' constraints, because quadratic equations will immediately make the problem non-convex, at least in theory.
    In your example, in the second case you are just lucky that the presolver is able to discard all constraints and you end up with a convex problem, hence CPLEX is able to solve it.
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: MIQCP problem

    Posted 04/27/11 08:03 AM

    Originally posted by: SlavaMedvedev


    Thanks Tobias!

    I just expected Concert to return something like "Q in constraint is not positive semi-definite" as it does for non-convex objective function minimization. Instead I receive internal exception and don't know what to do.

    Now I have two examples again regarding QP problems.

    Example1:
    dvar boolean xhttp://1..5;
    maximize
    x[1]*x[2] + x[3]*x[4] + x[5]*x[5];
    subject to {
    x[1] + x[2] + x[3] + x[4] + x[5] <= 3;
    }

    Works fine!

    Example2:
    dvar float+ xhttp://1..5;
    maximize
    x[1]*x[2] + x[3]*x[4] + x[5]*x[5];
    subject to {
    x[1] + x[2] + x[3] + x[4] + x[5] <= 3;
    forall (i in 1..5) x[i] <= 1;
    }

    Error 5002: Q in objective is not positive semi-definite.

    Which is strange because I believe the second case is the root relaxation for the first one. Probably the possible reason is that MIP performs "Repairing indefinite Q in the objective."
    Does that mean the MIQP supports more widespread space of possible Q in objective???
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: MIQCP problem

    Posted 05/03/11 03:59 AM

    Originally posted by: SystemAdmin


    With binary variables you can use a simple trick to make a non-PSD objective function positive semi-definite: just add the valid equation x^2 - x = 0 to the objective function to make the diagonal of Q large enough to make Q psd. With continuous variables, this trick is no longer possible as the equation does no longer hold. Therefore, CPLEX can solve your model with binary variables, but is not able to solve it with continuous variables.
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: MIQCP problem

    Posted 05/03/11 05:57 AM

    Originally posted by: SlavaMedvedev


    Thanks a lot!

    As I understand:

    If I use binary variables only I don't need to concern myself with Q in objective. CPLEX will automatically repair indefinite Q.

    Is that true?
    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: MIQCP problem

    Posted 05/03/11 06:09 AM

    Originally posted by: SystemAdmin


    Yes, it is. But you have to note that the trick with exploiting x = x^2 can really degrade the tightness of your relaxation and thus the performance of the solving process.
    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: MIQCP problem

    Posted 05/03/11 11:25 AM

    Originally posted by: SlavaMedvedev


    You helped me very much because I have not found such information in CPLEX help. Thanks!
    #CPLEXOptimizers
    #DecisionOptimization