PitForge — Banco de Trabajo de Pit Final Exacto y Cascaras de Pit Whittle Anidadas
Un banco de trabajo de diseno minero a rajo abierto que resuelve el pit final de forma exacta, como cierre de peso maximo del grafo de precedencias de bloques reducido a un corte minimo sobre un motor de flujo maximo Dinic, corriendo en vivo en el navegador, y deriva las cascaras de pit Whittle anidadas por factor de ingreso. Reproduce los optimos publicados de tres instancias reales de MineLib a lo mas con 2e-9 de error relativo, y autoverifica cada resolucion con la identidad de dualidad de flujo maximo. Es el unico de los cuatro de Faena cuyo titular se valida contra optimos publicados por terceros y no contra su propio generador.
Contexto de Negocio
El pit final y sus cascaras anidadas fijan la envolvente de reservas, fases y flujo de caja, por lo que un pit erroneo o no auditable se propaga a cada numero aguas abajo. El valor de PitForge es que su respuesta exacta es verificable de dos maneras: contra optimos publicados por terceros que no creo, y contra la identidad de dualidad de flujo maximo en cada resolucion. Una instancia de 14.153 bloques con 219.778 precedencias se resuelve de forma exacta en cerca de 259 ms de mediana en el navegador, lo que pone un optimizador de grado de diseno en una pagina estatica sin servidor y sin licencia. Los surrogates aprendidos se posicionan con honestidad como aproximaciones rapidas para exploracion de escenarios, nunca como reemplazo del resultado exacto.
Valor Estratégico
PitForge es el mas fuertemente validado de los cuatro de Faena, y la validacion es de terceros: su pit final exacto reproduce tres optimos publicados de MineLib (newman1, zuck_small, kd) a lo mas con 2e-9 de error relativo, con el mayor resuelto en cerca de 259 ms en el navegador. Dos propiedades de honestidad lo refuerzan. Las perillas de escenario quedan bloqueadas en modo real porque las instancias de MineLib publican sus propios valores netos y precedencias, de modo que rederivarlas romperia la comparabilidad con el optimo publicado, una decision deliberada para proteger el benchmark. Y el grade-nn aprendido se reporta como empate, no como victoria: R2 0,9613 frente a kriging ordinario 0,958, un margen de 0,0033 que el propio artefacto llama una aproximacion rapida que nunca supera al resultado exacto. La relajacion CPIT publica su brecha de integralidad de 10,46% en vez de ocultarla. Es un patron reutilizable para un optimizador auditable y autoverificable que se prueba contra numeros que no escribio.
El Desafío
El pit final, el conjunto de bloques que vale la pena minar una vez respetadas las precedencias de talud, es la base de todo diseno a rajo abierto, y tiene solucion exacta: el cierre de peso maximo del grafo de precedencias, equivalente a un corte minimo. En la practica suele aproximarse, o queda encerrado dentro de software comercial cuyos resultados no se pueden reproducir ni auditar. Probar que una implementacion es correcta exige mas que "devuelve un pit": exige igualar un optimo publicado sobre una instancia que no generaste tu mismo, y verificar el solucionador contra su propia identidad de dualidad en cada corrida.
Nuestro Enfoque
PitForge resuelve el pit final como cierre de peso maximo, reducido a un corte minimo via la construccion de Picard de 1976 y resuelto por un motor de flujo maximo Dinic escrito en TypeScript, corriendo en vivo en el navegador. El resultado exacto se describe por lo que es: es el equivalente de cierre maximo / corte minimo de Lerchs-Grossmann, no una reimplementacion de Lerchs-Grossmann, y no el pseudoflow de Hochbaum (referenciado solo como quien computa el mismo corte). Desde el pit exacto deriva las cascaras de pit Whittle anidadas sobre un calendario ascendente de factor de ingreso, entregando curvas de valor, tonelaje y razon de descarga. La estimacion de ley corre de tres maneras en vivo (IDW, kriging ordinario y un surrogate grade-nn ONNX sobre un stencil de vecinos de 27 vectores), mas un surrogate de inclusion en el pit. Una relajacion LP de CPIT (scipy HiGHS) con redondeo entero voraz se computa offline y se renderiza desde JSON, nunca en vivo. Cada resolucion asevera pitValue = suma(valorPositivo) menos maxflow. Estatico en GitHub Pages, con una via de arrastrar y soltar CSV en la app para modelos de bloques propios.
Indicadores Clave de Rendimiento
| KPI | Línea Base | Resultado | Impacto |
|---|---|---|---|
| Correctitud, validada por terceros | Devuelve "un pit" sin verificacion externa | Reproduce 3 optimos publicados de MineLib (newman1, zuck_small, kd) a <= 2e-9 de error relativo | Validado contra optimos que no genero, no contra su propia salida |
| Resolucion exacta, en el navegador | Pit aproximado, o un solucionador de escritorio con licencia | 14.153 bloques / 219.778 precedencias resueltos de forma exacta en ~259 ms de mediana (corte minimo Dinic sobre reduccion de Picard) | Optimizador de grado de diseno en una pagina estatica, cero backend |
| Autoverificacion en cada resolucion | Confiar en el numero devuelto | pitValue = suma(positivo) - maxflow aseverado en cada resolucion (identidad de dualidad de flujo maximo) | El optimizador se verifica a si mismo, no solo quien lo llama |
| Surrogate aprendido, acotado con honestidad | Afirmar que la red neuronal supera al kriging | grade-nn R2 0,9613 vs kriging ordinario 0,958 (empate); reportado como aproximacion rapida, nunca superando el resultado exacto | Un margen de 0,0033 es un empate, y la ficha lo dice |
Arquitectura
pitforge pipeline
The exact pit, in the browser, checked against published optima
PitForge is an open-pit mine-design workbench. It solves the ultimate pit limit exactly, as a maximum-weight closure of the block-precedence graph reduced to a minimum cut on a Dinic max-flow engine, running live in the browser, and derives the nested Whittle pit shells by revenue factor. Live at pitforge.fasl-work.com, part of the Faena mining-analytics hub.
Say what the engine is
The exact result is the max-closure / min-cut equivalent of Lerchs-Grossmann, via Picard’s 1976 reduction on a Dinic engine. It is not a re-implementation of Lerchs-Grossmann, and it is not Hochbaum’s pseudoflow, which is referenced only as computing the same cut. From the exact pit, nested Whittle shells over an ascending revenue-factor schedule give value, tonnage and strip-ratio curves.
Validated against MineLib, not against itself
The exact pit reproduces the published optima of three real MineLib instances:
- newman1: 1,060 blocks, solved in 5.2 ms median, relative error 9.96e-10
- zuck_small: 9,400 blocks, 237 ms, 1.86e-10
- kd: 14,153 blocks / 219,778 precedences, 259 ms, 1.30e-10
All three match: true. Two further instances (marvin, mclaughlin_limit) are excluded with committed reasons (marvin ships with commercial Whittle software; neither has a verified public mirror) rather than silently dropped. In real mode the scenario knobs are locked, because the instances publish their own net values and precedences and re-deriving them would break comparability with the published optimum.
Honest about the learned and offline rungs
Every solve asserts the duality identity pitValue = sum(positive) - maxflow, so the optimiser checks itself. Grade estimation runs three ways live (IDW, ordinary kriging, and a grade-nn ONNX surrogate); the learned grade-nn is a tie, not a win (R2 0.9613 vs ordinary kriging 0.958, a 0.0033 margin), and the artifact calls it a fast approximation that never beats the exact result. Scheduling is a CPIT LP relaxation computed offline with scipy HiGHS, rendered from JSON, never live; it publishes a certified NPV upper bound with a 10.46% integrality gap, and states plainly that the rounded schedule is a heuristic and is never optimal. It is a design optimiser, not a JORC or NI 43-101 resource estimate.
Stack Tecnológico
En acción
Un recorrido corto por la app en vivo: la interfaz real, grabada desde el sitio desplegado.

Capturas de la Aplicación

