p17 | Open-Pit Mine Production Scheduling

See also

This problem is sourced from Ferchtandiker2025 [1].

Note

  • The efficient formulation p17.a is a linear relaxation of the inefficient formulation p17.b. Hence, it is not a valid reformulation of p17.b by our constructive definition. We include it in the FormulationBench dataset as a negative reformulation example.

  • The efficient formulation from the source defines \(I_0 = \{i : g_i < 1\}\) and \(I_1 = \{i : g_i = 1\}\). It is implied that \(I_0\) and \(I_1\) partition the set of blocks \(I\), hence the grade \(g_i \in [0,1]\). However, the source data generator draws grades from \([0.5, 3.0]\). We take the model as authoritative and modify the data generator accordingly.

  • Both formulations assume \(n \geq 1\), \(t \geq 1\), \(c_i^\tau \geq 0\) for every block \(i\) and period \(\tau\), and \(g_i, O_i, W_i \geq 0\) for every block \(i\).

NP-hard: yes

Description

Optimizing Long-Term Open-Pit Mine Production Scheduling

Open-pit mining operations require strategic long-term production schedules to maximize profitability while adhering to physical, operational, and economic constraints. A key challenge is determining when to mine each block of material (ore or waste) to maximize the Net Present Value (NPV) of the project, considering factors like ore grades, processing capacities, mining precedences, and time-discounted cash flows.

Core Challenge The mine is divided into thousands of blocks, each with specific attributes:

Ore/waste tonnage: Ore blocks contain valuable minerals (e.g., gold, copper), while waste blocks must be removed to access ore.

Grade: The concentration of valuable minerals in ore blocks.

Economic value: Calculated as revenue from mineral sales minus mining/processing costs, discounted over time. Roughly 20% of blocks are completely made up of ore. The remaining blocks contain a fraction of ore. When not accounting for discounting, the value of a block is propostional to the percentage of ore contained in it.

The goal is to sequence block extraction over multiple periods (years) to:

Maximize NPV: Prioritize high-value blocks for early extraction to account for the time value of money.

Meet processing demands: Ensure ore production stays within mill capacity limits each period.

Respect slope stability: Blocks cannot be mined until overlying layers are removed to prevent pit collapses.

Blend ore grades: Maintain average ore grades within acceptable bounds to optimize processing efficiency.

Formulations

Formulation a (valid)

See also

This formulation is sourced from Ferchtandiker2025 [1] (formulation id: efficient).

Parameters

Name

Description

Type

Shape

n

Number of blocks

integer

scalar

t

Number of scheduling periods

integer

scalar

c

Net Present Value (NPV) of mining block \(i\) in period \(\tau\)

continuous

[n, t]

g

Ore grade of each block

continuous

[n]

O

Ore tonnage of each block

continuous

[n]

W

Waste tonnage of each block

continuous

[n]

G_min

Minimum allowed average ore grade in any period

continuous

scalar

G_max

Maximum allowed average ore grade in any period

continuous

scalar

PC_min

Minimum per-period ore processing capacity

continuous

scalar

PC_max

Maximum per-period ore processing capacity

continuous

scalar

MC_min

Minimum per-period total mining capacity (ore + waste)

continuous

scalar

MC_max

Maximum per-period total mining capacity (ore + waste)

continuous

scalar

P

Precedence matrix: \(P_{ij} = 1\) if block \(i\) must be mined before block \(j\)

binary

[n, n]

Definitions

Name

Description

Formulation

I0

Set of block indices with grade strictly less than 1 (mixed/low-grade blocks that remain binary)

\(I_0 = \{ i \in I : g_i < 1 \}\)

I1

Set of block indices with grade equal to 1 (pure-ore blocks relaxed to continuous \([0,1]\))

\(I_1 = \{ i \in I : g_i = 1 \}\)

Variables

Name

Description

Type

Shape / Indices

x

Extraction variable: binary for mixed/low-grade blocks (\(I_0\)), continuous fraction in \([0,1]\) for pure-ore blocks (\(I_1\))

continuous

[n, t]

Assumptions

Description

Formulation

Implicit

Number of blocks is positive.

\(n \geq 1\)

yes

Number of scheduling periods is positive.

\(t \geq 1\)

yes

NPV of each block in each period is non-negative.

\(c_i^\tau \geq 0 \quad \forall i \in I,\; \tau \in T\)

yes

Ore grade of each block is non-negative.

\(g_i \geq 0 \quad \forall i \in I\)

yes

Ore grade of each block is at most one (pure-ore blocks have grade equal to \(1\)).

\(g_i \leq 1 \quad \forall i \in I\)

yes

Ore tonnage of each block is non-negative.

\(O_i \geq 0 \quad \forall i \in I\)

yes

Waste tonnage of each block is non-negative.

\(W_i \geq 0 \quad \forall i \in I\)

yes

Constraints

  • Binary integrality for mixed/low-grade blocks.

    \[ x_i^\tau \in \{0,1\} \quad \forall i \in I_0,\; \forall \tau \in T \]
  • Upper grade blending constraint: weighted average ore grade does not exceed \(G_{\max}\) in each period.

    \[ \sum_{i \in I} (g_i - G_{\max}) O_i x_i^\tau \leq 0 \quad \forall \tau \in T \]
  • Lower grade blending constraint: weighted average ore grade is at least \(G_{\min}\) in each period.

    \[ \sum_{i \in I} (g_i - G_{\min}) O_i x_i^\tau \geq 0 \quad \forall \tau \in T \]
  • Each block is mined at most once over the entire planning horizon.

    \[ \sum_{\tau \in T} x_i^\tau \leq 1 \quad \forall i \in I \]
  • Ore processing capacity upper bound per period.

    \[ \sum_{i \in I} O_i x_i^\tau \leq PC_{\max} \quad \forall \tau \in T \]
  • Ore processing capacity lower bound per period.

    \[ \sum_{i \in I} O_i x_i^\tau \geq PC_{\min} \quad \forall \tau \in T \]
  • Total mining capacity (ore + waste) upper bound per period.

    \[ \sum_{i \in I} (O_i + W_i) x_i^\tau \leq MC_{\max} \quad \forall \tau \in T \]
  • Total mining capacity (ore + waste) lower bound per period.

    \[ \sum_{i \in I} (O_i + W_i) x_i^\tau \geq MC_{\min} \quad \forall \tau \in T \]
  • Precedence constraint: block \(j\) may be mined in period \(\tau\) only after all required predecessors \(i\) (\(P_{ij} = 1\)) have been fully mined by period \(\tau\).

    \[ \sum_{\tau'=1}^{\tau} x_i^{\tau'} \geq x_j^\tau \quad \forall \tau \in T,\; \forall i,j \in I \text{ with } P_{ij}=1 \]
  • Extraction fractions for pure-ore blocks are non-negative.

    \[ x_i^\tau \ge 0 \quad \forall i \in I_1,\; \forall \tau \in T \]
  • Extraction fractions for pure-ore blocks are at most one.

    \[ x_i^\tau \le 1 \quad \forall i \in I_1,\; \forall \tau \in T \]

Objective

Maximize total discounted Net Present Value (NPV) across all blocks and periods.

\[ \max \sum_{\tau \in T} \sum_{i \in I} c_i^\tau x_i^\tau \]

Formulation b (invalid)

See also

This formulation is sourced from Ferchtandiker2025 [1] (formulation id: inefficient).

Parameters

Name

Description

Type

Shape

n

Number of blocks

integer

scalar

t

Number of scheduling periods

integer

scalar

c

Net Present Value (NPV) of mining block \(i\) in period \(\tau\)

continuous

[n, t]

g

Ore grade of each block

continuous

[n]

O

Ore tonnage of each block

continuous

[n]

W

Waste tonnage of each block

continuous

[n]

G_min

Minimum allowed average ore grade in any period

continuous

scalar

G_max

Maximum allowed average ore grade in any period

continuous

scalar

PC_min

Minimum per-period ore processing capacity

continuous

scalar

PC_max

Maximum per-period ore processing capacity

continuous

scalar

MC_min

Minimum per-period total mining capacity (ore + waste)

continuous

scalar

MC_max

Maximum per-period total mining capacity (ore + waste)

continuous

scalar

P

Precedence matrix: \(P_{ij} = 1\) if block \(i\) must be mined before block \(j\)

binary

[n, n]

Variables

Name

Description

Type

Shape / Indices

x

Binary indicator: \(1\) if block \(i\) is mined in period \(\tau\), \(0\) otherwise

binary

[n, t]

Assumptions

Description

Formulation

Implicit

Number of blocks is positive.

\(n \geq 1\)

yes

Number of scheduling periods is positive.

\(t \geq 1\)

yes

NPV of each block in each period is non-negative.

\(c_i^\tau \geq 0 \quad \forall i \in I,\; \tau \in T\)

yes

Ore grade of each block is non-negative.

\(g_i \geq 0 \quad \forall i \in I\)

yes

Ore tonnage of each block is non-negative.

\(O_i \geq 0 \quad \forall i \in I\)

yes

Waste tonnage of each block is non-negative.

\(W_i \geq 0 \quad \forall i \in I\)

yes

Minimum grade bound does not exceed maximum grade bound.

\(G_{\min} \leq G_{\max}\)

yes

Minimum processing capacity does not exceed maximum processing capacity.

\(PC_{\min} \leq PC_{\max}\)

yes

Minimum mining capacity does not exceed maximum mining capacity.

\(MC_{\min} \leq MC_{\max}\)

yes

Constraints

  • Upper grade blending constraint: weighted average ore grade does not exceed \(G_{\max}\) in each period.

    \[ \sum_{i \in I} (g_i - G_{\max}) O_i x_i^\tau \leq 0 \quad \forall \tau \in T \]
  • Lower grade blending constraint: weighted average ore grade is at least \(G_{\min}\) in each period.

    \[ \sum_{i \in I} (g_i - G_{\min}) O_i x_i^\tau \geq 0 \quad \forall \tau \in T \]
  • Each block is mined at most once over the entire planning horizon.

    \[ \sum_{\tau \in T} x_i^\tau \leq 1 \quad \forall i \in I \]
  • Ore processing capacity upper bound per period.

    \[ \sum_{i \in I} O_i x_i^\tau \leq PC_{\max} \quad \forall \tau \in T \]
  • Ore processing capacity lower bound per period.

    \[ \sum_{i \in I} O_i x_i^\tau \geq PC_{\min} \quad \forall \tau \in T \]
  • Total mining capacity (ore + waste) upper bound per period.

    \[ \sum_{i \in I} (O_i + W_i) x_i^\tau \leq MC_{\max} \quad \forall \tau \in T \]
  • Total mining capacity (ore + waste) lower bound per period.

    \[ \sum_{i \in I} (O_i + W_i) x_i^\tau \geq MC_{\min} \quad \forall \tau \in T \]
  • Precedence constraint: block \(j\) may be mined in period \(\tau\) only after all required predecessors \(i\) (\(P_{ij} = 1\)) have been mined by period \(\tau\).

    \[ \sum_{\tau'=1}^{\tau} x_i^{\tau'} \geq x_j^\tau \quad \forall \tau \in T,\; \forall i,j \in I \text{ with } P_{ij}=1 \]

Objective

Maximize total discounted Net Present Value (NPV) across all blocks and periods.

\[ \max \sum_{\tau \in T} \sum_{i \in I} c_i^\tau x_i^\tau \]

Reformulations

Each entry below pairs two formulations of this problem, records whether the second is a reformulation of the first, and gives the parameter map carrying the first formulation’s parameters to the second’s.

ab (invalid)

Note

  • Formulation b has the same parameters as formulation a; the map is the identity.

Parameter map

Name

Definition in terms of a

n

\(n = n\)

t

\(t = t\)

c

\(c_{ij} = c_{ij}\)

g

\(g_{i} = g_{i}\)

O

\(O_{i} = O_{i}\)

W

\(W_{i} = W_{i}\)

G_min

\(G_\min = G_\min\)

G_max

\(G_\max = G_\max\)

PC_min

\(PC_\min = PC_\min\)

PC_max

\(PC_\max = PC_\max\)

MC_min

\(MC_\min = MC_\min\)

MC_max

\(MC_\max = MC_\max\)

P

\(P_{ij} = P_{ij}\)