Академический Документы
Профессиональный Документы
Культура Документы
Constraints
Jos Gonzales B.
SME Professional Member #4160608
1. - Abstract
An optimal treatment schedule for a Life of Mine plan is developed that honors crusher
capacity constraints and ore quality constraints, by blending ore from several stockpiles
and also allowing direct feed from the pit. In addition, a non-linear equation is applied to
model sulfur grade decay in the stockpiled ore.
2. - Introduction
A treatment schedule defines what is going to be treated, specifying tonnages and
grades from each ore stockpile and direct feed from the pit. Conversely, a mining
schedule, details tonnages and grades mined from the pit and their destinations.
Although there is available commercial software that optimizes mining and treatment
schedules for complex projects in a single process, an alternative approach to manage
them independently was required in order to apply different objectives to each schedule,
to evaluate the reclaiming policy from the stockpiles, and to keep track of the ore grade
remaining in each stockpile to apply a grade decay curve.
3. - Mathematical model
Maximize the recoverable gold in the ore sent to crusher, subject to:
Average sulfur grade must be a constant value for all periods,
Maximum crusher capacity by period,
Reclaimed ore from stockpiles must not exceed existing inventory
Direct feed must not exceed the amount mined each period
Recoverable gold is determined as the sum of recoverable gold obtained by direct feed
and recoverable gold obtained from stockpiles:
Sum(AuRi * xi) + Sum(AuRj * yj)
Where AuRi is the recoverable gold grade of the i-th ore type
xi is the tonnage mined of the i-th ore type
AuRj is the recoverable gold grade from the j-th stockpile
Update tonnage on each stockpile, by adding the new tonnage mined, minus the
reclaimed ore during the period, minus the direct feed tonnage
Update recoverable gold grade on each stockpile, by adding the gold mined,
minus the reclaimed gold, minus the direct feed gold
Update sulfur grade, by adding the sulfur mined, minus the reclaimed sulfur,
minus the direct feed sulfur
Apply the sulfur grade decay, formulated as:
S(new) = S(old) * f
Where S is the sulfur grade and f is a factor less than 1 estimated by empirical
tests
Note that at the end of k periods, sulfur grade will be affected by a factor of f ^ k.
4. Case study
A treatment schedule was produced from a mine schedule consisting of two pits divided
in 9 phases, with 18 ore types defined as follow:
Au, g/t
S,%
0 - 5.0
5.0 - 7.5
>7.5
< 3.0
3.0 4.0
4.0 5.0
5.0 6.0
6.0 8.0
> 8.0
21
22
23
31
32
33
41
42
43
51
52
53
61
62
63
81
82
83
Sulfur decay factor is 0.9882 per year, and is applied after the first year.
Crusher capacity is given by:
Period 1 to 17
Period 18 to 70
Sulfur grade required to the plant is 6.79%. Total number of periods in the treatment
schedule is 70, the first 41 periods represent months and the rest are years.
Blending algorithm was run on a 2.8 GHz processor and 4.0 Gb RAM, using Microsoft
Excel VBA and Solver libraries, and it took 2.8 min to solve the entire life of mine plan.
Table 1 contains the tonnage and grades by ore type from the mine schedule and
Tables 2 and 3 show direct feed and stockpile reclaimed tonnes and grades after
optimal blending, respectively.
For this case study, mining period number 13 is treatment period number 1, which
means there are twelve months of stockpiling before the plant is commissioned.
Table 4 shows the inventory at each stockpile by period, for the first 8 periods.
Stockpile Units
21
Au
S
22
Au
S
.
Period
13
Period
14
Period
15
Period
16
Period
17
Period
18
Tonnes
g/t
%
Tonnes
g/t
%
Period
19
Period
20
Stockpile Units
21
22
Au 21
Au 22
S 21
S 22
Period
1
Period
2
Period
3
Period
4
Period
5
Period
6
Period
7
Period
8
tonnes
tonnes
g/t
g/t
%
%
Au 21
Au 22
S 21
S 22
Period
1
Period
2
Period
3
Period
4
Period
5
Period
6
Period
7
Period
8
tonnes
tonnes
g/t
g/t
%
%
Au 21
Au 22
S 21
S 22
Period
1
Period
2
Period
3
Period
4
Period
5
Period
6
Period
7
Period
8
5. - Conclusions
With this algorithm, a blending plan for k periods and m ore stockpiles can be performed
with the certainty of finding optimum solutions for each period. Using successive linear
6. Source code
Sub cummulative_stocks()
'Blending algorithm
'==================
'Inputs: Mined tonnages and grades accumulated by period by stockpile
'
Crushing rate by period
'
Target value for the grade to blend by period
'Output: Tonnages and grades by period by stockpile sent directly to process
'
Tonnages and grades by period reclaimed from each stockpile
'Technical notes:
'--------------'
- Total number of periods is adjusted in this code (future improvement)
'
- Maximum number of stockpiles is 12 (future improvement)
'
- Only 2 grades are managed: one is maximized and the other is controlled
'
- Row or column insertions in the main worksheet will cause code to fail
'Not tested with a different maximum number of periods or stockpiles
'
'(c) 2012 Jose Gonzales Borja
jose.gonzales.borja@gmail.com
'===========================================================================
Dim
Dim
Dim
Dim
Dim
Dim
Dim
i As Integer
'main period counter
j As Integer
tval As Single
rval As Single
scont As Single
'sulfur content of current period analyzed
ccap As Long
'maximum crusher capacity of current period analyzed
tstart As Date, tstop As Date
'Main loop
'=========
tstart = Time()
For i = 1 To 56
'1.- Solver Library is run in active worksheet
SolverReset
SolverOptions Iterations:=1000, Precision:=0.01, AssumeLinear:=True, AssumeNonNeg:=True
'1.1 set objective function
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
SolverAdd
CellRef:=Cells(14,
CellRef:=Cells(15,
CellRef:=Cells(16,
CellRef:=Cells(17,
CellRef:=Cells(18,
CellRef:=Cells(19,
CellRef:=Cells(20,
CellRef:=Cells(21,
CellRef:=Cells(22,
CellRef:=Cells(23,
CellRef:=Cells(24,
CellRef:=Cells(25,
3
3
3
3
3
3
3
3
3
3
3
3
+
+
+
+
+
+
+
+
+
+
+
+
i),
i),
i),
i),
i),
i),
i),
i),
i),
i),
i),
i),
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
Relation:=1,
FormulaText:=Cells(126,
FormulaText:=Cells(127,
FormulaText:=Cells(128,
FormulaText:=Cells(129,
FormulaText:=Cells(130,
FormulaText:=Cells(131,
FormulaText:=Cells(132,
FormulaText:=Cells(133,
FormulaText:=Cells(134,
FormulaText:=Cells(135,
FormulaText:=Cells(136,
FormulaText:=Cells(137,
2
2
2
2
2
2
2
2
2
2
2
2
+
+
+
+
+
+
+
+
+
+
+
+
i)
i)
i)
i)
i)
i)
i)
i)
i)
i)
i)
i)