Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Solution Pool after Callback

    Posted 10/31/17 09:13 AM

    Originally posted by: nkurt


    Hi everyone;

     

    I am trying to write a code in Java with Concert Technology for solving a MIQP  problem and I use LazyConstraint Callback. In the master problem, there are both integer and continuous variables.

     

    For testing purposes, when the callback is called it does not add any cut to the master problem. I expect that, after the callback is called, there should be a feasible solution for the master problem (since when there is a integer feasible solution for the master problem, lazy constraint callback is called and there is no cut which makes this solution infeasible). However, there is no solution in the solution pool, after executing the callback. Is this normal? What am I missing?

     

    Note that: Presolve and heuristics are deactive. 

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Solution Pool after Callback

    Posted 11/01/17 07:18 AM

    Are you trying to access the solution pool from the callback? That is not supported. The solution pool can only be queried after the solve() function returned.

    In a callback you can use the getIncumbentValues() function to access the current incumbent but you don't have access to old incumbents.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Solution Pool after Callback

    Posted 11/01/17 08:40 AM

    Originally posted by: nkurt


    Thank you for your answer. I am not trying to access the solution pool from the callback. Instead, I observed that there was no integer solution even if the program entered to callback because:
    1) MIP. Display says the number of solutions is 0 during branch and bound. 

    2) CPLEX says "No solution exists" after the solve() function returned. 

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Solution Pool after Callback

    Posted 11/06/17 01:52 AM

    That indeed seems odd.

    What are the status values returned by getStatus() and getCplexStatus() after solve() returns? If you register an incumbent callback, is that callback ever invoked?


    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Solution Pool after Callback

    Posted 11/06/17 04:28 AM

    Originally posted by: PierreBonami


    Hi,

    Are you solving an MIQP (only quadratic objective) or an MIQCP (with also quadratic constraints).

    In the latter case, in the default settings, it is expected that CPLEX might call the lazy constraint callback on a solution that then turns out infeasible for the quadratic constraints.

    If you don't want this to happen you should set the MIQCP strategy switch to 1 (solve QCP relaxation at every node).

     

    If your problem is an MIQP, I don't see an immediate reason. Is your problem feasible without the callback?

     

    Regards,

    Pierre


    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Solution Pool after Callback

    Posted 11/06/17 01:30 PM

    Originally posted by: nkurt


    Hi all,

    @ Daniel: The status values returned by getStatus() and getCplexStatus() after solve() function returns are "unknown" and "abortTimeLim", respectively. I only use Lazy Constraint Callback. 
     

    @Pierre: The problem is just MIQP and the problem can be solved without callback procedure. 

    I guess there is a problem with simplex feasibility tolerance limit. When I set the tolerance limit to 1e-8, everything goes well and the callback behaves as expected.


    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: Solution Pool after Callback

    Posted 11/07/17 10:55 AM

    Originally posted by: PierreBonami


    Hi,

    If there are some numerical difficulties, then it may happen that while the lazy constraints callback was called, the solution is eventually rejected for being feasible (we may have to do some resolve after calling the callback). Still it is surprising that it is systematic. If you want/can share the model with us, we will have a look.

    Best,

    Pierre


    #CPLEXOptimizers
    #DecisionOptimization