Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  nodeX is greater than nodeUB

    Posted 11/13/14 01:45 PM

    Originally posted by: AbdelhalimHiassat


    Hello,

    I have a strange problem. I am writing a branch callback in Callable Library, running c++ and CPLEX 12.5. Consider the following two lines:

    status = CPXgetcallbacknodeub(env, cbdata, wherefrom, ubnode, 0 , orig_numcols-1);

    status = CPXgetcallbacknodex (env, cbdata, wherefrom, solnode, 0, orig_numcols-1);

    Now, this should return two arrays for the upper bounds and solution, respectively, in terms of the original (not the presolved) model.

    Now, when I try to manually inspect a certain variable (via debugging), I found out that for this variable (index 2757 in my case), the upper bound is 0, while the (lp) solution is 1.

    Is this possible?


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: nodeX is greater than nodeUB

    Posted 11/14/14 01:36 AM

    Just to be sure, you explicitly set CPX_PARAM_MIPCBREDLP to 0 (the default is 1)?


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: nodeX is greater than nodeUB

    Posted 11/14/14 05:08 AM

    Originally posted by: AbdelhalimHiassat


    Yes.


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: nodeX is greater than nodeUB

    Posted 11/21/14 04:23 AM

    How many threads are you using? Are the ubnode and solnode arrays local to the callback function or are these global arrays? Could it be that multiple threads access these arrays in parallel?


    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: nodeX is greater than nodeUB

    Posted 11/21/14 10:01 AM

    Originally posted by: AbdelhalimHiassat


    Originally, I kept the number of threads as default (which I assume would use the maximum available; 4 threads in my machine). I tried to enforce using one thread only by this function:

    status = CPXsetintparam (env, CPX_PARAM_THREADS, 1); .

    This, however, didn't work. I still get the same problem: solution is greater than the upper bound for a certain variable.

    Also, the arrays are local to the callback function. I even delete them after I'm done using them within the callback itself.


    #CPLEXOptimizers
    #DecisionOptimization