Track 1: AI and Data-Driven Decision Making

3.5 Code Implementation Code was primarily written in Julia, using Python for plotting purposes. A custom package was built in Julia to house the network model, simulation, and optimization. We used the JuMP package for encoding the linear program, the commercial Gurobi optimizer for solving linear programs, the POMDPs package to implement the MDP, and the JuliaPOMDP MCTS solver to solve the MDP. 4. RESULTS We test two representative scenarios over 7-day and 14-day simulations, which represent optimizing over weekly and biweekly time horizons respectively. These simulations are long enough to demonstrate the capability of an MCTS approach under an MDP formulation to plan ahead and account for uncertainties. The data for 7-day simulations are similar to 14-day simulations, so we only present the data and representative examples from the 14-day simulations since the trends and performance over time are more clear. In Scenario A, the network has one mine with four layers. A fixed extraction schedule cycles through the layers, with rock extracted from one layer each day. Solvers choose how much to extract from the mine each day. Clients are market-based, and fulfilling client demand is not a strict requirement. In Scenario B, the network has four mines each with one layer. A fixed amount is extracted from each of the four mines every day. (This is equivalent to one mine with four layers in which rock is extracted from all four layers every day.) Clients are contract-based, and fulfilling client demand is a strict requirement. 4.1 Scenario A: Variable Extraction The layer characteristics for the mine are reported in Table 4, and the P2O5 variability is plotted in Figure 2. Mine production starts from Layer 1 on Day 1, proceeds to Layer 2 on Day 2, and so on. Table 5 shows the profit ratio relative to the greedy MILP benchmark for the MCTS and ggMCTS solvers. The MCTS solver performed better than the benchmark in 75% of simulations, however, there is a notable tail end where the MCTS solver performs slightly worse. Greedyguided MCTS consistently performs worse than MCTS, only obtaining a total profit greater than the benchmark in 30% of simulations. The simulation in which the MCTS solver had median performance relative to the benchmark was chosen as the representative simulation depicted in the following figures. The daily profit for each solver over one simulation is depicted in Figure 3. MCTS has more consistent performance over the simulation. Greedy-guided MCTS closely follows the greedy solution, which oscillates as the quality of the layer extracted that day varies over time. Figure 4 shows the inventory of each pile utilized by the MCTS solver during the representative simulation. The solver stockpiles a large amount on days when the highest-quality layer is producing (day mod 4 = 1) and then draws down the stockpiled material on low-quality layer days (day mod 4 = 3). The greedy solver never stores any pile inventory, since it is a one-shot optimization technique, it never has any incentive to do so.

RkJQdWJsaXNoZXIy MTM0Mzk2