Production · still refining at scale

Optimise · Direct Block Scheduling

Direct Block Scheduling

DBS schedules the deposit block-by-block directly against real geotechnical precedence and discounted value, choosing its own economic pit — then bands the result into development shells your existing viewers can render.

See it

What it does

Geotech precedence, not shell nesting

Projects block-level slope-structure arcs onto super-block precedence — DAG-safe, with explicit dropped-edge accounting.

Reblock to stay interactive

Arbitrary reblocking cuts unit count by 1–2 orders of magnitude; economics aggregate onto super-blocks.

Picks the economic pit itself

Runs the discounted schedule across revenue-factor shells and keeps the NPV-best precedence-closed shell.

Two-phase, verified

LP relaxation (bound + timing) then integer build, verified against the bound.

Development shells

Bands the dig sequence by cumulative mined ore into nested masks — a time/tonnage analogue of nested pit shells.

Apples to apples

Reuses the same economic engine as the conventional scheduler, so DBS-vs-shell is a fair comparison.

How it works — the engineeringTechnical detail

NumPy arc projection with a Kahn DAG check; the HPF explicit-arc solver for the pit; the BZ engine for the schedule. The pit selection runs on the same fast pseudoflow engine as the ultimate pit, so DBS scales well across large deposits — and we're continually refining the two-phase schedule solve at the very largest deposit sizes.

In
block model + structure-arc file, reblock factors, economics/capacities, optional design-pit mask.
Out
per-block scheduled period (.npy), development-shell bands, period physicals/cashflow, optimality gap.

flowopt/services/dbs_precedence.py · dev_shells.py · run_orchestrator_dbs.py