Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Conflict Refiner - CPLEX12.1 variations

    Posted 12/17/10 11:52 AM

    Originally posted by: CPLEX12USER


    Hi,

    I have an infeasible model for which I am using Conflict refiner (Through concert) to find the minimal conflict set. I am using both CPLEX12.1 and 11.1 and I observe that there are certain variations in the conflicts displayed by the two versions.

    Some of the conflicts that comes as Proved (True for IloCplex::ConflictMember) in CPLEX11.1 shows as Possible conflict when i do the same with CPLEX12.1 (True for loCplex::ConflictPossibleMember). Also the ones showed as possible conflict in CPLEX11.1 does not turn up as conflict with CPLEX12.1

    I have no changes done in code (which includes setting CPLEX parameters) except for different libraries being linked (either CPLEX11.1 or CPLEX12.1)

    Could you please let me know why there is such a deviation?

    Also, is there a way to simulate setting up of preferences to members of conflicts in conflict refiner using interactive mode as we do in concert?

    Thank you
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Conflict Refiner - CPLEX12.1 variations

    Posted 12/17/10 06:53 PM

    Originally posted by: SystemAdmin


    > CPLEX12USER wrote:
    >
    > I have an infeasible model for which I am using Conflict refiner (Through concert) to find
    the minimal conflict set. I am using both CPLEX12.1 and 11.1 and I observe that there are certain
    variations in the conflicts displayed by the two versions. http://...
    > Could you please let me know why there is such a deviation?

    Your model may well have more than one IIS. Since subtle differences in IBM's coding of different
    versions of CPLEX, not to mention new features (such as enhancements to presolvers), can change the
    way CPLEX solves a particular model, I would not be at all surprised that versions 11.1 and 12.2
    would find different IISes if the model had multiple IISes.

    > Also, is there a way to simulate setting up of preferences to members of conflicts in conflict
    refiner using interactive mode as we do in concert?

    According to the user manual, no:
    Certain features of the conflict refiner, namely, preferences and groups,
    are available only through an application of the Callable Library or
    Concert Technology.
    


    /Paul

    Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Conflict Refiner - CPLEX12.1 variations

    Posted 12/30/10 11:02 AM

    Originally posted by: CPLEX12USER


    Thanks for the reply, Paul

    I am seeing variations only in specific scenario. Below is what I do.

    Consider there are constraints C1..C10 in my model.

    I give equal preferences (using concert) to all the constraints in the model and I run conflict refiner to get one IIS; consider it gives C1 and C2.

    Now that I have found the above conflict set {C1,C2}, I do below

    Step1: Put C1 preferernce as 0 (meaning member is always to be included)
    Step 2: C2 prefernce as -1 (will be excluded from the conflict)
    Step 3: For all other constraints which is not in C1 and C2 (or the constraints which is not found in first iteration), I give equal preference to all of them (preference = 1).

    Given above criteria, I will be getting an altogether different conflict set (if exists). Here is where I observe differences between CPLEX11.1 and CPLEX12.1

    Whenever I give perference for a constraint as 0 (c1 in this case), CPLEX12.1 always returns it as possible conflict. However CPLEX11.1 returns is as proved conflict

    I have around 50 models. All the models in which I have variations between CPLEX11.1 and 12.1 were due to the above mentioned reason.

    Appreciate your help in this regard.
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Conflict Refiner - CPLEX12.1 variations

    Posted 12/30/10 11:14 AM

    Originally posted by: CPLEX12USER


    Resending my earlier post with minor correction -

    ======================

    Thanks for the reply, Paul

    I am seeing variations only in specific scenario. Below is what I do.

    Consider there are constraints C1..C10 in my model.

    I give equal preferences (using concert) to all the constraints in the model and I run conflict refiner to get one IIS; consider it gives C1 and C2.

    Now that I have found the above conflict set {C1,C2}, I do below

    Step1: Put C1 preferernce as 0 (meaning member is always to be included)
    Step 2: C2 prefernce as -1 (will be excluded from the conflict)
    Step 3: For all other constraints which is not in C1 and C2 (or the constraints which is not found in first iteration), I give equal preference to all of them (preference = 1).

    Given above criteria, I will be getting a different conflict set (if exists) on running conflict refiner. Consider there comes a different set {C1,C3}

    Here is where I observe differences between CPLEX11.1 and CPLEX12.1.

    To whichever constraint for which I give perference as 0 (c1 in this case), CPLEX12.1 always returns it as possible conflict and not proved. However CPLEX11.1 returns is as proved conflict. Any idea on this. Had this clarification because I have alteast 6-7 variations with the same scenario as said above.

    Appreciate your help in this regard.
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Conflict Refiner - CPLEX12.1 variations

    Posted 12/31/10 12:04 PM

    Originally posted by: SystemAdmin


    What I'm about to say is pure speculation, since I don't know exactly how conflict refiner works. One possibility is that conflict refiner looks for a Farkas certificate (essentially, an unbounded ray in the dual problem) to identify a conflict set, and then possibly takes steps to reduce it. (I'm not sure, but I don't think the conflict set identified by a Farkas certificate is guaranteed to be minimal.) When you specify that C2 must be excluded, you in effect say the ray must have a zero component corresponding to C2. The docs say that when specify that C1 must be included "no further checking is performed" on it; that may mean that, rather than requiring the dual ray to have a nonzero component corresponding to C1, there is no condition on the C1 component. (Again, I'm speculating.)

    Now suppose that the dual has more than one ray with a zero component corresponding to C2. It's possible that CPLEX 11.x finds one where the C1 component is non-zero (so C1 membership is confirmed), and CPLEX 12.x finds a different ray where the C1 component is zero (so C1 membership is unconfirmed). Maybe.

    If you feel like experimenting, you might set up the model without constraint C2 in both versions of CPLEX, solve it, then use IloCplex::dualFarkas and see if you get the same Farkas certificate both times.

    /Paul

    Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Conflict Refiner - CPLEX12.1 variations

    Posted 01/03/11 11:04 AM

    Originally posted by: EdKlotz


    > Paul Rubin wrote:
    > What I'm about to say is pure speculation, since I don't know exactly how conflict refiner works. One possibility is that conflict refiner looks for a Farkas certificate (essentially, an unbounded ray in the dual problem) to identify a conflict set, and then possibly takes steps to reduce it. (I'm not sure, but I don't think the conflict set identified by a Farkas certificate is guaranteed to be minimal.) When you specify that C2 must be excluded, you in effect say the ray must have a zero component corresponding to C2. The docs say that when specify that C1 must be included "no further checking is performed" on it; that may mean that, rather than requiring the dual ray to have a nonzero component corresponding to C1, there is no condition on the C1 component. (Again, I'm speculating.)
    >
    > Now suppose that the dual has more than one ray with a zero component corresponding to C2. It's possible that CPLEX 11.x finds one where the C1 component is non-zero (so C1 membership is confirmed), and CPLEX 12.x finds a different ray where the C1 component is zero (so C1 membership is unconfirmed). Maybe.
    >
    > If you feel like experimenting, you might set up the model without constraint C2 in both versions of CPLEX, solve it, then use IloCplex::dualFarkas and see if you get the same Farkas certificate both times.
    >
    > /Paul
    >
    > Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
    First of all, I think we need to know whether the model in question is an LP or a MIP, as the
    conflict refiner uses different methodologies depending on the problem type. In the LP case,
    Paul's description is essentially correct for the initial implementation of the Conflict
    Refiner in early versions of CPLEX. Recent versions of CPLEX use an approach described in a
    paper by Gleeson/Ryan around 1991 that can just solve a single LP. But, it too is based
    on Farkas' Lemma and the fact that both the primal and dual simplex methods provide a Farkas
    certificate when they conclude a model is infeasible. The certificate in the primal simplex
    method consists of the dual variables associated with the Phase I objective; use IloCplex::getDuals
    to obtain them. The certificate in the dual simplex method is the row of the basis inverse
    associated with the dual simplex ratio test that concluded dual unboundedness, and hence primal
    infeasibility. Use IloCplex::DualFarkas, as mentioned above, to get that. And, as Paul said,
    if different versions of CPLEX give different Farkas infeasibility certificates, you will also
    probably see different conflicts.

    MIP is different, since Farkas infeasibility certificates are much harder to calculate. I won't
    go into the details here. But, as with LPs, it is possible that different versions of CPLEX will
    yield different conflicts. So, overall, I don't think you need to be concerned about the behavior
    you see, as long as the different conflicts you get with different versions of CPLEX satisfy the
    definition of a conflict, namely that the conflict is infeasible, and removal of any single constraint
    or bound in the conflict makes this infeasible submodel feasible.
    Ed
    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: Conflict Refiner - CPLEX12.1 variations

    Posted 01/04/11 10:55 AM

    Originally posted by: CPLEX12USER


    Thanks for the detailed explanation.

    Model I am using is MIP. We are ok if conflicts are different with different versions of CPLEX as long as they are legitimate ones. The only thing that drives attention is the difference in result happens every time I include any conflict member explicitly into the model.

    As much as test case we have, we see difference in result in all cases where conflict member is included in model explicitly (preference = 0). Since it happens on all cases of a particular scenario would just like to know if there is some behavioral difference with CPLEX12.1. Just curious to know this because we are upgrading our system with CPLEX12.1 and need a strong justification to bypass the changes in results.

    Meanwhile, I am also trying options you have specified.

    Thanks in advance.
    #CPLEXOptimizers
    #DecisionOptimization


  • 8.  Re: Conflict Refiner - CPLEX12.1 variations

    Posted 01/05/11 07:25 PM

    Originally posted by: EdKlotz


    > CPLEX12USER wrote:
    > Thanks for the detailed explanation.
    >
    > Model I am using is MIP. We are ok if conflicts are different with different versions of CPLEX as long as they are legitimate ones. The only thing that drives attention is the difference in result happens every time I include any conflict member explicitly into the model.
    >
    > As much as test case we have, we see difference in result in all cases where conflict member is included in model explicitly (preference = 0). Since it happens on all cases of a particular scenario would just like to know if there is some behavioral difference with CPLEX12.1. Just curious to know this because we are upgrading our system with CPLEX12.1 and need a strong justification to bypass the changes in results.
    >

    If you are getting statuses that indicate that the conflict is a possible member, that could occur because the 12.1 runs somehow terminated the conflict refiner run early. Are you setting any
    sort of limit on the conflict refiner run, so that the conflict you get back may not be minimal?
    Is the conflict you get with 12.1 small enough that you can easily check to see if the conflict
    is minimal (i.e. removal of any constraint or bound in the conflict makes the model associated
    with the conflict feasible)?

    Can you create a small sample program that reproduces this behavior and upload it to this thread?

    Ed
    #CPLEXOptimizers
    #DecisionOptimization