EN
← Volver al Portafolio
Minería y Optimización agosto de 2026

PhaseFlow, Programa de Producción de Rajo Abierto con Cota Certificada

Un programa de producción de rajo abierto, resuelto con una cota certificada y animado año a año sobre el modelo de bloques. PitForge responde qué bloques vale la pena extraer; PhaseFlow responde cuándo, sujeto a precedencia de talud en cada periodo y a capacidad de mina y planta por periodo, maximizando el VAN descontado. Ese es el problema de rajo con restricciones (CPIT). El ancla de confianza es la instancia publicada MineLib newman1.cpit resuelta TAL COMO SE PUBLICÓ, con sus propios seis periodos, su tasa de descuento de ocho por ciento y sus dos capacidades: reproduce el óptimo del rajo final exactamente (26.086.899) y su cota LP conjunta queda en 24.486.184 contra los 24.486.549 publicados. La cota no necesita solver LP (algoritmo de multiplicador crítico, exacto en O(mn log n) como clausuras máximas paramétricas), y por eso todo el problema se re-resuelve en vivo en el navegador. Dos cotas corren en cada caso y se reporta la diferencia entre ellas, porque esa diferencia es la parte de una brecha que pertenece a la cota y no al plan.

Qué resuelve
CPIT: cuándo extraer cada bloque, bajo precedencia de talud por periodo y capacidad de mina/planta, maximizando el VAN descontado
La cota
Algoritmo de multiplicador crítico (Chicoisne et al. 2012, doi:10.1287/opre.1120.1050): la relajación LP de CPIT exacta en O(mn log n) como clausuras máximas paramétricas, sin solver LP
Vía en vivo
Un port TypeScript re-resuelve todo el problema en el navegador, así la tasa de descuento, las capacidades y el ángulo de talud mueven la respuesta; un test de paridad verifica que reproduce la cota de Python
Explotabilidad como KPI
Componentes por periodo, participación del componente mayor y ancho mínimo explotado, reportados por caso; la pared del rajo lleva el color del programa en cada cuadro (33% de lo visible desde afuera en el cuadro final, contra 0% de un render de corte)
Alcance honesto
Sin acopios (el modelo de ley mezclada es bilineal), sin mezcla ni restricciones laterales generales, sin restricciones de producción mínima, sin IP estocástico de dos etapas. No es para planificación minera de producción
Motor y despliegue
oreblocks (publicado por separado en PyPI, consumido fijado; PhaseFlow no declara paquete propio); SPA React 19 + Vite en GitHub Pages, MIT; parte del hub Faena
Diagrama de arquitectura de PhaseFlow, Programa de Producción de Rajo Abierto con Cota Certificada
#mining-optimization #mine-planning #scheduling #cpit #lagrangian-bound #max-flow #three-js #minelib #mining

Contexto de Negocio

Un programa de producción es donde un plan minero se convierte en dinero y en compromisos: fija el VAN con que se valoriza el proyecto, la flota de equipos que debe existir cada año, y la alimentación que la planta realmente verá. El valor de una cota certificada es que convierte un número en una afirmación con un límite adjunto, y la discusión pasa de si un VAN es creíble a cuánto valor queda demostrablemente sobre la mesa. Reportar ambas cotas es la misma disciplina un nivel más profundo: dice si la brecha restante es una debilidad del plan o holgura en la matemática usada para medirla. La coherencia espacial importa por la misma razón práctica: un programa que dispersa un periodo en muchos componentes pequeños es caro o imposible de explotar de verdad, y la app reporta componentes por periodo, participación del componente mayor y el ancho mínimo explotado como KPIs de primera clase, en vez de dejar la explotabilidad a que un revisor mire una imagen.

Valor Estratégico

PhaseFlow es el paso de programación de la línea de rajo abierto, y gana confianza siendo medible contra trabajo que no es el suyo. Resuelve una instancia publicada de MineLib tal como se publicó y pone sus números junto a los publicados, incluida la brecha donde queda peor. Calcula su cota sin solver LP, que es lo que hace posible una vía en vivo genuina en vez de una reproducción. Corre dos cotas en cada caso y reporta su diferencia, así una brecha puede atribuirse al plan o a la cota. Trata la coherencia espacial como KPI porque los propios autores del algoritmo predicen que los programas a nivel de bloque se dispersan. Y su vía aprendida está caracterizada, no solo medida: la hipótesis obvia para el peor caso del surrogate (0,344, en un arquetipo de cuerpo mineralizado) fue REFUTADA por los depósitos held-out, y lo que sobrevivió es una lectura de escenario con mecanismo, entregada como una guarda (tasa de descuento igual o sobre 0,15) que viaja con el método en el artefacto y en el selector, y no como una advertencia en una página de documentación. El alcance honesto se declara en el producto: sin acopios, sin mezcla, sin restricciones de producción mínima, sin programación entera estocástica de dos etapas, y no es para planificación minera de producción. El motor es el paquete oreblocks publicado por separado y consumido fijado; el producto no declara paquete propio.

El Desafío

Saber qué bloques vale la pena extraer es solo la mitad de un plan de rajo. La otra mitad es cuándo: un programa que respete la precedencia de talud en cada periodo, se mantenga dentro de la capacidad de mina y planta de cada año, y maximice el valor descontado. Ese es el problema de rajo con restricciones, y es NP-difícil, así que nadie lo resuelve a optimalidad probada a tamaño real. La consecuencia es que una herramienta de programación puede reportar el VAN que quiera y sonar convincente, porque sin una cota no hay contra qué comparar el número. Reportar una brecha tampoco lo arregla por sí solo: una brecha es la distancia entre un plan y una cota, así que una cota floja hace ver mal a un buen plan y esconde cuál mitad del número es realmente el problema. Y un programa que se ve óptimo en una planilla puede ser inexplotable en la práctica si los periodos se dispersan en fragmentos desconectados por el rajo.

Nuestro Enfoque

PhaseFlow se ancla a una instancia publicada resuelta tal como se publicó. El caso MineLib newman1.cpit corre con sus propios seis periodos, su tasa de descuento de ocho por ciento y sus dos capacidades, y los resultados quedan junto a los publicados (Jelvez, Morales y Nancel-Penard, MPES 2018): el óptimo del rajo final se reproduce exactamente en 26.086.899, la cota LP conjunta llega a 24.486.184 contra una cota LP PCPSP publicada de 24.486.549, y la brecha de optimalidad entregada es 2,49 por ciento contra un 1,26 por ciento publicado, lo que se declara en vez de disimularse. La verificación de que la cota es real es su ORDEN: una cota LP de CPIT debe quedar bajo una cota LP de PCPSP porque PCPSP es el problema más rico, y así ocurre, por 365 unidades en 24,5 millones. La cota no necesita ningún solver LP: el algoritmo de multiplicador crítico (Chicoisne et al. 2012) resuelve la relajación LP de CPIT exactamente en O(mn log n) como una secuencia de clausuras máximas paramétricas, que es justo por qué un port en TypeScript puede re-resolver todo el problema en vivo en el navegador con un test de paridad que verifica que reproduce la cota de Python. Dos cotas corren en cada caso: una certificada pero FLOJA que relaja los recursos de a uno, y la cota CONJUNTA de Bienstock-Zuckerberg; la app muestra ambas y nombra cuál usó, porque la diferencia entre ellas es la parte de una brecha reportada que pertenece a la cota y no al plan. En una instancia de un solo recurso las dos coinciden a precisión de máquina, que es la verificación de corrección más fuerte del repositorio. Un surrogate aprendido de tiempo esperado produce un programa de calidad ExTS sin resolver ningún LP, que es lo que hace asequible un ensemble de incertidumbre, y se separa por semilla de DEPÓSITO en vez de por fila.

Indicadores Clave de Rendimiento

KPILínea BaseResultadoImpacto
Una instancia publicada, resuelta tal como se publicóInventar un escenario y reportar un VAN sin nada contra qué compararloMineLib newman1.cpit con sus propios 6 periodos, tasa 8% y 2 capacidades: rajo final 26.086.899 (coincidencia exacta), cota LP conjunta 24.486.184 vs 24.486.549 publicada; brecha 2,49% vs un 1,26% publicado, declarado no disimuladoLos números son verificables contra trabajo que no es mío, incluso donde el mío queda peor
Dos cotas, y la diferencia entre ellasUna cota, así una brecha reportada mezcla un plan débil con una cota flojaUna cota certificada pero floja de un recurso a la vez Y la cota conjunta de Bienstock-Zuckerberg en cada caso, ambas mostradas y nombrando la usada; coinciden a precisión de máquina en una instancia de un solo recursoUna brecha puede atribuirse al plan o a la matemática que la mide
Una hipótesis refutada, entregada como guardaReportar un peor caso como nota al pie y nunca decir cuándo ocurreEl peor caso del surrogate es 0,344; la explicación por arquetipo de cuerpo fue refutada por los depósitos held-out, y la lectura de escenario que sobrevivió se entrega como regla (tasa de descuento >= 0,15) que atrapa 5 de 5 fallas held-out, sin caso no marcado bajo 93%La advertencia viaja con el método donde se elige, no en una página de docs

Arquitectura

phaseflow pipeline

phaseflow pipeline

Stack Tecnológico

Python oreblocks NumPy TypeScript React Vite three.js MineLib

En acción

Un recorrido corto por la app en vivo: la interfaz real, grabada desde el sitio desplegado.

PhaseFlow, Programa de Producción de Rajo Abierto con Cota Certificada en acción

Capturas de la Aplicación

PhaseFlow, Programa de Producción de Rajo Abierto con Cota Certificada
PhaseFlow, Programa de Producción de Rajo Abierto con Cota Certificada