You are on page 1of 50

Open-pit mining problem and the

BZ algorithm

Eduardo Moreno (Universidad Adolfo Ibañez)


Daniel Espinoza (Universidad de Chile)
Marcos Goycoolea (Universidad Adolfo Ibañez)
Gonzalo Muñoz (Ph.D. student Columbia Univ.)

Friday, July 6, 12
Outline

• The Open-Pit Mine Scheduling Problem

• BZ algorithm

• The General Algorithm Template

• Uncertainty in Open-pite mining

• BZ Algorithm & Stochastic Programming

Friday, July 6, 12
Open pit mining scheduling problem

Which block should be extracted, when should they be


extracted and how should they be processed

First integer programming model


due to Thys Johnson (’69)

Friday, July 6, 12
The problem

• Assumptions & Notation

• blocks B

• T periods

• Precedences G = (B, A)

• “By” decision variables xb,t

• Side constraints Dx  d
t
• Discount rate ĉb,t = ↵ cb

Friday, July 6, 12
The problem

Time-Consistency constraints:
xb,t xb,t+1

Precedence (wall-slope) constraints:


xa,t xb,t

Capacity (knapsack) constraints:


ab (xb,t xb,t 1) ⇥ Ct
b⇥B

Multi-period precedence constrained knapsack

Friday, July 6, 12
The problem

The “by” formulation

(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)

We count with several REAL instances of this problem.


Most of them can’t be solved using CPLEX 12.1
Intel(R) Xeon 2.33 GHz, 16 GB RAM.
Mine Blocks Prec. Periods CPX1Time
Tinkerbell 1060 3922 6 8.44
PeterPan 9400 145640 20 327359.74
Pinochio 14153 219778 12 95631.97
Mowgli 16292 74260 20 29785.6
Hansel 29277 1271207 15 MEM!
Ariel 53271 656411 20 MEM!
SnowWhite 57958 1186665 21 MEM!
GreEel 96821 1053105 30 MEM!
Simba 99014 96642 30 5700.51
CinderellaILimit 112687 3035483 15 MEM!
Dorothy 167937 5956121 51 MEM!
Rapunzel 304977 15665274 81 MEM!
Beauty 326428 1518326 80 MEM!
Aladdin 329859 7066518 60 MEM!
Alice 1101098 65185607 50 MEM!
BigBadWolf 1663499 92440037 30 MEM!
Cinderella 2140342 3035483 20 MEM!

Friday, July 6, 12
Ad-hoc LP Algorithms

• Critical Multiplier Algorithm


max cx
max(c a)x
st
st
Pi  xj 8(i, j) 2 A
x
xi  xj 8(i, j) 2 A
ai xi  b
xi 2 [0, 1] xi 2 [0, 1]
Explicit construction of optimal multipliers

• 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 .

If k > 1 and y k satisfies H k 1


x = 0 stop.

3. Define C k partition of B and impose the constraints H k x = 0 consistent


of xi = xj , 8i, j 2 Chk . Also the solution y k must satisfy the constraints
H k x = 0.
4. Solve P 2k , obtained by adding the constraints H k x = 0 to the problem
P , and call the solution xk with dual variables µk associated to the side-
constraints. If µk = µk 1 stop.
5. Set k k + 1 and go to step 2.

Friday, July 6, 12
BZ algorithm

The algorithm

L(P, µk 1
) Max-Closure

Get duals and penalize


Refine partitions
with that duals

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

BZ algorithm (+ a LOT of tricks)

Mine Blocks Prec. Periods CPX1Time BZ1Time


Tinkerbell 1060 3922 6 8.44 0.09
PeterPan 9400 145640 20 327359.74 11.51
Pinochio 14153 219778 12 95631.97 8.19
Mowgli 16292 74260 20 29785.6 2.17
Hansel 29277 1271207 15 MEM! 67.53
Ariel 53271 656411 20 MEM! 7.89
SnowWhite 57958 1186665 21 MEM! 221.36
GreEel 96821 1053105 30 MEM! 497.34
Simba 99014 96642 30 5700.51 58.18
CinderellaILimit 112687 3035483 15 MEM! 761.52
Dorothy 167937 5956121 51 MEM! 1369.07
Rapunzel 304977 15665274 81 MEM! 121675.2
Beauty 326428 1518326 80 MEM! 7500.09
Aladdin 329859 7066518 60 MEM! 16621.1
Alice 1101098 65185607 50 MEM! 7173.48
BigBadWolf 1663499 92440037 30 MEM! MEM!
Cinderella 2140342 3035483 20 MEM! 278.73

Friday, July 6, 12
General algorithm template

We consider the following problem

(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

max cx kµk1 1 (Dx d)


L(P, µ )
s.t Ax  b

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
)

Get duals and penalize


with that duals

P 2k

Friday, July 6, 12
General algorithm template

Clearly H x = h defines an affine subspace,


k k

but for simplicity let’s assume h = 0 so the


k

subspace is linear

Friday, July 6, 12
General algorithm template

This way we can rewrite the P 2 problem as k

!
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

We solve the same “pricing” problem in both

Friday, July 6, 12
Graphically

Maybe DW would need to generate...

before moving out of the upper lid

Friday, July 6, 12
Graphically

But BZ only needs...

to describe the entire upper lid

Friday, July 6, 12
Case Study

• Selective Mine, two metallurgical process


• Prices, Met. Recoveries, Mining, Process and Selling costs based on the usual
numbers of the industry;
• Asymmetrical contribution of value by process: 10% of the reserves (Process
A) give 45% of the cash flow of the project.
• Some comparison between both process (Process A / Process B):
• Process Cost 12:1

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)'

10000000" 10000000" restric.on_processed"


processed"
80000000" extracted"
80000000" restric.on_extracted"
60000000" restric3on_processed" 60000000" processed"
40000000" restric3on_extracted" 40000000" extracted"
20000000" 20000000"

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"

model" 4000" model"


100000"
fixed" 3000" fixed"

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

Multiple Multiple Extraction Multiple Extraction


Opt. Opt.
Blockmodels plans plan Blockmodels plan

• Most common in mining literature • PH on ore prices

• Dimitrakopoulos et al. • DP on grade uncertainty

• Risk minimization

• Robust programming

Friday, July 6, 12
Our approach for ore prices uncertainty
mean reversion process
of ore prices
(Ornstein–Uhlenbeck process)

pp 2 U = {pp |9u, u0 u  1, pp = p̄ + ⌃u}

A second-order conic constraint

(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

You might also like