Resource constrained shortest path algorithm for
EDF short-term thermal production planning
problem
Pascal Benchimol1
Markus Kruber2
Axel Parmentier3
1 EDF
2 Chair
of Operations Research, RWTH Aachen University
3 CERMICS,
École des Ponts Paristech
March 29, 2017
EDF - Global Problem
.
Generation units
I
I
I
∼ 60 nuclear
∼ 100 thermal
∼ 500 hydraulic
Technically feasible
production schedules
Min operating cost
Horizon: 24h + 24h
Time limit: 15m
1 / 35
EDF - Global Problem
.
Generation units
I
I
I
∼ 60 nuclear
∼ 100 thermal
∼ 500 hydraulic
Technically feasible
production schedules
Min operating cost
Horizon: 24h + 24h
Time limit: 15m
1 / 35
EDF - Global Problem
.
Generation units
I
I
I
∼ 60 nuclear
∼ 100 thermal
∼ 500 hydraulic
Technically feasible
production schedules
Min operating cost
Horizon: 24h + 24h
Time limit: 15m
1 / 35
Production Plan - Local Problem
state 1
state 0
off
.
time
2 / 35
Production Plan - Local Problem
state 1
state 0
off
.
startup
time
· #startups
2 / 35
Production Plan - Local Problem
state 1
state 0
off
.
startup
time
· #startups
· min duration production level
2 / 35
Production Plan - Local Problem
state 1
state 0
off
.
time
startup · #startups · min duration production level
min duration power state · #modulations
2 / 35
Production Plan - Local Problem
state 1
state 0
off
.
time
startup · #startups · min duration production level
min duration power state · #modulations · shutdown
2 / 35
Production Plan - Local Problem
state 1
state 0
off
.
time
startup · #startups · min duration production level
min duration power state · #modulations · shutdown
min/max power state · min/max increase/decrease
#deep decreases
2 / 35
Table of Content
1. The Unit Commitment Problem
2. Resource Constraint Shortest Path Problem
3. Enumeration Algorithms
4. Computational Results
5. Pareto Frontier - An Alternative Approach
3 / 35
The Unit Commitment Problem (1)
Assume we can generate all technically feasible production plans
Pi for each plant i ∈ V .
P
maximize
cp xp
p∈P
P
subject to
xp = 1
∀i ∈ V
p∈Pi
xp
4 / 35
∈ {0, 1} ∀p ∈ P
The Unit Commitment Problem (1)
Assume we can generate all technically feasible production plans
Pi for each plant i ∈ V .
P
maximize
cp xp
p∈P
P
subject to
xp = 1
∀i ∈ V
p∈Pi
xp
∈ {0, 1} ∀p ∈ P
What makes the problem more difficult?
I
Linking constraints: Shared gas stock
I
Piecewise linear cost function on gas consumption γ
4 / 35
Excursion: Piecewise Linear Objective Function
cost
β2
min
P
βk ξk
k
s.t.
β1
β0
α0
gas
α1
γ
α2
5 / 35
γ − αk ≤ ξk ∀k
ξk ≥ 0 ∀k
The Unit Commitment Problem (2)
Let j describe a group of plants.
maximize
P
p∈P
cp xp −
PP
subject to
j
βjk ξjk
P
xp = 1
p∈P
i
P
γp xp
p∈Pj
P
γp xp
k
∀i ∈ V
p∈Pj
P
p∈Pj
γp xp − αjk ≤ ξjk
∀j, k
xp ∈ {0, 1} ∀p ∈ P
ξjk ≥ 0
∀j, k
6 / 35
The Unit Commitment Problem (2)
Let j describe a group of plants.
maximize
P
p∈P
cp xp −
PP
subject to
j
βjk ξjk
P
xp = 1
p∈P
i
P
γp xp ≥ gj
p∈Pj
P
γp xp ≤ Gj
k
p∈Pj
P
p∈Pj
γp xp − αjk ≤ ξjk
∀i ∈ V
∀j
∀j
∀j, k
xp ∈ {0, 1} ∀p ∈ P
ξjk ≥ 0
∀j, k
6 / 35
The Unit Commitment Problem (2)
Let j describe a group of plants.
maximize
P
p∈P
cp xp −
PP
subject to
j
βjk ξjk
P
xp = 1
p∈P
i
P
γp xp ≥ gj
p∈Pj
P
γp xp ≤ Gj
k
p∈Pj
P
p∈Pj
γp xp − αjk ≤ ξjk
∀i ∈ V
∀j
∀j
∀j, k
xp ∈ {0, 1} ∀p ∈ P
ξjk ≥ 0
∀j, k
Why not solving it directly?
6 / 35
Column Generation in General
1.
Start with subset of variables
e⊂P
P
2.
Solve relaxed version of primal problem
xp ≥ 0
3.
Get dual variables for each constraint
λ, µ, π
4.
Find violated constraint in the dual problem
5.
Add variable xp to the problem
7 / 35
e ∪ {p}
P
Applied Column Generation
e ⊂ P.
Start with an inital set of feasible paths P
P
PP
maximize
cp xp −
βjk ξjk
j k
e
p∈P
P
subject to
xp = 1
ei
p∈
P
P
γp xp ≥ gj
ej
p∈P
P
ej
p∈P
P
ej
p∈P
γp xp ≤ Gj
γp xp − αjk ≤ ξjk
∀i ∈ V
∀j
µ0j
∀j
µ1j
∀j, k
πjk
e
xp ≥ 0
∀p ∈ P
ξjk ≥ 000000 ∀j, k
8 / 35
λi
Applied Column Generation
e ⊂ P.
Start with an inital set of feasible paths P
P
PP
maximize
cp xp −
βjk ξjk
j k
e
p∈P
P
subject to
xp = 1
ei
p∈
P
P
γp xp ≥ gj
ej
p∈P
P
ej
p∈P
P
ej
p∈P
γ p x p ≤ Gj
γp xp − αjk ≤ ξjk
∀i ∈ V
λi
∀j
µ0j
∀j
µ1j
∀j, k
e
xp ≥ 0
∀p ∈ P
ξjk ≥ 000000 ∀j, k
8 / 35
πjk
Dual and Pricing Problem
Dual
min −
P
i∈V
λi +
P
j∈J
−µ0j gj + µ1j Gj +
s.t.
cp + λi(p) +
γp (µ0j(p)
−
µ1j(p)
9 / 35
P
πjk αjk
k
−βjk + πjk ≤ 0 ∀j, k
P
e
− πj(p)k ) ≤ 0 ∀p ∈ P
k
Dual and Pricing Problem
Dual
min −
P
i∈V
λi +
P
j∈J
−µ0j gj + µ1j Gj +
s.t.
cp + λi(p) +
γp (µ0j(p)
−
µ1j(p)
P
πjk αjk
k
−βjk + πjk ≤ 0 ∀j, k
P
e
− πj(p)k ) ≤ 0 ∀p ∈ P
k
Pricing
max
p∈P
cp + λi(p) + γp (µ0j(p) − µ1j(p) −
9 / 35
P
k
πj(p)k )
Dual and Pricing Problem
Dual
min −
P
i∈V
λi +
P
j∈J
−µ0j gj + µ1j Gj +
s.t.
cp + λi(p) +
γp (µ0j(p)
−
µ1j(p)
P
πjk αjk
k
−βjk + πjk ≤ 0 ∀j, k
P
e
− πj(p)k ) ≤ 0 ∀p ∈ P
k
Pricing
max
p∈P
cp + λi(p) + γp (µ0j(p) − µ1j(p) −
Main Task
Solve pricing problem fast!
9 / 35
P
k
πj(p)k )
Table of Content
1. The Unit Commitment Problem
1.1 Model
1.2 Column Generation
2. Resource Constraint Shortest Path Problem
3. Enumeration Algorithms
3.1 Enumeration algorithms
3.2 Bounds
4. Computational Results
5. Pareto Frontier - An Alternative Approach
10 / 35
Shortest Path in an Ordered Monoid
For each arc a a resource qa ∈ R
I Associative binary operator ⊕: path resources
I Neutral element 0: empty path
q1
q2
q3
qP = q1 ⊕ q2 ⊕ q3
(R, ⊕) is a monoid.
I
An order compatible with ⊕ :
(R, ⊕, ) is an ordered monoid.
I
Non-decreasing cost c and
constraint ρ functions.
11 / 35
q q̃ ⇒
r ⊕ q r ⊕ q̃
q ⊕ r q̃ ⊕ r
Shortest Path with Resources in an Ordered Monoid
Given an ordered monoid (R, ⊕, )
Input:
Output:
I
Digraph D = (V, A)
I
Two vertices o, d ∈ V
I
I
I
Resources qa ∈ R
An o-d path P such that
L
ρ
a∈P qa = 0
which minimizes
L
c
a∈P qa
Two non-decreasing
oracles c : R → R
ρ : R → {0, 1}
Cost and constraint(s):
I
non-linear(s)
o
q1
qP = q1 ⊕ q2
12 / 35
q2
ρ(qP ) = 0
d
Example 1: Usual Resource Constrained Shortest Path
Input:
Output:
I
Digraph D = (V, A)
I
Origin o, Destination d
I
Costs ca ∈ R
I
I
I
a∈P
Weights wai ∈ R for i ∈ [n]
Thresholds
i ∈ [n]
Wi
An o-d path P such that
X
wai ≤ W i ∀i ∈ [n]
which minimizes
X
a∈P
∈ R for
13 / 35
ca
Example 1: Usual Resource Constrained Shortest Path
Input:
Output:
I
Digraph D = (V, A)
I
Origin o, Destination d
I
Costs ca ∈ R
I
I
I
a∈P
Weights wai ∈ R for i ∈ [n]
Thresholds
i ∈ [n]
Wi
An o-d path P such that
X
wai ≤ W i ∀i ∈ [n]
which minimizes
X
a∈P
∈ R for
Model:
I
I
R = Rn+1
qa = (ca , wa1 , . . . , wan )
I
I
c : ((q 0 , . . . , q n )) 7→ q 0
ρ : ((q 0 , . . . , q n )) 7→ maxi 1qi >W i
13 / 35
ca
Example 2: Restricting Startups
Input:
I
Digraph D = (V, A)
I
Origin o, destination d
1, if startup arc,
wa =
0, otherwise.
I
I
Output:
I
Max startups W start
14 / 35
An o-d path P of
minimum cost such that
the number of startups
per plant is not greater
than W start .
Example 2: Restricting Startups
Input:
Output:
I
Digraph D = (V, A)
I
Origin o, destination d
1, if startup arc,
wa =
0, otherwise.
I
I
I
Max startups W start
An o-d path P of
minimum cost such that
the number of startups
per plant is not greater
than W start .
Model:
I
I
R = R2
qa = (ca , wa )
I
I
c : ((q 0 , q 1 )) 7→ q 0
ρ : ((q 0 , q 1 ) 7→ 1q1 >W start
14 / 35
Example 3: Minumum Duration in Online State
state 1
state 0
off
.
Stay in online state for at least W on .
15 / 35
Example 3: Minumum Duration in Online State
t
t
state 1
t
−W on
−W on
state 0
0
off
.
Stay in online state for at least W on .
15 / 35
Example 3: Minumum Duration in Online State
t
t
state 1
t
−W on
−W on
state 0
0
off
.
Stay in online state for at least W on .
, if wa1 < 0 ∧ wa10 < 0,
∞
1
1
1
w 0
, if wa1 ≥ 0 ∧ wa10 < 0,
(ca , wa ) ⊕ (ca0 , wa0 ) =
a1
1
wa + wa0 , otherwise
15 / 35
Table of Content
1. The Unit Commitment Problem
1.1 Model
1.2 Column Generation
2. Resource Constraint Shortest Path Problem
3. Enumeration Algorithms
3.1 Enumeration algorithms
3.2 Bounds
4. Computational Results
5. Pareto Frontier - An Alternative Approach
16 / 35
Usual A∗ algorithm
P̃
v
P
o
≤ bv
≥
UB
Cod
d
I
qP ∈ R
I
U B ≥ min q
Cod
P
I
bv ≤ qP , ∀P ∈ Pvd
P ∈Po,d
U B is not the subpath of an
A path P ∈ Pov satisfying qP + bv > Cod
optimal path.
A* algorithm: a Branch & Bound
I
Generate all the paths satisfying
Dijkstra
o A∗ d
UB
qP + bv ≤ Cod
I
UB
Update Cod
17 / 35
D
Generalized A∗ algorithm
P̃
v
P
bv
≥
o
UB
Cod
I
qP ∈ R
I
UB ≥
Cod
I
d
min
P |ρ(P )=0
c(qP )
bv qP̃ , ∀P̃ ∈ Pvd
U B or ρ(q ⊕ b ) = 1 is
A path P ∈ Pov satisfying c(qP ⊕ bv ) > Cod
v
P
not the subpath of an optimal path.
Generalized A∗ Algorithm: a Branch & Bound
I
Generate all the paths satisfying
UB
c(qP ⊕ bv ) ≤ Cod
I
and ρ(qP ⊕ bv ) = 0
UB
Update Cod
18 / 35
(Low)
Generic enumeration algorithm
Preprocessing.
L ← empty path in o
B
cU
od ← +∞.
While L is not empty:
I Extract from L a path P of
minimum key.
I
I
L: cand. paths list.
B
cU
od : Upper bound on
optimal path cost.
v: destination of P .
Add. structures
If v = d and ρ(P ) = 0,
B
UB
cU
od ← min(cod , c(P )).
Test if P must be extended. If yes:
I
for each a ∈ δ + (v), add P + a to L.
Algorithm
Generalized A∗
Label dominance
Label correcting
Test
(Low)
(Dom)
(Dom), (Low)
19 / 35
bv : lower bound on v-d
paths qP
Mv : list of non
dominated o-v paths
Key
c(qP ⊕ bv )
c(qP )
c(qP ⊕ bv )
Bound Computation
Definition: lattice
A partially ordered set (R, ) is a lattice if any pair (q, q̃) admits:
A greatest lower bound
or meet denoted q ∧ q̃
bq
⇔ b q ∧ q̃
b q̃
q ∨ q̃
q
q̃
q ∧ q̃
A least upper bound or
join denoted q ∨ q̃
bq
⇔ b q ∨ q̃
b q̃
Example:
(R2 , ≤) endowed ≤ with the product
order
I
I
q ∧ q̃ = (min(q1 , q̃1 ), min(q2 , q̃2 ))
q ∨ q̃ = (max(q1 , q̃1 ), max(q2 , q̃2 ))
20 / 35
Generalized Ford-Bellman algorithm
q(v,u0 )
bv
q(v,u1 )
q(v,u2 )
b0
topological order
b1
b2
If there is no cycles of negative cost, bv can be computed by the
generalized dynamic programming equation:
0
,if v = d
^
^
bv =
bv ,
q(v,u) ⊕ bu ,if v 6= d
+
u∈N (v)
21 / 35
Table of Content
1. The Unit Commitment Problem
1.1 Model
1.2 Column Generation
2. Resource Constraint Shortest Path Problem
3. Enumeration Algorithms
3.1 Enumeration algorithms
3.2 Bounds
4. Computational Results
5. Pareto Frontier - An Alternative Approach
22 / 35
Some Numbers
I
Plants
I
I
I
8 gas plants (3, 3, 2)
97 non-gas plants
Size of graph (depends on the model)
I
I
∼ 2.000 nodes
∼ 10.000 arcs
23 / 35
Solving Non-Gas Subproblem
solving time (ms)
117.1
100
56.3
50
52.1
3.6
0
selection
key
#iter
#dis dom
#dis bound
#od paths
speedup
EDF
V1
V2
V3
node
early date
2.100
190k
0
327
1.00x
node
early date
1.914
137k
79k
14
0.93x
path
qp ⊕ bv
path
qp
3.596
9k
9k
1
0.06x
230.763
201k
1.029k
899
2.08x
24 / 35
An Attempt to Explain
open paths
600
400
200
0
0
500
1,000 1,500
#iterations
25 / 35
2,000
Solving Gas Subproblem
Pricing
max
p∈P
cp + λi(p) + γp (µ0j(p) − µ1j(p) −
dual
0
-1
-5
-10
-50
V2 (ms)
0.15068
1.26815
5.45315
7.33129
1.05291
26 / 35
P
πj(p)k )
k
EDF (ms)
44.0543
43.0639
52.6267
40.8962
28.4392
Column Generation of Gas Plants
27 / 35
Table of Content
1. The Unit Commitment Problem
1.1 Model
1.2 Column Generation
2. Resource Constraint Shortest Path Problem
3. Enumeration Algorithms
3.1 Enumeration algorithms
3.2 Bounds
4. Computational Results
5. Pareto Frontier - An Alternative Approach
28 / 35
What was the Problem?
Assume we can generate all technically feasible production plans
Pi for each plant i ∈ V .
P
PP
maximize
cp xp −
βjk ξjk
j
p∈P
subject to
k
...
29 / 35
What was the Problem?
Assume we can generate all technically feasible production plans
Pi for each plant i ∈ V .
P
PP
maximize
cp xp −
βjk ξjk
j
p∈P
subject to
k
...
Try to compute all non-dominated paths based on profit and gas
consumption.
29 / 35
Pareto Frontier
gas
low
r
high
low
high
30 / 35
profit
Pareto Frontier
gas
low
r
high
low
high
30 / 35
profit
Pareto Frontier
gas
dominated by pareto
low
r
high
low
high
30 / 35
profit
Pareto Frontier
gas
dominated by pareto
low
update pareto
r
high
low
high
30 / 35
profit
Pareto Frontier
gas
dominated by pareto
low
update pareto
r
high
low
high
30 / 35
profit
Pareto Frontier
gas
dominated by pareto
low
update pareto
dominates pareto
r
high
low
high
30 / 35
profit
Pareto Frontier
gas
dominated by pareto
low
update pareto
dominates pareto
r
high
low
high
30 / 35
profit
How to Compute? RCSPP
Talking about failures!
Bound test before:
LB
discard if: c(qP ⊕ bv ) ≤ Cod
31 / 35
(Low)
How to Compute? RCSPP
Talking about failures!
Bound test before:
LB
discard if: c(qP ⊕ bv ) ≤ Cod
Bound test after:
for (profit, gas) in pareto:
if cprofit (qP ⊕ bv ) ≤ profit and cgas (qP ⊕ bv ) ≥ gas
discard
31 / 35
(Low)
How to Compute? RCSPP
Talking about failures!
Bound test before:
LB
discard if: c(qP ⊕ bv ) ≤ Cod
Bound test after:
for (profit, gas) in pareto:
if cprofit (qP ⊕ bv ) ≤ profit and cgas (qP ⊕ bv ) ≥ gas
discard
No solution after 8h...
31 / 35
(Low)
How to Compute? Linear Combination
Still talking about failures!
c : ((. . . , profit, . . . , gas, . . .)) 7→ α · profit + (1 − α) · gas
32 / 35
How to Compute? Linear Combination
Still talking about failures!
c : ((. . . , profit, . . . , gas, . . .)) 7→ α · profit + (1 − α) · gas
gas
2
·104
1
0
4
4.5
5
profit
5.5
·105
32 / 35
How to Compute? Linear Combination
Still talking about failures!
c : ((. . . , profit, . . . , gas, . . .)) 7→ α · profit + (1 − α) · gas
gas
2
·104
parteo front is non convex!
1
0
4
4.5
5
profit
5.5
·105
32 / 35
How to Compute? Upper Bound on Gas Consumpition
gasUpperBound ← INF
while gasUpperBound ≥ 0
I
solve RCSPP(gasUpperBound)
I
add solution (profit, gas) to pareto
I
gasUpperBound ← gas −
33 / 35
How to Compute? Upper Bound on Gas Consumpition
gas
2
·104
1
Solving time: ∼ 38s
Size pareto: ∼ 600
0
4
4.5
5
profit
5.5
·105
34 / 35
Summary
I
Redesign of the graph
I
Modeling of RCSPP in lattice ordered monoid
I
(Conditional) bound computation
I
Solving of non-/gas pricing problems
I
Column generation - Multi Unit Commitment Problem
I
Pareto Frontier
35 / 35
© Copyright 2026 Paperzz