MineLink is a library of data structures for mine planning, mining scheduling problems and algorithms to solve them. The goal of MineLink is to help development in the area of algorithmics for mine planning by providing a set of tools and well stated problems to work on.

The focus of the library is, first of all, ease of use, with secondary goals being: flexibility, expandability, and computional power.


MineLink is developed in C++, but also a Python wrapper is available so it is possible to interact with the library and easily set experiments or expand it.

MineLink has been developed using funding from the Advanced Mining Technology Center, and it is on continuous development.

Data Structures

MineLink provides a number of simple data structures and tools to work with them. The most important data structure is BlockModel, which allows to store (in memory, a text file or a sqlite database) a set of blocks with an arbitrary number of numeric attributes. Other very important data structure is Precedence, to model slope angles or other design constraints.

Scheduling Problems or Models

In terms of scheduling problems, MineLink currently provides two examples:

  • FinalPitInstance: Which abstracts the problem of determining the final or ultimate pit.
  • SchedulingInstance: Which abstracts a very general formulation of open-pit block scheduling with multi-destinations and arbitrary number of precedence, capacity and blending constraints, among others.


The Blending Optimization Sequencing and Scheduling is a set of algorithms designed to solve a SchedulingInstance. BOS2 runs on top of MineLink and provides the tools to compute optimal schedules at the block level. BOS2 uses Binary Linear Programming to express and solve the block scheduling problem.

Some of the considerations in the problems that can be addressed with BOS2 are:

  • The blending attribute of material sent to specific processes is within specified range. Examples of this are: grade ranges, pollutants, etc.
  • All capacity limits of each component of the mining system are satisfied. Examples of this are: crusher usage hours, transportation capacity, loading capacity at given phase-benches, etc.
  • Slope angles.
  • Accessibility constraints (extraction from existing ramps).

BOS2 also takes into account pre-existing stocks as an alternative source of mineral.

The result of a BOS2 run is a schedule of blocks for extraction and destination choice so that a user-specified criteria (like NPV or total ore production) is maximized or minimized. The following image shows a schedule generated by BOS2:



The library provides several algorithms or tools to wotk with the data structures. For example, BlockModel is a very rich class that allows the creation or removal of new columns of data, reading from and writing to text files, computing basic statistics, create submodels, etc.

Other tools available are:

  • Easy and quick computation of precedence constraints, including slope constraints provided in terms of a rosetta.
  • General aggregation of blocks into larger structures.
  • Visualization, of block models and surfaces.

Further Applications

MineLink's flexibility has allowed to find other applications to mining problems. In particular, a optimal footprint calculation has been implemented for Block/Panel Caving mines, along with their economic envelope. The following image shows a footprint value for a Block/Panel Caving mine:


An image of the reserves of a Block/Panel Caving mine, calculated using MineLink, can be seen below: