Title: A Case Study in Network Design JeanCharles Regin
1A Case Study in Network DesignJean-Charles Regin
2Plan
- Real world Problems
- Modeling principles
- Network Design application the ROCOCO project
- Presentation
- Methods
- Integration
- Conclusion
- Lessons
3Real world problems
- Almost all are over-constrained
- Not pure
- Decomposable
- Small or Large number of variables (10,000) and
constraints (100,000) - Scalable but not solvable for n/10 or n/100
- ad-hoc efficient heuristic
- everything is possible
- need flexibility
- Want optimized not optimal
4Real world problems
- Flexibility causes no problem add new
constraints to the solver - Be careful with objective functions relaxation
is not good for CP (the constraints are weak and
no pruning occurs)
5Plan
- Real world Problems
- Modeling principles
- Network Design application the ROCOCO project
- Presentation
- Methods
- Integration
- Conclusion
- Lessons
6Modeling principles
- What a good model is?
- Symmetries
- Implicit constraints
- Global constraints
- Relevant and redundant constraints
- Back propagation
- Dominance rules
7Good Model?
- A good model is a model that leads to an
efficient resolution of a given problem
8Good Model?
- A good model is a model that leads to an
efficient resolution of a given problem - Deals with several notions
Symmetries Catalyzing constraints Global
constraints Relevant and redundant
constraints Back propagation Dominance rules
9Symmetries
- Tutorial on this topic at CP04
- The complexity of a problem can often be reduced
by detecting intrinsic symmetries - When two or more variables have identical
characteristics, it is pointless to differentiate
them artificially - The initial domains of these variables are
identical - These variables are subject to the same
constraints - The variables can be permuted without changing
the statement of the problem - Usually symmetries are removed by introducing an
order between variables
10Catalyzing constraints
- An catalyzing constraint makes explicit a
property that satisfies any solution implicitly. - D(x1)D(x2)D(x3)D(x4)a,b,c,d
- Constraints b,c and d have to be taken at least 1
11Catalyzing constraints
- An catalyzing constraint makes explicit a
property that satisfies any solution implicitly. - D(x1)D(x2)D(x3)D(x4)a,b,c,d
- Constraints b,c and d have to be taken at least
1 - Filtering algorithm if b is not assigned and if
there is only one variable x that contains b in
its domain then xb
12Catalyzing constraints
- A catalyzing constraint makes explicit a property
that satisfies any solution implicitly. - D(x1)D(x2)D(x3)D(x4)a,b,c,d
- Constraints b,c and d have to be taken at least
1 - Filtering algorithm if b is not assigned and if
there is only one variable x that contains b in
its domain then xb - Problem if x1a and x2a then nothing is deduced
13Catalyzing constraints
- A catalyzing constraint makes explicit a property
that satisfies any solution implicitly. - D(x1)D(x2)D(x3)D(x4)a,b,c,d
- Constraints b,c and d have to be taken at least
1 - Filtering algorithm if b is not assigned and if
there is only one variable x that contains b in
its domain then xb - Problem if x1a and x2a then nothing is deduced
- Implicit constraints a can be taken at most
1b,c,d can be taken at most 2 - From the simultaneous presence of some
constraints implicit constraints can be deduced
14Global constraints
- A global constraint is a conjunction of
constraints. This conjunction often takes into
account implicit constraint deduced from the
simultaneous presence of the other constraints - This is the case for the previous example with
the global cardinality constraint - Use the strongest filtering algorithm as you can
at the beginning - It is rare to be able to solve a problem with
weak FA and not to be able to solve it with
strong FA
15Global constraint Alldiff results
- Color the graph with cliquesc0 0, 1, 2, 3,
4 c1 0, 5, 6, 7, 8c2 1, 5, 9, 10,
11c3 2, 6, 9, 12, 13 c4 3, 7, 10, 12,
14 c5 4, 8, 11, 13, 14 - clique size27 Global fails 0 cpu time
1.212 s Local fails 1 cpu time 0.171
sclique size31 Global fails 4 cpu time
2.263 s Local fails 65 cpu time 0.37
sclique size51 Global fails 501 cpu
time 25.947 s Local fails 24512 cpu
time 66.485 sclique size61 Global fails
5 cpu time 58.223 s Local ?????????????
16Relevant Constraints
- At first glance it seems that adding a constraint
which removes some symmetries, or which is an
implicit or a global constraint improves the
current model. This is FALSE - Because
- The new filtering algorithm can delete no value,
because everything is already deduced by the
combination of constraints - The new filtering algorithm can remove some
values and impacts the variable-value strategy
(more backtracks can be needed to reach the first
solution)
17Relevant constraints
- A constraint is relevant w.r.t. a model if the
introduction of this constraint - Is needed by the definition of the problem
- Or if it permits to remove some symmetries, or it
is an implied or a global constraint, and the
introduction of this constraint improves the
search for the solution in term of performance - A constraint is redundant w.r.t. a model if the
constraint is not relevant w.r.t. the model.
18Back propagation
- Consider an optimization problem with an
objective variable obj. - The back propagation is the consequences of the
modifications of the variable obj - Example?x obj. Back propagation
modification of the x variable when obj is
modified
19Back propagation
- Try to improve the back propagation, because when
a solution with a cost c is found the constraint
obj lt c is added and a new solution is sought. - It is important to use constraints involving cost
variable. For instance gcc with cost
20Dominance rules
- A dominance rule is a rule that eliminates some
solutions that are not optimal, or some optimal
solutions but not all - This is a kind of symmetry breaking in regards to
the optimality - An example is given in the resolution of the next
problem
21A bad model?
- Golomb ruler (see CSP lib)A Golomb ruler may
be defined as a set of n integers 0x1 lt x2 lt lt
xn s.t. the n(n-1)/2 differences (xj - xi) are
distinct. Goal minimize xn. - with CP difficult for n gt 13.
- x1,,xn variables (xi-xj) variables. Alldiff
involving all the variables. -
22Alldiff
1 2 3 4 5 6 7
x1-x2 x1-x3 x2-x3 x1 x2 x3
Not a good solution Bad incorporationof
constraintxi xj in alldiff
23Plan
- Real world Problems
- Modeling principles
- Network Design application the ROCOCO project
- Presentation
- Methods
- Integration
- Conclusion
- Lessons
24A Case Study in Network Design
- Very good example and benchmark
- To illustrate the advantages and drawbacks of
different optimization techniques - To illustrate the improvements that can be
thought of when things do not work well - To test new ideas
- To think about what we do introspection
25The ROCOCO Project (1)
- France Telecom RD ISE
- Problem and benchmark definition
- Algorithm validation
- Research laboratories INRIA Numopt, LRIÂ Orsay,
PRiSM Versailles, Evry, - Lower bounds Lagrangean relaxation, column
generation, cuts - Optimization techniques genetic algorithms
- ILOG
- Optimization techniques constraint programming,
mixed integer programming, column generation
26The ROCOCO Project (2)
- Two cycles
- Solution to the  basic problem
- Improvements and study of the influence of
additional constraints
27The Problem (1)
- Routing of Communications
- Mono-routing each demand from a point p to a
point q must follow a unique path - Dimensioning of Links
- The capacity of each link must exceed the sums of
the demands going through the link - Additional Constraints
- Depend on the customer for whom the network is
designed
28The Problem (2)
- Data
- Customer traffic demands
- Possible links, capacities and costs
27Kb/s
S2
S1
S4
115Kb/s
S3
- Result
- Minimal cost network able to simultaneously
respond to all the demands - Route for each demand
S2
S1
S4
Rented capacity 256Kb/s
S3
29The Problem (3)
- Cost minimization principle
- Traffic demands share link capacities
S2
S1
512Kb/s
128Kb/s
S3
30The Problem (4)
- Demands share links
- ? demandsi?j ? capacityi?j
- Technological constraints
31The Problem (5)
64Kb/s
64Kb/s
64Kb/s
64Kb/s
- Side constraints
- Quality of service
- Reuse of existing equipment (limit on the number
of ports, maximal traffic at a node) - Commercial and legal constraints
- Possible future network evolution
- Network management (e.g., traffic concentration)
32Benchmark Elaboration (1)
33Optional Constraints
- Security some commodities to be secured cannot
go through unsecured nodes and links - No line multiplication at most one line per arc.
- Symmetric routing demands from node p to node q
and demands from node q to node p are routed on
symmetric paths. - Number of bounds (hops) the number of arcs of
the path used to route a given demand is limited. - Number of ports the number of links entering
into or leaving from a node is limited. - Maximal traffic the total traffic managed by a
given node is limited.
64Kb/s
64Kb/s
64Kb/s
64Kb/s
34Numerical Characteristics (1)
35Particular Cases
- Loop network (C10)
- Unidirectional lines (C11)
- Extension of an existing network (C16)
- Several commodities (with different  securityÂ
and  number of hops constraints) between
different sites and a central site (C20)
36Comparison / Other Benchmarks
37Mathematical Model
- Develop model on the board?
- Anticipate difficulties?
38Mixed Integer Programming (1)
- Explicit problem definition
- Linear constraints
- Real (floating point) and integer variables
- One optimization criterion
- Separation between problem definition and problem
solving - The continuous relaxation (when fractional values
are allowed for integer variables) is solvable in
polynomial time - Bound on optimization criterion
- Guidance for solving the MIP problem by
branch-and-bound (rounding, cuts, )
39Mixed Integer Programming (2)
- Routing variables xijd (DM 0-1 variables)
- Dimensioning variables capacity levels yijk
(MKÂ 0-1 variables) - Main constraints
- Sj xijd 1 if i is the origin of d
- Si xijd 1 if j is the destination of d
- Si xijd Sk xjkd if j is neither the origin nor
the destination of d - Sk yijk 1
- Sd Demd xijd Sk Capaijk yijk
40Mixed Integer Programming (3)
41Constraint Programming (1)
- Explicit problem definition
- Separation between problem definition and problem
solving - Systematic deduction of the consequences of made
decisions (constraint propagation) - Partial constraint propagation è development of
heuristic search algorithms to generate and
optimize solutions - Incremental constraint propagation (with global
fix point semantics) - Localized definition of the constraint
propagation process (each constraint propagates
independently of other constraints) è many
different types of constraints viewed as as many
sub-problems
42Constraint Programming (5)
- Routing variables paths (D set variables)
- A set of arcs joining the origin to the
destination of the demand - Basic functions impose or forbid an arc (or a
node) - Dimensioning variables chosen capacity levels (M
enumerated variables) - Specific constraints and constraint propagation
algorithms
43Constraint Programming (6)
44Path representation in CP
- Classical modelGraph represented by the
nodesOne variable per nodeValue possible
neighboor - Path from s to t alldiff on nodes.
45Path representation in CP
s
a
d
e
b
f
c
t
D(s)a,b, D(a)s,b,c,d, D(b)s,a,c,
D(c)a,b D(d)a,e,f, D(e)d,t, D(f)d,t,
D(t)s
46Path representation in CP
s
a
d
e
b
f
c
t
D(s)a,b, D(a)s,b,c,d, D(b)s,a,c,
D(c)a,b D(d)a,e,f, D(e)d,t, D(f)d,t,
D(t)s
47Path representation in CP
s
a
d
e
b
f
c
t
Problem if some variables do not belong to the
pathWhat is the value assigned to these
variables?
48Path representation in CP
s
a
d
e
b
f
c
t
A dummy value is added to each domain BAD IDEA
D(s)a, D(a)c, D(c)b, D(b)dummyb, D(d)
e, D(e)t, D(f)dummyf, D(t)s
49Path representation in CP
s
a
d
e
b
f
c
t
Loops are allowed (var links to itself) GOOD IDEA
D(s)a, D(a)c, D(c)b, D(b)b, not
possible b has been already taken by c
50Path representation in CP
- Classical model- One var per node- Alldiff
constraint cost for the matching O(m) per
modification
51New model
- General point of view we search for a subgraph.
Two entities- Digraph class - DigraphVar class - A DigraphVar is a subgraph of a digraph w.r.t.
properties, for instance path.It is defined
from a Digraph
52New model
- General point of view we search for a subgraph.
Two entities- Digraph class - DigraphVar class - A DigraphVar is a subgraph of a digraph w.r.t.
properties, for instance path.It is defined
from a Digraph - API similar to setvar API
53Digraph
- class IlcDigraph IlcDigraph(IlcInt
nbNodes,IlcIntArray from,IlcIntArray to)IlcInt
getNbNodes()constIlcInt getNbArcs()constIlcInt
getNbOutgoingArcs(const IlcInt node)
constIlcInt getNbIncomingArcs(const IlcInt
node) constIlcInt getEmanatingNode(const IlcInt
arc)constIlcInt getTerminatingNode(const IlcInt
arc)constIlcInt getFirstOutgoingArc(const
IlcInt node)constIlcInt getNextOutgoingArc(const
IlcInt node, const IlcInt arc)constIlcInt
getFirstIncomingArc(const IlcInt
node)constIlcInt getNextIncomingArc(const
IlcInt node, const IlcInt arc)const
54Digraph Variable
- Class DigraphVarIlcDigraphVar(IlcManager m,
IlcDigraph g)IlcIntSetVar getNodesVar()const
IlcIntSetVar getArcsVar()constIlcIntSetVar
getSourcesVar()const IlcIntSetVar
getSinksVar()constIlcBool isBound()constIlcBoo
l isAPath()const // accessors IlcBool
isArcRequired(IlcInt arc)const IlcBool
isArcPossible(IlcInt arc)const IlcBool
isNodeRequired(IlcInt node)const IlcBool
isNodePossible(IlcInt node)const IlcBool
isSourceRequired(IlcInt node)const IlcBool
isSourcePossible(IlcInt node)const IlcBool
isSinkRequired(IlcInt node)const IlcBool
isSinkPossible(IlcInt node)const
55Digraph Variable
- Class DigraphVar // modificators void
removeAllOutgoingArcs(IlcInt node)constvoid
removeAllIncomingArcs(IlcInt node)constvoid
removeAllOutgoingArcsButArc(IlcInt node, IlcInt
arc)constvoid removeAllIncomingArcsButArc(IlcInt
node, IlcInt arc)constvoid removeArcPossible(Il
cInt arc)const void addArcRequired(IlcInt
arc)constvoid removeNodePossible(IlcInt
node)constvoid addNodeRequired(IlcInt
node)const void removeSinkPossible(IlcInt
node)const void addSinkRequired(IlcInt
node)constvoid removeSourcePossible(IlcInt
node)constvoid addSourceRequired(IlcInt
node)const
56Digraph Variable
- Class DigrapVar// for iterationsIlcInt
getFirstOutgoingArc(IlcInt node)constIlcInt
getNextOutgoingArc(IlcInt node, IlcInt
arc)constIlcInt getFirstIncomingArc(IlcInt
node)constIlcInt getNextIncomingArc(IlcInt
node, IlcInt arc)const IlcDigraph
getDigraph()constIlcInt getNbIncomingArcs(IlcInt
node)constIlcInt getNbOutgoingArcs(IlcInt
node)const
57Digraph Variable
- Class DigraphVar
- // graph functions
- IlcInt getFirstArcPossibleOnShortestPath(IlcIntDis
tanceFunctionI d, const IlcInt source,
const IlcInt sink, IlcInt
dem1)const - IlcInt computeShortestPathDistance(IlcIntDistanceF
unctionI dist, const IlcInt source,
const IlcInt sink, IlcInt
dem1)const - IlcIntArray computeShortestPath(IlcIntDistanceFunc
tionI dist, const IlcInt source,
const IlcInt sink, IlcInt dem1)const
58Distance Function
- class IlcIntDistanceFunctionI IlcIntDistanceFunc
tionI(IlcDigraph g,IlcInt maxCost) virtual
IlcInt getCost(IlcDigraphVar var,
IlcInt arc, IlcInt dem)0
59Path Constraints
- IlcConstraint IlcSimplePath(IlcDigraphVar g,
IlcInt source, IlcInt sink) - IlcConstraint IlcShortestPath(IlcDigraphVar g,
- IlcInt source, IlcInt sink,
IlcIntVar obj, IlcIntDistanceFunctionI
dist)
60Element constraint
- enum IlcGraphProperty IlcNodeRequired0L,
IlcSourceRequired1,
IlcSinkRequired2, IlcEmanatingRequired
3, IlcTerminatingRequired4,
IlcTraversedRequired5,
IlcArcRequired20 - IlcConstraint IlcGraphElement(IlcInt item,
IlcDigraphVarArray gvs,
IlcIntSetVar var,
IlcGraphProperty pte)
61Selectors
- class IlcDigraphSelectDigraphVarI
IlcDigraphSelectDigraphVarI() virtual
IlcInt select(IlcDigraphVarArray vars)0 - class IlcDigraphSelectArcI IlcDigraphSelectArcI
() virtual IlcInt select(IlcDigraphVarArray
vars, IlcInt index)0
62Selectors (contd)
- class IlcDigraphSelectShortestPathArcI
IlcDigraphSelectArcI IlcDigraphSelectShortestPa
thArcI(IlcIntDistanceFunctionI fn) virtual
IlcInt select(IlcDigraphVarArray vars, IlcInt
index) virtual IlcInt getSource(IlcDigraphVarArr
ay vars, IlcInt index)0 virtual
IlcInt getSink(IlcDigraphVarArray vars, IlcInt
index)0 virtual IlcInt getDemand(IlcDigraphVarA
rray vars, IlcInt index)0
63Goals
- IlcGoal IlcDigraphRequireArc(IlcManager m,
IlcDigraphVar digraph,
IlcInt arcIndex) - IlcGoal IlcDigraphRemoveArc(IlcManager m,
IlcDigraphVar digraph,
IlcInt arcIndex) - IlcGoal IlcDigraphAddArc(IlcManager m,
IlcDigraphVarArray vars, IlcInt index,
IlcDigraphSelectArcI selectArc)
64Goals (contd)
- IlcGoal IlcDigraphInstantiate(IlcManager m,
IlcDigraphVarArray vars, IlcInt index,
IlcDigraphSelectArcI selectArc) - IlcGoal IlcDigraphGenerate(IlcManager m,
IlcDigraphVarArray vars,
IlcDigraphSelectDigraphVarI selectD,
IlcDigraphSelectArcI selectArc)
65Why not PathVar?
- Path is a property of a graph. We prefer to
express properties by constraint - In any cases, we need to be able to test if an
object is a path/tree/cycle
66Rococo in CP
- Advantages of digraph variables
- Simple
- Open to many additional constraints
- Much more efficient than basic constraint
programming (combines constraint programming with
optimization algorithms on graphs)
67Constraint Programming (10)
- Search strategy select the most important demand
and the path for which the additional (marginal)
cost for routing this demand is minimal - Shortest path problem with constraints
- Successive constraints impose the last arc, then
the previous arc, ..., and finally the first arc
of the shortest path - Each of these added constraints leads to creating
a choice point upon backtracking, the imposed
arc is forbidden and a new shortest path, taking
this interdiction into account, computed
68Constraint Programming (11)
- New solution obtained when all the paths are
fully instantiated - Search continues with an additional constraint
forcing the cost of new solutions to be strictly
smaller than the cost of the current solution
69Constraint Programming (12)
- Slice-Based Search
- Search for the first solution given by the
heuristic - Search for solutions obtained by obeying the
heuristic always except once - Search for solutions obtained by obeying the
heuristic always except twice -
70Constraint Programming (13)
- Variants of slice-based search
- Incrementing little by little the number of
authorized discrepancies - SBS 1 0 discrepancy, then 1, then 2, then 3,
- SBS 2 0 discrepancy, then 2, then 4, then 6,
- SBS 3 0 discrepancy, then 3, then 6, then 9,
- SBS N1 makes less redundant search than SBS N,
but at the beginning SBS N is more focused on
solutions close to the heuristic chosen as a basis
71Constraint Programming (14)
- Test results (23 instances, 2 minutes)
- Equivalent results 13 instances
- SBS2 with the best CPU times
- SBS1 ( 28 / SBS2)
- SBS3 ( 74 / SBS2)
- SBS1 SBS2 better than SBS3 3 instances
- SBS1 SBS3 better than SBS2 2 instances
- SBS1 better than SBS2 better than SBS3 2
instances - SBS1 better than SBS3 better than SBS2 1
instance - SBS2 better than SBS1 better than SBS3 1
instance - SBS3 better than SBS1 better than SBS2 1
instance (the most difficult)
72Constraint Programming (15)
- Test results (23 instances, 10 minutes)
- Equivalent results 16 instances
- SBS2 with the best CPU times
- SBS1 ( 16 / SBS2)
- SBS3 ( 55 / SBS2)
- SBS1 SBS2 better than SBS3 2 instances
- SBS2 better than SBS1 better than SBS3 4
instances - SBS3 better than SBS1 better than SBS2 1
instance (the most difficult)Â - Summary SBS1 is never the worst, SBS2 is the
best for 10 minutes of CPU time, SBS3 is the best
only on the most difficult instance
73Column Generation (1)
- Principle
- Generate candidate solution components
- Find the optimal combination of these components
- Infer characteristics of  good solution
components to add - Iterate
- Examples
- Train scheduling
- Crew scheduling
- Routing
74Column Generation (2)
- Column Generation
- Routing variables paths xpd (a 0-1 variable per
possible path) - Total number lt D e (N!)
- Start with all paths with at most 2 arcs
- Dimensioning variables capacity levels yijk
(MKÂ 0-1 variables) - Possibility to start with few capacity levels
75Column Generation (3)
- Master Problem
- With integer variables to obtain feasible
solutions - With floating point variables to obtain lower
bounds and dual values - Sub-Problem
- To integrate new routing variables
76Column Generation (4)
- Optional constraints in column generation
- Maximal number of arcs in the shortest path
sub-problem - Maximal number of ports and traffic per node in
the master problem - Security constraints in both the master and the
sub-problem
77Column Generation (5)
- Repeat
- Once every 5 iterations, search for an integer
solution (MIP) - Search for the optimal solution of the continuous
relaxation - Get dual values
- Add columns
- Paths the best path for each demand if this path
has a reduced cost smaller than the current gap - Links
- If some paths have been added the best capacity
level for each arc if its reduced cost is
negative - Otherwise the best capacity level for each arc
if its reduced cost is smaller than the current
gap - Final optimization with integer variables (MIP)
78Column Generation (6)
- Variant Use the previous algorithm with a
systematic limit on the number of arcs of a path - Start with paths with at most 4 arcs
- When the problem is solved with a given limit,
increment the allowed number of arcs and iterate
79Pros and Cons of Different Techniques (1)
- Constraint Programming
- Global constraints on paths
- The overall cost is a sum of many step functions
(almost no propagation) - Mixed Integer Programming
- Sum objective handled with a global view
- No good model for mono-routing (in the
relaxation, the LP solver provides a flow) - Bad continuous relaxation of the step functions
- Column Generation
- Sum objective handled with a global view
- A column is a path
- Bad continuous relaxation of the step functions
80Pros and Cons of Different Techniques (2)
- Security
- CP Easy to model with logical constraints but no
global propagation - MIP, CG Leads to lots of fractional values in
the relaxation (e.g., routing a demand on two
paths, each made of half-secure and
half-unsecured links) - No line multiplication
- CP, MIP, CG Smaller problem
- MIP, CG Impact on the continuous relaxation of
the step functions - Symmetric routing
- CP, MIP, CG Smaller problem
81Pros and Cons of Different Techniques (3)
- Number of bounds (arcs)
- CG Much less potential paths and paths much
easier to generate (especially when the number of
bounds is really small) - CP More propagation but with more complex
algorithm - MIP Easy to model (sum of 0-1 variables
representing the presence of each arc in a path)
but more fractional values in the relaxation - Number of ports
- CP Easy to model with logical constraints but no
global propagation - MIP, CG Requires additional integer variables
(with fractional values in the relaxation) - Maximal traffic
- MIP, CG Linear constraints
- CP Linear constraints with no global propagation
82Improvements of MIP (1)
- Adding cuts
- For each demand and each node, at most one arc
entering (or leaving) the node can be used. - For each node, the sum of the capacities of the
arcs entering (or leaving) the node must be
greater than or equal to the sum of the demands
arriving at (or starting from) the node plus the
sum of the demands traversing the node. - For each demand and each arc, the routing of the
demand through the arc excludes, for this arc,
the multiplied capacity levels strictly inferior
to the demand. - Impact mostly on the lower bound.
83Improvements of MIP (2)
- Cumulative formulation
- Rather than using a 0-1 variable yk for each
capacity level k, use a 0-1 variable dk to
represent the decision to go from a capacity
level to the next, i.e., dk yk1 yk. - Impact mostly on the lower bound
- Specialized search strategy
- More solutions found in 10 minutes or less but of
poorer quality - Fixing heuristic
- Fix all variables with integer values in the
current relaxation - Solve a sub-MIP on the other variables
- Large neighborhood search
84Improvements of CG (1)
- Varying the time allocated to the generation of
integer solutions - More solutions found in 10 minutes or less but of
poorer quality - Use Branch-and-Price
- Branching on capacity levels
- Branching on paths
- Keep a pool of  promising columns
- Keep regular calls to a MIP solver to generate
integer solutions, but keep the number of nodes
explored  smallÂ
85Improvements of CG (2)
- Use Branch-and-Price-and-Cut
- Set cuts lower bound on the total capacity of
the links that cross the frontier of some given
set of nodes. - BigDemand cuts lower bound on the number of
links opened with a given minimal capacity that
cross the frontier of some given set of nodes. - Connexity cuts lower bound on the number of open
links that have at least one extremity in a given
set of nodes. - Link cuts constrain the capacity of an arc to be
greater than or equal to the demand for a path
going through this arc (only these have an impact
on path pricing). - On small instances, about 70 of the gap is
closed.
86Improvements of CP (1)
- Changing the order in which demands are routed
- Weight 2 demand 1 reverse-demand
- Example
- D01 1800, D10 950, D23 1000, D32 1000,
D45 1900, D54 50 - Symmetric routing D01 and D10, then D23 and D32,
then D45 and D54 - Non-symmetric routing D45, D01, D23, D32, D10,
D54 - After the modification
- Symmetric routing D01 and D10, then D45 and D54,
then D23 and D32 - Non-symmetric routing D01, D45, D10, D23, D32,
D54 - Gain on B10 3 on average
- Loss on the C series 1 on average
87Improvements of CP (2)
- Specific (path-oriented) constraint propagation
and heuristic - Is there a path from p to q, with b arcs or less,
- that goes through n?
- that does not go through n?
- Heuristic find such a path with the smallest
marginal cost - Costly constraint propagation algorithm O(n4) in
the worst case - Gain on B12 3.5 on average over the 32 variants
with limits on the number of bounds - Loss on C12 0.4
88Improvements of CP (3)
- Direct constraint between variables representing
the paths and variables representing the traffic
through each node - Use of Parallel Solver
- A few lines of code
- Modification of the tree-search traversal
strategy - Branch more close to the root of the tree
89Improvements of CP (4)
- Greedy local search
- Try to remove arcs from a solution without adding
any new arc (allowing some increase in existing
arc capacities) - Large neighborhood search
- Randomization in the choice of the paths to
re-instantiate - Structured neighborhood randomly pick two arcs
and re-instantiate all paths going through any of
these arcs - Randomization in the instantiation order
- Portfolio of heuristics to penalize paths (with
weights assigned to each heuristic and adjusted
during search) - Parallel multi-point large neighborhood search
different workers work in parallel on different
fragments
90Current Results (1)
91Current Results (2)
92Current Results (3)
93Integration (1)
94Integration (2)
- Select optimization algorithm
95Integration (3)
96Integration (4)
97Integration (5)
bench.txt
98Conclusion (1)
- Good results obtained by combining constraint
programming (on graphs) and local optimization - In the absence of optional constraints solutions
comparable to those provided by current tools - Capacity to take optional constraints into
account - Branch-and-Price-and-Cut also provides good
results - The benchmark remains challenge
- Optimum in general unknown
- Instances very different one from the other
99Conclusion (2)
- Integration of optional constraints
- CP 5 to 20 lines of code added in a
non-intrusive manner for each of the six optional
constraint (thanks to the graph library) - MIP 10 to 40 lines
- CG 10 to 40 lines, in multiple places in the
code - Other constraints could be harder to add
- Adjustments necessary in all cases to improve
efficiency
100Plan
- Real world Problems
- Modeling principles
- Network Design application the ROCOCO project
- Presentation
- Methods
- Integration
- Conclusion
- Lessons
101Lessons
- What do we learn?
- Surprising things!
- Do not forget the essential
102The key idea path variable!
103Assume P ? NP
- Ok, we cannot avoid an exponential behavior
- For some instances, an NP Complete Problem will
required an exponential time to be solved - So, our only hope is to shift the exponential
such that the problem is solvable for a size and
a time that are acceptable
104Shifting the exponential
105Shifting the exponential
106The key idea path variable!
107We worked a lot!
108General considerations
- When solving a problem in CP
- Potential performance gain
- data structure optimization (code) x 10
- search strategies x 1 000
- model x 1 000 000
- Repartition of effort for ROCOCO
- data structure optimization (code) 65
- search strategies 25
- model 10
109Conclusion
- CP is a general technique can encapsulate a lot
of work - CP is an efficient method for solving some
combinatorial problems small or large - Filtering algorithms are quite important for non
binary constraints - CP allows the use of sophisticated strategies
- If you want to use CP think CP (avoid Boolean
(0-1) variables). CP allows the use of symbolic
representation
110More information
- Go to www.ilog.com
- Go to my webpagewww.constraint-programming.com/p
eople/reginor google my name Jean Charles Regin