Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Extracting cuts generated by cplex

    Posted 03/09/16 02:48 AM

    Originally posted by: semihatakan


    Hi,

    In my application, I am trying to strengthen the feasible region of the (sub)problems that I deal with. To achieve this, I was hoping to use the valid inequalities that are generated by CPLEX. In particular, I let CPLEX process the root relaxation and stop the moment just before branching is initiated. I am aware of the following code which allows me to print or use these cuts, and it works perfectly fine: 

    http://www-01.ibm.com/support/docview.wss?uid=swg21400065

    Nevertheless, I am specifically interested in the valid inequalities that are generated "without" variable fixing or bound strengthening (or applying any other heuristic for that matter). As an example, a binary variable x can be set to 0, even though I might be interested in the cases where x=1 (so, the cuts may not be valid anymore). So far, I have made the following parameter changes:

     

        status = CPXsetintparam(env, CPX_PARAM_PREIND, 0);

        status = CPXsetintparam(env, CPX_PARAM_PROBE, -1);

        status = CPXsetintparam(env, CPX_PARAM_BNDSTRENIND, 0);

        status = CPXsetintparam(env, CPX_PARAM_AGGIND, 0);

        status = CPXsetintparam(env, CPX_PARAM_REDUCE, 0);

        status = CPXsetintparam(env, CPX_PARAM_COEREDIND, 0);

        status = CPXsetintparam(env, CPX_PARAM_RELAXPREIND, 0);

        status = CPXsetintparam(env, CPX_PARAM_HEURFREQ, -1);

     

    In spite of this, when I output an LP file from the root relaxation, I still observe some variables as fixed to certain values. I even tried to remove all the bounds (except for nonnegativities) from my own formulation, provided them as explicit constraints. Yet, CPLEX kindly provides some bounds on all variables. I was wondering if I am missing some other parameters, or whether my goal cannot be achieved at all?

     

    Thank you,

    Semih Atakan


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Extracting cuts generated by cplex

    Posted 03/09/16 10:44 PM

    Originally posted by: EdKlotz


    Some of the actual cuts CPLEX generates (Gomory, MIR, etc.) can take the form of simple bound constraints that will appear as variable fixings.   Such cuts will indeed appear as bound changes, not as cuts listed by the utility program that you mentioned above.   So, if you are outputting the LP file just before branching starts, that LP file includes the cuts, including any that are simple bound constraints.   So, I recommend that you export the LP file after the first root node relaxation solve.   By comparing that LP file to the one you export at the end of the root node LP, you should get some idea regarding whether you have missed disabling parameters or something else is involved.

    Your post seems to imply that variable fixing and bound strengthening are heuristic.   I don't see that follow that claim; both of them are based on mathematical logic that proves that any fixings or tighter bounds are legitimate.     

     

    Also, regarding missing parameter settings, I do see one off the top of my head.   CPLEX's default variableselection (pseudo costs) does some strong branching computations that can fix variables.    Try setting the variableselect parameter to the simpler maximum or minimum integer infeasibility (+-1) and see if that helps.   But, even if it eliminates all fixings on this particular model, it's always possible that some of the cuts CPLEX generates will take the form of simple bound constraints.   I don't see any way to avoid that.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Extracting cuts generated by cplex

    Posted 03/12/16 10:02 PM

    Originally posted by: semihatakan


    Thanks a lot for the reply, I'll try out your suggestions. As long as the variable fixings and bound strengthenings are not cutting off any integer points, I am OK with their presence as well. I was under the suspicion that they might remove some points which cannot be optimal for the given objective function. 

    Best,

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Extracting cuts generated by cplex

    Posted 03/14/16 01:03 PM

    Originally posted by: EdKlotz


    Currently I don't believe any of CPLEX's cuts can remove integer feasible points.   They are all based on the notion of global validity, i.e. the cut is valid for all integer feasible solutions.    However, CPLEX does do some MIP preprocessing that can remove integer feasible points.   You can disabled those types of reductions by setting CPLEX's presolve reduce parameter to 1 or 0, which I see you have already done in the code segment you posted at the start of this thread.


    #CPLEXOptimizers
    #DecisionOptimization