Scaling up. Five 1,000-block mines

Today in short

  • I set up five large mines (10 × 10 × 10 = 1,000 blocks, 6 periods), one for each of my main small-mine designs, and ran every scenario on all of them. That’s 30 partial runs plus blind, full MILP and greedy.
  • At this size blind is already strong. The re-planning blind MILP reaches about 95 to 98% of perfect information on most mines, so a shaft has little left to add. Gains are mostly 0 to 2,600, against drill costs of 575 to 1,813.
  • Greedy falls well behind everywhere, at about 68 to 82% of full information.
  • One result stands out. On the dipping orebody with a minimum, two shafts did 35,000 to 53,000 worse than blind. The cause is the minimum mining rule, not the information the shafts gave.

The five mines

Each mine is 10 × 10 × 10 (1,000 blocks) over 6 periods, with the same economics: 4,000 t of mining and 2,000 t of processing per period, and drilling at 125 per block plus 10% per layer of depth. The surface is kept poor everywhere, so information always has some value. Each mine was run with no minimum and with a 1,200 t minimum.

Mine Idea Ore blocks
Opposite gradient Rich surface on one side, rich ore underneath the other 327
Decoy Rich surface patch over waste, real ore elsewhere 129
Waste cover Poor surface everywhere, rich layers 1 to 3 underneath 300
Dipping orebody Ore near the surface on one side, dipping deeper toward the other 206
Two hidden pockets Rich pockets under two opposite corners 90

The same three shafts are used on every mine so the results compare directly.

Shaft Path Cost
Diagonal Block 1 → 1000, all 10 layers 1,812.5
Shallow Block 23 → 356, 4 layers 575
Vertical Block 24 → 924, all 10 layers 1,812.5

The shafts don’t always hit ore. The shallow shaft finds nothing on the dipping and two-pockets mines, and on the dipping mine only the diagonal reaches the deep ore. I kept that on purpose, since a badly placed shaft that is pure cost is a useful case for the thesis.

One run crashed (two pockets, shallow shaft, no minimum). That shaft passes only through waste, so the planner correctly mined nothing, and the notebook failed when saving an empty schedule. I fixed the empty case in the code and reran that one mine. The result is NPV 0, the same as blind.

Results

NPV, rounded to the nearest unit. Bold marks the best partial result in each row.

Mine Minimum Blind Diagonal Shallow Vertical Full information Greedy
Opposite 0 672,628 675,276 672,778 674,010 692,556 509,329
Opposite 1,200 t 674,534 674,629 674,053 674,346 693,342 509,329
Decoy 0 275,237 275,237 275,237 275,237 280,179 212,200
Decoy 1,200 t 268,447 268,464 269,162 269,661 278,723 212,200
Waste cover 0 0 651,653 650,056 649,983 672,854 548,221
Waste cover 1,200 t 650,223 649,959 650,154 650,624 672,850 548,221
Dipping 0 283,839 283,393 284,085 284,043 321,184 220,624
Dipping 1,200 t 224,141 171,383 189,800 229,774 321,196 220,624
Two pockets 0 0 333,149 0 332,739 351,292 239,133
Two pockets 1,200 t 332,668 333,162 334,646 334,783 350,409 239,133

What the table says

1. Blind is already close to perfect on large mines. On most mines blind reaches about 95 to 98% of full information (dipping is lower, about 88%). With that little gap left, shafts gain only 0 to about 2,600, and once drill cost is taken off, most are a small net loss. The clear net wins are vertical on dipping with the minimum (+3,820), shallow on two pockets with the minimum (+1,403) and diagonal on opposite with no minimum (+835).

2. Rows where blind is 0 aren’t really wins for the shaft. On waste cover and two pockets with no minimum, the whole surface is waste, so blind sees nothing worth digging and never starts. The huge “gain” there just means the shaft persuaded the planner to dig at all. Greedy, with no shaft, gets 548k and 239k on those mines. These rows are better compared with greedy, or reported separately.

3. Greedy is far behind everywhere, at about 68 to 82% of full information. It mines at full speed from the best-looking surface blocks, which is exactly what these layouts punish. Its result doesn’t change with the minimum, because it always mines at full capacity, so 1,200 t never binds.

4. Two small oddities that are fine. The full MILP is sometimes slightly higher with the minimum (693,342 against 692,556 on opposite). Adding a rule can’t truly raise the optimum, but both are within the solver’s 0.1 to 0.4% tolerance.

The dipping orebody. The minimum, not the shaft

On the dipping mine with the 1,200 t minimum, the diagonal shaft finished 52,758 below blind (only 53% of full information) and shallow 34,341 below. Nowhere else does information hurt by more than about 2,000. Adding up each period’s mining shows why.

Period Blind Vertical Diagonal Shallow Any shaft, no minimum
P1 mined 1,200 t 1,200 t 1,200 t 1,202 t 4,000 t
P2 mined 4,000 t 4,000 t 1,303 t 1,200 t 4,000 t
P3 to P6 mined 4,000 t each 4,000 t each 4,000 t each 4,000 t each 4,000 t each
NPV after P2 46,581 42,209 12,361 9,034  
Final NPV 224,141 229,774 171,383 189,800 about 284,000

Period 1 is the minimum’s fault. With the minimum, every run, blind included, mines exactly 1,200 t in period 1 even though it could mine 4,000 t. Almost the whole surface is waste and everything underneath is hidden, so the planner values it at nothing. Because the minimum applies to every period of its plan, it reasons, “I must mine 1,200 t in each of the next periods, and the only rock I can see is this surface waste, so I’ll spread it out and pay later, when it’s cheaper after discounting.” It can’t see that stripping the surface is what uncovers the orebody. This is the same waste rationing I found on the small lens mine. Even for blind it costs about 60,000 on this mine compared with no minimum.

Period 2 is where two shafts make it worse. Blind and vertical stop rationing in period 2 and mine at full rate. Diagonal and shallow ration for one more period. Their estimates near the surface show only waste (grades 0.08 to 0.17), which adds to the rock the planner thinks it must save for future minimums. On a dipping deposit with only 6 periods, that one-period delay means the deep ore is never reached.

So the code is right, but the result isn’t about the value of information. It shows the every-period minimum interacting with a mine whose ore is all hidden. Without the minimum, all three shafts are within about 450 of blind on this mine.

Next

  • Decide how to handle the dipping result. Either report it as a finding (a hard minimum in every period makes a rolling MILP ration stripping when the ore is hidden), or soften the minimum in future periods only, keeping it hard for the current period so the schedule still meets 1,200 t every period, and rerun the dipping mine.
  • Report the blind = 0 rows against greedy, not blind.
  • Tighten the full MILP’s solver tolerance if the with/without-minimum comparison needs to be exact.