Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Possible member in cplex' refineConflict method

    Posted 02/08/19 11:24 AM

    Originally posted by: cplexUser123


    I need to understand what exactly a possible member in refineConflict method means. This is the definition I have found: "IloCplex.ConflictPossibleMember the constraint not been proven not to participate in the conflict; that is, it might participate, it might not." It doesn't explain much. 

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Possible member in cplex' refineConflict method

    Posted 02/08/19 11:51 AM

    Hi

    public IloCplex::ConflictStatus getConflict(IloConstraint con) const

    Returns the conflict status for the constraint con.

    Possible return values are:

    IloCplex::ConflictMember the constraint has been proven to participate in the conflict.

    IloCplex::ConflictPossibleMember the constraint has not been proven not to participate in the conflict; in other words, it might participate, though it might not.

    The constraint con must be one that has previously been passed to refineConflict including IloAnd constraints

     

    and then you could have a look at documentation

    CPLEX > User's Manual for CPLEX > Infeasibility and unboundedness > Diagnosing infeasibility by refining conflicts

     

    regards

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Possible member in cplex' refineConflict method

    Posted 02/08/19 12:04 PM

    Maybe this is best explained by outlining how the conflict refiner works.

    First of all, at any time during the algorithm, all constraints marked "member" and "possible member" form a conflict. That conflict may not be minimal but it is a set of constraints that is infeasible.

    At the beginning, we know that the model is infeasible and thus all constraints are marked "possible member".

    Then the algorithm starts trying to prove that constraints are either definitely not or are definitely in the conflict. Depending on this, the state of a constraint is set to either "not member" or "member". Once we have proven that all the remaining constraints that are not marked "not member" form a minimal conflict, we mark all remaining "possible member" conflicts as "member" and stop.

    Now two things can happen:

    1. The conflict refiner runs to the bitter end. If that happens then all constraints are either "not member" or "member". There will be no "possible member" constraints in this case.
    2. The conflict refiner is stopped before it completes (for example because it hits a time limit). At this point there may still be constraints marked "possible member". In that case all constraints marked either "member" or "possible member" form a conflict, but not necessarily a minimal one.

    You can see this nicely in the conflict refiner log. For example

    Refine conflict on 8 members...

     Iteration  Max Members  Min Members
             1            6            0
             2            3            0
             3            3            1
             4            3            2
             5            3            3

    Minimal conflict:    1 linear constraint(s)
                         1 lower bound(s)
                         1 upper bound(s)

    You can see that we start the conflict refiner on 8 constraints.
    In the first iteration we proved that 2 of them are definitely not a member of a minimal conflict, hence "max members" is 2. We did not prove yet that any constraint is a definite member. So after the first iteration there will be 2 constraints marked "not member" and 6 will be marked "possible member".
    In the second iteration we excluded 3 more constraints.
    In the third iteration we found the first conflict that is a definite member. At this point there will be 1 constraint marked "member", 2 constraints marked "possible member" and 5 constraints marked "not member".
    The algorithm continues until "max members" equals "min members", that is, until all constraints are marked either "not member" or "member".


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Possible member in cplex' refineConflict method

    Posted 02/08/19 02:22 PM

    Originally posted by: cplexUser123


    Thank you very much for your detailed explanation. It answers my question.


    #CPLEXOptimizers
    #DecisionOptimization