Title: Conflict Analysis
1Conflict Analysis
- SCIP Workshop at ZIB
- October 2007
2General Idea
- Problem is divided into smaller subproblems
- branching tree
- Some subproblems are infeasible
- Analyzing the infeasibilities can yield
information about the problem - Information can be used at other subproblems to
prune the search tree
3Example
x1 1
x2 0
x3 0
- a subproblem is infeasible
4Example
x1 1
x2 0
x3 0
- a subproblem is infeasible
- conflict analysis yields feasible constraint,
that cuts off other nodes in the tree
5Outline
- Conflict Analysis in SAT
- Conflict Analysis in MIP
- Implementation
- Computational Results
6Outline
- Conflict Analysis in SAT
- Conflict Analysis in MIP
- Implementation
- Computational Results
7Satisfiability Problem (SAT)
- Boolean variables x1,...,xn ? 0,1
- Clauses
- Task
- find assignment x ? 0,1n that satisfies all
clauses, or prove that no such assignment exists
with literals lik xj or lik ?xj 1 xj
8Binary Constraint Propagation
9Binary Constraint Propagation
10Binary Constraint Propagation
11Conflict Graph
- decision variables
- deduced variables
- conflict
12Conflict Graph
conflict detecting clause
- decision variables
- deduced variables
- conflict
13Conflict Graph Conflict Cuts
- choose cut that separates decision variables from
conflict vertex
14Conflict Graph Conflict Cuts
reason side
conflict side
- choose cut that separates decision variables from
conflict vertex
15Conflict Graph Conflict Cuts
reason side
conflict side
- choose cut that separates decision variables from
conflict vertex - conflict clause
16Conflict Graph Trivial Cuts
17Conflict Graph First-UIP
- Unique Implication Point lies on all paths from
the last decision vertex to the conflict vertex
18Conflict Graph First-UIP
- Unique Implication Point lies on all paths from
the last decision vertex to the conflict vertex - First UIP the UIP closest to ? (except ? itself)
19Conflict Graph First-UIP Cut
- Put all vertices fixed after First-UIP to the
conflict side, remaining vertices to the reason
side - First-UIP cut
20Conflict Analysis Algorithm (FUIP)
21Conflict Analysis Algorithm (FUIP)
- Initialize conflict queue with the variables
involved in the conflict
22Conflict Analysis Algorithm (FUIP)
- Initialize conflict queue with the variables
involved in the conflict
23Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
24Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
25Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
26Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
27Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
28Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
29Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
30Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
31Conflict Analysis Algorithm (FUIP)
- As long as there is more than one variable of the
last depth level in the queue, resolve the last
deduction
32Conflict Analysis Algorithm (FUIP)
- If there is only one variable of the last depth
level left, stop
33Conflict Analysis Algorithm (FUIP)
- If there is only one variable of the last depth
level left, stop - The remaining variables define the conflict set
34Conflict Analysis Algorithm (FUIP)
- The conflict clause consists of all (negated)
assignments in the conflict set
35Outline
- Conflict Analysis in SAT
- deductions lead to conflict ? conflict graph
- cut in conflict graph ? conflict clause
- Conflict Analysis in MIP
- Implementation
- Computational Results
36Outline
- Conflict Analysis in SAT
- deductions lead to conflict ? conflict graph
- cut in conflict graph ? conflict clause
- Conflict Analysis in MIP
- Implementation
- Computational Results
37Mixed Integer Program
- linear objective function c
- linear constraints Ax ? b
- real or integer valued variables x
38Conflict Analysis for MIP
- Two main differences to SAT
- non-binary variables
- conflict graph bound changes instead of fixings
- conflict clause ? conflict constraint
39Conflict Analysis for MIP
- Two main differences to SAT
- non-binary variables
- conflict graph bound changes instead of fixings
- conflict clause ? conflict constraint
technical issue
40Conflict Analysis for MIP
- Two main differences to SAT
- non-binary variables
- conflict graph bound changes instead of fixings
- conflict clause ? conflict constraint
- main reason for infeasibility LP relaxation
- conflict graph has no link from the decision and
deduction vertices to the conflict vertex
technical issue
41Conflict Analysis for MIP
- Two main differences to SAT
- non-binary variables
- conflict graph bound changes instead of fixings
- conflict clause ? conflict constraint
- main reason for infeasibility LP relaxation
- conflict graph has no link from the decision and
deduction vertices to the conflict vertex
technical issue
42Back to SAT Conflict Graph
conflict detecting clause
- One clause detected theconflict
- Only a few variables linked to the conflict vertex
43Infeasible LP Conflict Graph
- The LP as a whole is responsible for the conflict
- All local bound changes are linked to the
conflict vertex
44Infeasible LP Conflict Graph
- LP analysis selects some of these local bounds
45Infeasible LP Conflict Graph
- LP analysis selects some of these bounds
- cut yields conflict constraint
46Conflict Analysis for infeasible LPs
- if the LP relaxation is infeasible, the whole
relaxation is involved in the conflict - all constraints
- all global bounds
- all local bounds
- try to find a small subset of the local bounds
that still leads to an infeasible LP relaxation - variant of minimal infeasible subsystem
problem(see Amaldi, Pfetsch, Trotter) - heuristic use dual ray to relax local bounds
47Infeasible LP Dual Ray Heuristic
48Infeasible LP Dual Ray Heuristic
local bounds
49Infeasible LP Dual Ray Heuristic
- LP relaxation
- dual LP
- dual ray
local bounds
50Infeasible LP Dual Ray Heuristic
- LP relaxation
- dual LP
- dual ray
local bounds
51Infeasible LP Dual Ray Heuristic
- LP relaxation
- dual LP
- dual ray
- relax bounds
local bounds
52Outline
- Conflict Analysis in SAT
- deductions lead to conflict ? conflict graph
- cut in conflict graph ? conflict clause
- Conflict Analysis in MIP
- deductions lead to infeasible LP
- LP analysis links conflict vertex
- cut in conflict graph ? conflict constraint
- Implementation
- Computational Results
conflict graph
53Outline
- Conflict Analysis in SAT
- deductions lead to conflict ? conflict graph
- cut in conflict graph ? conflict clause
- Conflict Analysis in MIP
- deductions lead to infeasible LP
- LP analysis links conflict vertex
- cut in conflict graph ? conflict constraint
- Implementation
- Computational Results
conflict graph
54Implementation
- Which pruned subproblems should be analyzed?
- propagation conflicts yes
- infeasible LP conflicts yes
- bound-exceeding LP conflicts no
- strong branching conflicts no
- How many conflict constraints per conflict?
- all FUIP constraints 1-FUIP, 2-FUIP, ...
- How should conflict constraints be used?
- only for propagation, not as cutting planes
- How can useless conflict constraints be
identified? - "easy" for SAT due to depth-first-search
- open topic for best-first-search MIP, needs more
ideas! - currently aging mechanism
55How to Support Conflict Analysisin User Plugins
- affected plugin types
- constraint handlers (propagation)
- propagator
- special bound inference methods for propagation
- SCIPinferVarLbCons(), SCIPinferVarUbCons()
- SCIPinferVarLbProp(), SCIPinferVarUbProp()
- provide constraint and one additional integer
(inferinfo) - reverse propagation
- must provide the reason for a bound deduction
- can use the inferinfo to help finding the reason
56Reverse Propagation
- input constraint and tightened bound
- deduced
57Reverse Propagation
- input constraint and tightened bound
- deduced
- output bounds that are reason for deduction
- and
58Reverse Propagation Examples
- set covering constraints
- only one type of propagation
- reverse propagation easyall variables except
the inferred variable are reason variables
59Reverse Propagation Examples
- set covering constraints
- only one type of propagation
- reverse propagation easyall variables except
the inferred variable are reason variables - linear constraints
- propagation of left and right hand side
- inferinfo array position of inferred variable
and lhs/rhs indicator - reverse propagationfind set of variables j ? k
with bounds that trigger the deduction
60Outline
- Conflict Analysis in SAT
- deductions lead to conflict ? conflict graph
- cut in conflict graph ? conflict clause
- Conflict Analysis in MIP
- deductions lead to infeasible LP
- LP analysis links conflict vertex
- cut in conflict graph ? conflict constraint
- Implementation
- Computational Results
conflict graph
61Outline
- Conflict Analysis in SAT
- deductions lead to conflict ? conflict graph
- cut in conflict graph ? conflict clause
- Conflict Analysis in MIP
- deductions lead to infeasible LP
- LP analysis links conflict vertex
- cut in conflict graph ? conflict constraint
- Implementation
- Computational Results
conflict graph
62Computational Results
- Instances of MIPLIB 2003 and Mittelmann
- that could be solved by one of the three in 1
hour - for which one of the three needed at least 1000
nodes
nodes -20 time -14
63Computational Results
- ALU instances up to 8 bits
- for which one of the three needed at least 1000
nodes - infeasible MIP instances
nodes -85 time -58
64Computational Results
- "Enlight" instances up to board size 10 ? 10
- for which one of the three needed at least 1000
nodes - 2 infeasible and 4 feasible MIP instances
nodes -78 time -59
65Computational Results
- instance "arki001" from MIPLIB 3.0 / MIPLIB 2003
- first solved by Balas and Saxena (Dec 2005)
- "Optimizing over the Split Closure"
- 54 hours rank-1 split cut generation 11 hours
CPLEX 9.0 - Bob-tuned CPLEX
- "using a lot of strong branching"
- 628 hours, 103 million nodes
- SCIP
- using an insane amount of strong branching
- full conflict analysis (bound-exceeding LPs and
strong branchings)
66Computational Results
67Computational Results
68Computational Results
- instance roll3000" from MIPLIB 2003
- SCIP
- using an insane amount of strong branching
- moderate conflict analysis
- 3.2GHz Pentium-IV
- Unfortunately...
- XPressMP 2006B with tuned settings 1 hour (3 GHz
Athlon-64) - Reported by Alkis Vazacopoulos (ISMP 2006)
- As far as I understood lots of local cuts