where = 60,000,000 , = 20,000,000 , is the block mass (t), and and are dynamic coefficients, adjusted during optimisation. 2.3.2 Simulated annealing for the mine sequencing problem Simulated annealing (SA) is one of the earliest metaheuristic algorithms influenced by physical processes, proposed by Kirkpatrick et al. (1983). It is inspired by the solidification of materials such as metals, and with other derivative-free methods, it avoids entrapment in local optima through a stochastic search mechanism commonly modelled as a Markov chain. The algorithm iteratively perturbs the current solution, always accepting improvements to the objective function and, with a certain transition probability (higher at the beginning, to induce exploration of the solution space), also accepting inferior solutions. Metaheuristics are not committed to exploring the entire solution space like exact approaches to finding the best possible solution to the problem. For this reason, they are fast and efficient, capable of finding solutions that are local optima to complex problems in an acceptable computational time. In this study, an SA-based framework was used to solve the CPIT model, as shown in the following pseudocode: Pseudocode - Simulated Annealing Framework Input: Blocks with coordinates, grades, tonnages, precedence constraints, etc; Mining and processing capacity; Simulated annealing parameters (T0, cooling rate α, max iterations); Penalty parameters ( , ). Initial Solution: Generate a feasible initial schedule using a topological sort; add random noise to promote diversification; Compute initial NPV. Parallel Execution (one worker per core): Initialise temperature T ← T0; Initialise penalty multipliers and ; Store the best feasible solution. While the stopping criterion is not met: Select neighbourhood operator; Shift: move one block to another period; Swap: exchange periods of two blocks. Generate neighbour respecting precedence constraints: Evaluate ΔNPV, Capacity violations; Penalty = ·viol_m + ·viol_p; ΔObjective = ΔNPV − ΔPenalty. Accept neighbour if: ΔObjective ≥ 0 or exp(ΔObjective / T) > u, u ∼ U(0,1).
RkJQdWJsaXNoZXIy MTM0Mzk2