ILOG CPLEX 11.0 User's Manual > Infeasibility and Unboundedness > Diagnosing Infeasibility by Refining Conflicts > Meet the Conflict Refiner in the Interactive Optimizer > Interpreting Conflict |
Interpreting Conflict |
INDEX PREVIOUS NEXT |
In those results, you can see that c8, the constraint mentioned by presolve, is indeed a fundamental part of the infeasibility, as it directly conflicts with one of the skill constraints. In this example, with so many people away at training, the skill set in c2 cannot be covered. Perhaps it would be up to the judgment of the modeler or management to decide whether to relax the skill constraint or to reduce the number of people who will be away at training during this period, but something must be done for this model to have a feasible solution.
For the sake of explanation, assume that a decision is made to cancel the training in this period. To implement that decision, try entering this command:
change delete constraint c8
Now re-optimize. Unfortunately, even removing c8 does not make it possible to reach an optimum, as you can see from these results of optimization:
Constraints 'c5' and 'c9' are inconsistent. Presolve time = 0.00 sec. MIP - Integer infeasible. Current MIP best bound is infinite. Solution time = 0.00 sec. Iterations = 0 Nodes = 0 |
Perhaps presolve has identified a source of infeasibility, but if you run the conflict
command again, you will see these results:
Now view the entire conflict with this command:
display conflict all
The constraints mentioned by presolve are part of the minimal conflict detected by the conflict refiner. The additional information provided by this conflict is that the lower bound on service quality could also be considered for modification to achieve feasibility: with only one among employees 4, 5, and 8 permitted, any of whom contribute 0.5 to the quality metric, the lower bound on service
can not be achieved. Unlike a binary variable, where it would make little sense to adjust either of its bounds to achieve feasibility, the bounds on a continuous variable like service
may be worth scrutiny.
The other information this Conflict provides is that no change of the upper bound on service
, currently infinity, could aid toward feasibility; perhaps that is already obvious, but even a finite upper bound would not be part of this conflict (as long as it is larger than the lower bound of 3.2).
Note the additional constraint provided in this conflict: sum_eq
. It is a sum of all the equality constraints in the conflict. In this case, there is only one such constraint; sometimes when there are more, an imbalance will become quickly apparent when positive and negative terms cancel.
Again, for the sake of the example, assume that it is decided after consultation with management to repair the infeasibility by reducing the minimum on the service
metric, on the grounds that it is a somewhat arbitrary metric anyway. A minimal conflict does not directly tell you the magnitude of change needed, but in this case it can be quickly detected by examination of the minimal conflict that a new lower bound of 2.9 could be achievable; select 2.8, to be safe. Modify the model by entering this command:
change bound service lower 2.8
and re-optimize. Now at last the model delivers an optimum:
Displaying the solution indicates that employees {2,3,5,6,7,10} are used in the optimal solution.
A natural question is why so many employees are needed. Look for an answer by adding a constraint limiting employees to five or fewer, like this:
add x1+x2+x3+x4+x5+x6+x7+x8+x9+x10 <= 5 end optimize |
As you might expect, the output from the optimizer indicates the current solution is incompatible with this new constraint, and indeed no solution to this what-if scenario exists at all:
Constraint c11, flagged by presolve, is the newly added constraint, not revealing very much. To learn more about why c11 causes trouble, run conflict
again, and view the minimal conflict with the following command again:
display conflict all
You will see the following conflict:
The constraints in conflict with this new limitation are all of the skill requirements. When viewed in this light, the inconsistency is easy to spot: one employee is obviously needed for constraint c4, two are needed for c3, and a simple calculation reveals that three are needed for c2. Since there is no overlap in the skill sets, five employees are too few.
Unless management or the formulator of the model is willing to compromise about the skills, (for example, to relax the righthand side of any of these constraints), constraint c11 needs to be taken out again, since it is unrealistic to get by with only five employees:
change delete constraint c11
This change results in a model with an optimal cost of 335, using six employees.
No better cost is possible in this formulation. Still, you may wonder, "Why not?" To try yet another scenario, instead of limiting the number of employees, try focusing on the cost by changing the upper bound of the cost to 330, like this:
change bound cost upper 330 optimize conflict display conflict all |
This series of commands again renders the model infeasible and shows a minimal conflict:
The upper bound on cost
is, of course, expected to be in the conflict, so relaxing it would merely put the scenario back the way it was. The constraint c1 defines cost
, so unless there is some unexpected latitude in setting salaries, no relief will be found there. Constraints c2 and c3 represent two skill requirements, previously judged beyond negotiation, and constraint c5 represents service quality, already compromised a bit. That rough analysis leaves c9, the requirement not to use three particular employees together.
How much is it costing to maintain this rule? Consider asking them to work productively pairwise, if not all three, and relax the upper limit of this constraint, like this:
change rhs c9 2 optimize |
The model is now restored to feasibility, and the new optimum has an overall cost of 310, a tangible improvement of 25 over the previous optimum, using employees {2,3,5,6,8,10}; employee 7 has been removed in favor of employee 8. Is that enough monetary benefit to offset whatever reasons there were for separating employees 4 and 8? That is not a decision that can be made here; but at least this model provides some quantitative basis toward making that decision. Additionally, a check of the service
variable shows that its solution value is back up to 3.2, a further benefit from relaxing constraint c9. Perhaps this decision should have been made sooner, the first time constraint c9 appeared in a conflict.
The solution of 310 could be investigated further by changing the upper bound of cost
to be 305, for example. The conflict resulting from this change consists of the skills constraint plus the constraint requiring at least one manager on duty. At this point, the analysis has reached a conclusion, unless management or the model formulator wishes to challenge the policy.
Copyright © 1987-2007 ILOG S.A. All rights reserved. Legal terms. | PREVIOUS NEXT |