1,099
Views
1
CrossRef citations to date
0
Altmetric
Research Article

An adaptive large neighborhood search heuristic to optimize mineral value chains under metal and material type uncertainty

ORCID Icon & ORCID Icon
Pages 1-25 | Received 03 Jul 2020, Accepted 06 Jun 2021, Published online: 24 Nov 2021
 

ABSTRACT

This paper addresses the optimisation of mineral value chains under metal and material type uncertainty. A mathematical model to simultaneously optimise the extraction decisions and the destination decisions is proposed. A fix-and-optimise scheme that exploits the structure of the problem and uses relaxation and decomposition techniques is introduced to obtain an initial solution, and an adaptive large neighbourhood search heuristic is developed to improve this solution. The proposed solution approach is tested on a real copper-gold mining complex. The results of these experiments show the ability of the proposed solution approach to efficiently address large instances of realistic size and provide schedules where the most valuable material is mined and processed early in the life of the mine and where the risk of not meeting production targets is successfully managed.

Disclosure statement

No potential conflict of interest was reported by the author(s).

Annex A. Destroy methods

The 14 destroy methods used to select the β blocks to be removed from the current solution, x, are described below. Unless otherwise specified, all destroy methods follow the general scheme summarised in Algorithm 2 and select blocks based on priority rules. More precisely, an index pi, henceforth referred to as a priority value, is first calculated for each block i using information derived from the current solution and/or from the history of the search. Blocks are then ranked in ascending or descending order of pi, and the β first blocks are selected. The way the priority values pi are computed differs from one method to another. Before describing how each method compute the pi values and how it ranks the blocks, some extra notation is introduced.

Let αis=dDaids be the number of destinations to which block i can be sent without violating the admissibility constraints (recall that aids=1 if block i is admissible for destination d under scenario s and 0 otherwise). Given the current solution x, denote by:

  • tix: the period in which block i is extracted in solution x.

  • Eix=maxjPitjx: the earliest period in which block i can be extracted without violating the slope constraints (recall that Pi denotes the set of immediate predecessors of block i).

  • Lix=minjSitjx: the latest period in which block i can be extracted without violating the slope constraints (Si denotes the set of immediate successors of block i).

  • Mstx=iNwisxit: the total tonnage, under scenario s,of blocks extracted in period t in solution x.

  • Pdstx=iNwisyidst: the total tonnage, under scenario s,of blocks processed at destination dduring period t in solution x.

In what follows, in order to simplify the notation, the dependence on x will be omitted whenever there is no risk of ambiguity; that is, ti will be used instead of tix and so on.

A.1. Random picker (D1)

The main purpose of this method is to diversify the search. It simply selects at random β blocks from the current solution x to alleviate the risk of choosing the same blocks many times. This can be seen as associating with each block a random integer value pi chosen between 1 and N and ranking the blocks in ascending order of pi (recall that N denotes the number of blocks being scheduled).

A.2. Historical frequency (D2)

This method uses historical information to select the blocks. It relies on a frequency array F=(Fi) where each entry Fi is associated with a block i. This frequency array keeps track of the number of times that each block i has been involved in destroying the solution since the beginning of the search process; that is, the Fi values are initially set to 0, and whenever the block i is selected by a destroy method, then the value of the entry Fi is incremented. The priority values of the blocks are calculated as pi=Fi, and the blocks are ranked in ascending order of pi. Thus, this method selects the blocks less frequently chosen so far in order to diversify the search.

A.3. Historical best (D3)

This method is also based on historical information, but it additionally uses the value of the current solution, fx. It aims to select the blocks that seem to be sent to the wrong destinations in the current solution with regard to the best-known solutions. More precisely, let Xit be the set of solutions found so far in which block i is extracted in period t. We define an N×T matrix Z. The value Zit of entry i,t in this matrix corresponds to the value of the best solution in the set Xit (i.e. Zit=maxsolXitfsol). All Zit values are initially set to a large negative value, and they are updated each time a new solution is found. Recall that ti denotes the period in which block i is extracted in the current solution. The priority value of block i is calculated as pi=Zitifx . Hence, a positive value of pi means that in one of the solutions found in the past sol, block i is extracted in the period as it is in the current solution (x); however, the value of sol is better than the value of x. This might be because in the current solution i is sent to the wrong destinations, and thus removing it from these destinations might result in an improvement. The blocks are ranked in descending order of pi to favour the blocks that present the largest deviations Zitifx.

A.4. Greedy picker (D4)

This method selects the costliest blocks in the current solution in an attempt to extract them in other periods where they will generate more profit and/or send them to better destinations. Identifying these blocks reduces to identifying blocks whose removal increases the value of the objective function the most. Let fxi denote the value of the current solution x if block i is removed from the schedule. The priority value of i is calculated as the difference between this value and the value of the current solution; i.e. pi=fxifx. The blocks are ranked in decreasing order of pi.

A.5. Period mobility (D5)

This method selects the blocks that can be extracted in other periods without violating the slope constraints, for it is easier to modify the period in which these blocks are extracted and thus create new feasible solutions different from the current one. Moreover, when selecting such blocks, we take care to favour blocks whose removal does not increase the mining shortage cost (third term of the objective function (14)). Let be a small value ( = 0.0001 in the numerical results presented in Section 5). The priority value of block i is calculated as follows:

pi=LiEismax,Eti_Mstiwis.

Note that the numerator LiEirepresents the number of periods in which block i can be extracted in the current solution without violating the slope constraints, while the denominator (smax,Eti_Mstiwis) is equal to a small value if removing i from its current period ti does not incur a mining shortage in ti under any scenario, and it is equal to the total shortage amount considering all scenarios otherwise. Hence, a block with a high value of pi has more feasible reinsertion possibilities (in terms of periods of extraction) and is less likely to incur a mining shortage if removed from its current period. For this reason, the blocks are ranked in descending order of pi.

A.6. Destination mobility (D6)

This method has the same objective as the previous one; that is, to select blocks that can lead to a new feasible solution different from the current one. However, the blocks are ranked by the number of destinations to which they can be sent rather than the number of periods in which they can be extracted. Recall that αis=dDaids represents the number of admissible destinations for block i in scenario s. The priority values are calculated using the formula below, and the blocks are ranked in descending order of these values:

pi=sSαisifiisextractedinthecurrentsolutioni.e.,iftTxit=1,0,otherwise.

Clearly, an unmined block cannot be sent to any destination, and thus if selected, one cannot modify its destination and get a new solution different from the current one. This is why unmined blocks are given less priority (the corresponding pi values are set to 0 to avoid selecting them).

A.7. Combined mobility (D7)

This method combines the two previous ones (Period mobility and Destination mobility). It accounts not only for the periods in which each block can be extracted, but also for the destinations to which the block can be sent. More precisely, the priority values are computed using the following formula:

pi=snαis1+t=Ei,ttiLisnαisiftnxit=1,0otherwise.

The term (sSαis1) accounts for the number of destinations to which block i can be sent if its period of extraction is not modified (its current destination under each scenario does not contribute to this term), while the term (t=Ei,ttiLisSαis) considers the other periods to which the block can be moved while satisfying the slope constraints. The blocks are ranked in descending order of pi to select those with many feasible reinsertion possibilities.

A.8. Predecessor relatedness (D8)

This method has the same objective as the last three ones: create new feasible solutions different from the current one. However, it does not rely on the number of feasible reinsertion possibilities of each block nor does it follow the general scheme outlined in Algorithm 2. It selects blocks along with their predecessors extracted in the same period, as this should allow modifying their period of extraction and create a new feasible solution (more specifically, advance their extraction together which will ensure the satisfaction of the slope constraints). This is done in three steps. In the first step, a random integer value τ is chosen between 1 and T (recall that T is the number of periods over which the blocks are being scheduled). Then, τ periods are selected at random. The priority values are not calculated for all blocks but only for blocks extracted in one of these τ periods. Let t be such a period and i be a block extracted in t. Denote by γi the number of blocks in the inverted cone formed by i and its predecessors extracted in t. Recall that β blocks should be selected. We set pi=γiβτ and among the blocks currently extracted in t, the block with the smallest value of pi is selected, as well as its predecessors extracted in t. Ties are broken up randomly. This process is repeated for each of the τ periods.

A.9. Successor relatedness (D9)

This method is similar to the previous one except that it selects blocks along with their successors. Apart from the fact that γi represents the number of blocks in the cone formed by i and its successors extracted in the same period, the procedure to select the blocks is identical to the procedure described in the previous section (A.8).

A.10. Mining reduction (D10)

The objective of this method is to select blocks whose removal can reduce the mining surplus (i.e. decrease the value of the fourth term of the objective function) or reduce the tightness of the mining capacity constraints to make room for new blocks. The priority values are computed as follows:

pi=min1,LiimaxsnnstiEtiiftnxit=1,0otherwise.

The blocks are ranked in descending order ofpi. Note that if an extracted block icannot be moved to another period (tti) without violating the slope constraints (i.e. if tTxit=1 and Ei=Li=ti), then the corresponding priority value piis equal to 0 to avoid selecting it. This is done to make it easy for the repair method to create new feasible solutions. The priority value of a block that is not extracted in the current solution (i.e. such that tTxit=0) is also set to pi=0 to avoid selecting it, as such blocks are not extracted and thus have no influence on the mining capacity constraints (changing their periods does not affect the fourth term of the objective function (14)).

A.11. Processing reduction (D11)

This method is based on similar ideas as the previous one and aims to reduce the amount of surplus at the different destinations and/or the tightness of the processing capacity constraints. To be more precise, recall that Pdst denotes the total tonnage of blocks processed at destination d during period t under scenario s in the current solution, and that Fdt is the processing capacity at d during t. Denote by σis=min1,αis1+αisLiEi the number of feasible reinsertion possibilities for block i under scenario s. Thus, if block i cannot be moved to another period (i.e. if Ei=Li=ti), and if it can be sent to only one destination under scenario s (i.e. and if αis=1), then σis=0. Otherwise, σis1. The priority values pi are calculated using the formula below, and the blocks are ranked in descending order of pi:

pi=maxsSσisPdstiFdtiiftTxit=1,0otherwise.

Note that the way the pi’s are defined implies that the blocks that are not extracted in the current solution, as well as the blocks that are extracted but can neither be moved to a different period nor sent to another destination for all scenarios, have the lowest priority values (0) to avoid selecting them. As for the previous method, the idea is to prevent getting a solution similar to the current one when applying the repair method.

A.12. Shortage cautious (D12)

The purpose of this method is to find blocks that can be sent to destinations more profitable than their current destinations without incurring a shortage in their current destination. Denote by c the destination to which block i is sent under scenario s in the current solution. Let d be the best destination to which block i can be sent under scenario s; i.e. d=argmaxdDvids(recall that vids represents the economic value to be generated if block i is processed at destination d in scenario s. This value is calculated as the return from selling the recovered metal minus the processing, transportation, and selling costs. vids is set to a large negative value if i is not admissible for destination d under scenario s). Again, let be a small positive value, and let C be a large positive value. Recall that δ1 is the economic discount rate. The priority values are computed using the following formula, and the blocks are ranked in descending order of the priority values:

pi=11+δ1tisnvidsvicsmax,Fcti_ncstiwisiftnxit=1,Cotherwise.

In this formula, 11+δ1tiis used to account for the discount factor. The numerator (vidsvics) is used to favour blocks that can improve the second term of the objective function (14) the most. The denominator (max,Fcti_Pcstiwis)) is used to favour blocks that will not incur a shortage if removed from their current destination (will not increase the fifth term of the objective function (14)). Finally, the priority values of blocks that are not extracted in the current solution are set to a large negative value to avoid selecting them, as these blocks do not contribute to any term of the objective function (14).

A.13. Empty one period (D13)

This method does not compute the priority values and does not necessarily select β blocks. It randomly selects one period and adds all the blocks extracted in that period to the list L (list of selected blocks). The motivation is to allow all destinations in a given period to be empty and completely remake the destination decisions (reconstruct the destination plans) with the repair method. By doing so, more opportunities for new block combinations in the different destinations are created.

A.14. Empty waste dump (D14)

In a given period and under a given scenario, some blocks might be sent to the waste dump while they can be sent to profitable destinations where they can be processed and generate revenue. This method aims to select such blocks to improve the solution. Let πis be a parameter equal to 1 if block i is sent to the waste dump under scenario s in the current solution, and 0 otherwise. Clearly, πis=0s if iis not extracted in the current solution. The priority values are computed using the formula below, and the blocks are ranked in descending order of these values:

pi=sSπisαis1LiEi+1

The term αis1 accounts for the number of the destinations to which block i can be sent under scenario s, excluding its current destination, while LiEi+1 accounts for the periods in which i can be extracted without violating the slope constraints, including its current period of extraction. The factor πis is used to avoid selecting blocks that are currently not in the waste dump under any scenario.

Annex B. Repair methods

Referring to Algorithms 1 and 2, the blocks in the list L, identified by the selected destroy method, are removed from the current solution x, resulting in an infeasible solution x. This means that all the variables associated with the blocks that are not in L are fixed, and the remaining variables are ‘free’. One of the seven methods described below is used to reinsert each block in L in other feasible periods and/or destinations to obtain a new feasible solution x ;that is, to optimise the ‘free’ variables. The following notation is used. Given the solution to repair x, Bt=iN:xit=1 denotes the set of blocks extracted in period t. The set of blocks processed in destination d during period t under scenario s is denoted by Λdst=iN:yidst=1.

B.1. Random repair (R1)

This method considers one block iL at a time, which is selected randomly, and sequentially chooses the period and the destinations in which i will be scheduled. This is done as follows: The method starts by identifying the set of feasible periods FPi in which i can be extracted without violating the slope constraints. In doing so, the predecessors and the successors of i that are in the list L are not accounted for. Then, one of the periods in FPi is selected randomly, and i is scheduled to be extracted in that period. The next step is to decide in which destination i will be processed under each scenario, and again this is done randomly; i.e. under each scenario, i can be processed in any destination as long as it is an admissible destination. When all scenarios are considered, i is removed from L, another block is chosen, and the process is repeated until the list L is empty.

B.2. Greedy repair (R2)

This method is similar to the previous one in the sense that it considers blocks iL one at a time and sequentially determines the period and the destinations for the selected block before considering another block, but, to this end, it uses selection criteria different from those used by R1 as explained below. To simplify the presentation, we denote by

(29) gBt=iBtEci1+δ1t+1SsSp1+δ2tmax(Et_iBtwis,0)+p+1+δ2tmax(iBtwisEt,0)(29)
(30) hΛdst=iΛdstvids1+δ1tqd1+δ2tmax(Fdt_iΛdstwis,0)qd+1+δ2tmax(iΛdstwisFdt,0).(30)

gBt is used to evaluate the cost of extracting a block i in period t accounting for all blocks that are already extracted in this period, whereas hΛdst is used to measure how profitable it is in scenario s and period t to process an additional block in destination d accounting for blocks that are already processed in d. Again, let FPi denote the set of feasible periods in which i can be extracted, considering only its predecessors and successors that are not in L. For each period tFPi, the repair method R2 first uses function (29) to compute the cost of extracting i in period t: Λ1i,t=gBtigBt. Then, it considers the scenarios sequentially and for each scenario, it finds, following a greedy approach, the destination in which i can be processed. For that, function (30) is used and the following is computed to measure how feasible and profitable it is to process i in d: Δ2i,d,s,t=hΔdstihΛdst if i is admissible to d under scenario s, and Λ2i,d,s,t is set equal to a large negative value otherwise.

Let di,s,t=argmaxdDΔ2i,d,s,t. Clearly, the maximum profit that one can expect if block i is extracted in period t is Δi,t=Δ1i,t+1SsSΔ2i,di,s,t,s,t. Once all periods in FPi are considered, the period t=argmaxtFPiΔi,t is identified and block i is scheduled to be extracted in t (i.e. it is included in the set Bt). Finally, for each scenario s, i is sent to destination di,s,t (i.e. it is included in the set Λdi,s,tst).

B.3. Capacity cautious repair (R3)

This method is very similar to the previous one except for the following differences:

  1. gBt and hΛdst are here defined by Equationequations (31) and (Equation32) below rather than (29) and (30) in order to select the periods/destinations that will leave the most residual capacity for forthcoming blocks. This is done to introduce some lookahead perspective when reinserting the blocks.

(31) gBt=sSiBtwisEt(31)
(32) hΛdst=iΛdstwisFdt.(32)

(2) Accordingly, di,s,t=argmindDΔ2i,d,s,t instead of di,s,t=argmaxdDΔ2i,d,s,t (i.e. the best destination for a block in a given scenario and period is the one having the smallest capacity utilisation).

(3) Δi,tis set equal to Δ1i,t+1SsS2i,di,s,t,s,t and t=argmintFPiΔi,t.

B.4. MCFP repair (R4 and R5)

To repair the solution, this method combines the random repair heuristic (R1) and the MCFP heuristic described in Section 3.2. More specifically, it starts by assigning feasible periods to blocks in L as in R1; that is, for each block iL, FPi is first identified, then i is included in Bt where t is chosen randomly in FPi. Once this step is completed, the destination plans for each period t that have been affected at the previous step are determined by solving the DPt described in 3.2. This is done by applying the MCFP heuristic on each scenario separately. When applying the MCFP heuristic, the decisions associated with the blocks that were not in L (i.e. blocks that were not selected by the destroy method) are fixed to their current values. Another alternative, which is more flexible and might lead to better quality solutions but at the expense of longer computational times, is to reconstruct the destination plan from scratch (i.e. none of the parts of the plan is fixed and all the decisions are to optimise). In this paper, we examine the two alternatives, which leads to two variants of the MCFP repair method. The variant that solves a partial destination problem (first alternative) is denoted by R4, while the variant that solves the full destination problem (second alternative) is denoted by R5.

B.5. MIP repair (R6 and R7)

This method is very similar to the previous one. All the extraction decisions are made first before designing the destination plans. Again, the latter are determined by considering only periods that have been affected when making the extraction decisions, considering the scenarios separately. However, rather than using MCFP, a mixed-integer programming solver is used to find the optimal values of the variables yidst, fdst, and fdst+ that maximise the net present economic value to be generated from processing the blocks extracted in period t minus the total penalty costs of not satisfying the demands or exceeding the capacities of the different destinations during this period. Again, one can fix the binary variables yidst corresponding to the blocks i that were not selected by the destroy method to their current values, which results in a variant of the MIP repair method that we will denote by R6 as one can ‘free’ all variables, which gives yield to another variant of the MIP repair method denoted by R7.

Additional information

Funding

The work in this paper was funded by NSERC CRDPJ 411270-10, NSERC Discovery Grant 239019-06, and the industry members of the COSMO Stochastic Mine Planning Laboratory: AngloGold Ashanti, Barrick, BHP, De Beers, Kinross, Newmont, and Vale. This support is gratefully acknowledged.