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:
-
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.
-
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