Professional Documents
Culture Documents
BZ algorithm
Friday, July 6, 12
Outline
• BZ algorithm
Friday, July 6, 12
Open pit mining scheduling problem
Friday, July 6, 12
The problem
• blocks B
• T periods
• Precedences G = (B, A)
• Side constraints Dx d
t
• Discount rate ĉb,t = ↵ cb
Friday, July 6, 12
The problem
Time-Consistency constraints:
xb,t xb,t+1
Friday, July 6, 12
The problem
(P CP by ) max cx
xb,t xb,t+1 , 8t<T 1
xa,t xb,t , 8(a, b) 2 A, 8t
Dx d
xb,t 2 [0, 1]
Friday, July 6, 12
Computational results (LP Relaxation)
Friday, July 6, 12
Ad-hoc LP Algorithms
• BZ Algorithm
Friday, July 6, 12
The BZ algorithm
1
1. Start with µ = 0, C10 = B, C 0 = {C10 } and k = 0.
2. Let y k be the solution of L(P, µk 1 ), problem where the side-constraints
are penalized with multipliers µk 1 .
Friday, July 6, 12
BZ algorithm
The algorithm
L(P, µk 1
) Max-Closure
P 2k “Small” Problem
Friday, July 6, 12
BZ algorithm
Graphically
Define P 2 ~0)
Solve L(P,0
and solve it
0
get duals µ (side constraints)
Friday, July 6, 12
BZ algorithm
Refine
Solve L(P, 0
the µ )
partition
Friday, July 6, 12
BZ algorithm
Define
Refine P
the and solve it
2 partition
1
1
get duals µ (side constraints)
Friday, July 6, 12
BZ algorithm
And on...
Friday, July 6, 12
BZ algorithm
Friday, July 6, 12
General algorithm template
(P ) max cx
s.t Ax b “Easy”
Dx d “Hard”
Friday, July 6, 12
General algorithm template
0
Feasible solution z
k=1 µ 0
= ~0
L(P, µk 1
)
Friday, July 6, 12
General algorithm template
0
Feasible solution z
k=1 µ 0
= ~0
Friday, July 6, 12
General algorithm template
0
Feasible solution z
k=1 µ 0
= ~0
L(P, µ k 1
) wk
Friday, July 6, 12
General algorithm template
0
Feasible solution z
k=1 µ 0
= ~0
L(P, µk 1
)
(P 2k ) max cx
s.t Ax b
P 2kDx d
H k x = hk
Friday, July 6, 12
General algorithm template
0
Feasible solution z
k=1 µ 0
= ~0
L(P, µk 1
)
P 2k
Friday, July 6, 12
General algorithm template
subspace is linear
Friday, July 6, 12
General algorithm template
!
X
k i
(P 2 ) max c i x
i
!
X
i
s.t A i x b
i
!
X
i
D i x d
i
where x i
i is a generator of {x | H k
x = 0}
Friday, July 6, 12
Differences?
BZ Dantzig-Wolfe
In the master problem we move in an In the master problem we move in the
affine subspace that contains the convex hull of the generated extreme
generated point points
We have the freedom of choosing the We add one column (extreme point) at
affine subspace a time
Friday, July 6, 12
Graphically
Friday, July 6, 12
Graphically
Friday, July 6, 12
Case Study
Friday, July 6, 12
Inventory Reserves – Total Tonnes
Friday, July 6, 12
Inventory Reserves – Metal
Friday, July 6, 12
Inventory Reserves – Cash Flow
Friday, July 6, 12
Mine Schedule - Tonnage
Friday, July 6, 12
Mill Feed - Tonnage
Friday, July 6, 12
Mine Schedule – Cumulated Metal Production
Friday, July 6, 12
Mine Schedule – Cash Flow
Friday, July 6, 12
Ultimate Pit
Whittle Pit
Opt Pit
Friday, July 6, 12
Mining Sequence
Opt Pits
Whittle Nested
Pits
Friday, July 6, 12
An important extension
⇢
1 block b is extracted in time 1..t and destination 1..d
xb,d,t =
0 otherwise
Friday, July 6, 12
Marvin
Extracted/processed,weigth, Extracted/processed'weigth'
Fixed, Model'
50000000" 50000000"
45000000" 45000000"
40000000" 40000000"
35000000" 35000000"
Weight'(tons)'
Weigth(tons),
30000000" 30000000"
processed" restric0on_processed"
25000000" 25000000"
20000000" extracted" 20000000" restric0on_extracted"
15000000" restric5on_processed" 15000000" processed"
10000000" restric5on_extracted" 10000000" extracted"
5000000" 5000000"
0" 0"
0" 2" 4" 6" 8" 10" 12" 14" 16" 0" 2" 4" 6" 8" 10" 12" 14" 16"
Period, Period'
Grade&CU& Grade&AU&
0.7" 0.8"
0.6" 0.7"
0.6"
0.5"
0.5"
0.4"
Grade&
Grade&
0.4"
0.3" model" model"
0.3"
0.2" fixed" fixed"
0.2"
0.1" 0.1"
0" 0"
0" 2" 4" 6" 8" 10" 12" 14" 16" 0" 2" 4" 6" 8" 10" 12" 14" 16"
Period& Period&
Friday, July 6, 12
Delphos
Titre,Extracted/Processed,weight, Extracted/Processed'weight'
Fixed, Model'
35000000" 70000000"
30000000" 60000000"
25000000" 50000000"
Weight'(TONN)'
Weight(TONN),
20000000" 40000000"
processed" processed"
15000000" 30000000"
extracted" extracted"
10000000" 20000000"
5000000" 10000000"
0" 0"
0" 5" 10" 15" 20" 25" 30" 35" 40" 45" 0" 5" 10" 15" 20" 25" 30" 35" 40" 45"
Period, Period'
Average&grades&in&processed&blocks& Average&grades&in&processed&blocks&&
Fixed& Model&
1.6" 1.8"
1.4" 1.6"
1.2" 1.4"
1.2"
average&grade&
average&grade&
1"
1"
0.8" Cu" Cu"
0.8"
0.6" Au" Au"
0.6"
0.4" As" 0.4" As"
0.2" 0.2"
0" 0"
0" 5" 10" 15" 20" 25" 30" 35" 40" 45" 0" 5" 10" 15" 20" 25" 30" 35" 40" 45"
Period& Period&
Friday, July 6, 12
NCL
Extracted/processed'weight' Extracted/Processed'weight'
Fixed' Model'
16000000" 16000000"
14000000" 14000000"
12000000" 12000000"
Weight'(TONN)'
Weight'(TONN)'
0" 0"
0" 2" 4" 6" 8" 10" 0" 2" 4" 6" 8" 10"
Period' Period'
Quan1ty'Su'in'processed'blocks' Mill$hours$for$processed$blocks$
250000" 9000"
8000"
200000" 7000"
6000"
Period'(TONN)'
Mill$(hours)$
150000"
restric2on_Su" 5000" restric2on_mill"
50000" 2000"
1000"
0" 0"
0" 1" 2" 3" 4" 5" 6" 7" 8" 9" 10" 0" 1" 2" 3" 4" 5" 6" 7" 8" 9" 10"
Period' Period$
Friday, July 6, 12
Uncertainty in Open-pit Mine Planning
• Grade Uncertainty
• Ore Prices
( (
1 if b is extracted p 1 if b is processed p
xb =
e xb = xb e
xb 8b
0 if not 0 if not
Objective Function:
⇧⇢ (xe , xp ) = (pp · ⇢ cp )xp ce xe
(⇢b := grade of ore in block b)
Friday, July 6, 12
Scenario approaches
• Risk minimization
• Robust programming
Friday, July 6, 12
Our approach for ore prices uncertainty
mean reversion process
of ore prices
(Ornstein–Uhlenbeck process)
(P ) max cx
s.t Ax b “Easy”
Dx d “Hard”
Friday, July 6, 12
Other uses of BZ Algorithm
• Value-at-Risk
VaR" ( ĉx) = min{t : F ĉx (t) 1 "}
t
• Conditional Value-at-Risk (expected shortfall)
CVaR" ( ĉx) = E( ĉx| ĉx VaR" ( ĉx))
1
= min t + E(( ĉx t)+ )
t "
Convex function!
Friday, July 6, 12
CVaR formulation
probability of scenario i
N
X
1
min t + pi ⌘ i
min CVaR" ( ĉx) " i=1
s.t. Ax = b SAA s.t. Ax = b
x 0 ⌘i ci x t 8i
x, ⌘ 0
scenario i
1
CVaR" ( ĉx) = min t + E(( ĉx t)+ )
t "
Friday, July 6, 12
Our idea
N
1X Easy to solve!
x̃ : Ax̃ = b min t + pi ⌘ i
" i=1
Upper bound
s.t. ci x̃ + t + ⌘i 0 8i
1X
N ⌘ 0
min t + pi ⌘ i
" i=1
s.t. Ax = b x̃ {P j }
c i x + t + ⌘i 0 8i
k
x, ⌘ 0 1X Smaller problem!
min t + p̂j ⌘ˆj
" j=1
N = {P j }kj=1
Lower bound s.t. Ax = b
X 1 X c̄j x + t + ⌘ˆj 0 8j 2 {1, . . . , k}
j
p̂j = pi c̄ = pi c i
i2P j p̂j j
x, ⌘ˆ 0
i2P
Friday, July 6, 12
Dual problems
N
1X
max pi i ci x̃
x̃ : Ax̃ = b " i=1
Upper Lower bound N
X
s.t. pi i ="
i=1
max y t b 0 i 1 8i ⇤
(i) = 1 i i⇤
N
t 1X ⇤
=
s.t. y A + pi i c i 0 (i+1)
" i=1 ⇤
= 0 i > i⇤ + 1
N
X
x̃ (i)
pi i =" max y t b
i=1 k
t 1X ˆ j
0 i 1 8i s.t. y A + p̂j j c̄ 0
" j=1
N = {P j }kj=1 k
X
Lower Upper bound p̂j ˆ j = "
j=1
Additional constraints: 0 ˆj 1 8j 2 {1 . . . K}
0 j
i = i0 8i, i 2 P
Friday, July 6, 12
Computational results for large N
Table 1 Results for Netlib instances for 105 , 106 and 107 scenarios (average
values for " = 1%, 10%, 50% and 75%.
N = 100, 000 N = 1, 000, 000 N = 10, 000, 000
Name time Iter. |N | time Iter. |N | time Iter. |N |
adlittle 85 17.3 5232.8 2080 19.8 32763.5 56684 22.3 218034.0
afiro 2 2.0 2.0 22 2.0 2.0 210 2.0 2.0
agg 45 13.8 924.8 568 15.8 4272.3 6270 17.5 19766.3
bandm 57 14.8 1353.8 720 17.0 7072.8 7854 18.8 29525.3
beaconfd 21 7.8 44.5 260 8.8 79.3 2462 8.5 91.0
boeing2 54 15.0 1579.5 653 16.8 8781.8 7318 18.3 37770.0
bore3d 5 2.0 2.0 54 2.3 2.5 488 2.3 2.5
brandy 2 2.5 3.0 23 2.5 3.0 225 2.5 3.0
capri 31 14.8 2517.0 399 16.3 6927.0 4674 17.8 15675.3
e226 76 16.5 3576.3 1013 18.8 23025.3 13197 21.5 149284.5
etamacro 10 4.8 12.0 135 5.5 20.5 1040 4.8 15.5
↵↵f800 14 10.5 118.5 158 10.8 252.8 1499 10.3 354.0
ganges 37 12.8 815.0 471 14.8 4581.5 5380 17.3 30458.5
grow15 8 4.8 87.3 99 5.3 412.0 831 5.5 1740.5
grow22 21 9.5 135.8 218 9.5 493.8 1999 9.5 2329.3
grow7 16 9.5 146.5 164 9.3 199.5 1283 8.3 284.8
israel 38 13.8 544.5 440 14.5 2331.0 4745 16.3 9594.3
kb2 3 3.3 5.0 47 4.3 9.0 435 4.5 12.5
lotfi 0 0.0 0.0 50 5.0 14.8 535 5.5 17.8
perold 3 2.5 3.0 30 2.8 3.5 268 2.8 4.0
Friday, July 6, 12
pilot.ja 4 2.8 3.5 32 2.8 3.5 300 2.8 3.5
grow7 16 9.5 146.5 164 9.3 199.5 1283 8.3 284.8
israel 38 13.8 544.5 440 14.5 2331.0 4745 16.3 9594.3
kb2 3 3.3 5.0 47 4.3 9.0 435 4.5 12.5
lotfi 0 0.0 0.0 50 5.0 14.8 535 5.5 17.8
perold 3 2.5 3.0 30 2.8 3.5 268 2.8 4.0
pilot.ja 4 2.8 3.5 32 2.8 3.5 300 2.8 3.5
pilot 45 14.3 1488.5 467 16.5 8316.5 5257 18.5 47483.0
pilot4 3 3.8 6.0 37 3.5 5.5 342 3.5 5.8
pilotnov 47 13.3 2589.8 539 14.8 12104.3 5199 16.3 19192.8
recipe 5 2.0 2.0 50 2.0 2.0 454 2.0 2.0
sc105 1 2.0 2.0 13 2.0 2.0 130 2.0 2.0
sc205 1 2.0 2.0 13 2.0 2.0 130 2.0 2.0
sc50a 1 2.0 2.0 14 2.0 2.0 130 2.0 2.0
sc50b 1 2.0 2.0 13 2.0 2.0 129 2.0 2.0
scagr7 20 6.8 29.8 231 7.5 78.8 2225 7.8 276.0
scfxm1 5 3.0 4.0 52 3.0 4.0 466 3.0 4.0
scfxm2 6 3.0 4.0 63 3.0 4.0 557 3.0 4.0
scfxm3 8 3.5 6.3 81 3.5 7.0 700 3.3 5.0
share1b 16 8.3 21.8 189 8.5 27.3 1167 5.8 22.0
share2b 16 9.0 36.3 194 9.8 67.8 1073 5.8 28.8
stair 1 2.0 2.0 14 2.0 2.0 129 2.0 2.0
standata 3 3.0 4.0 38 3.0 4.0 255 2.5 3.0
standgub 3 3.0 4.0 38 3.0 4.0 257 2.5 3.0
standmps 2 2.0 2.0 23 2.0 2.0 209 2.0 2.0
stocfor1 19 10.5 78.3 206 10.8 178.0 1305 7.5 139.5
tu↵ 2 2.0 2.0 19 2.0 2.0 172 2.0 2.0
vtp.base 3 3.0 4.0 36 3.0 4.3 213 2.3 2.5
woodw 5 4.5 12.0 49 4.3 12.3 287 3.0 4.5
Friday, July 6, 12
Thanks...
Friday, July 6, 12