EN
← Volver al Portafolio
Analítica Minera septiembre de 2026

OreFlow, un Circuito de Molienda y Separación Leído como un Solo Balance

En una planta de procesamiento, un cambio hecho en una etapa, una molienda más fina o un corte distinto del clasificador, mueve todas las etapas siguientes, y cada área reporta solo su parte. OreFlow mantiene el circuito como un solo balance: cada flujo lleva la masa de cada mineral en 63 clases de tamaño más agua, el circuito de molienda está cerrado (un molino de bolas de balance poblacional específico en energía con ciclones de Plitt), la separación pasa por bancos de flotación, una sangría gravimétrica, tambores magnéticos o deslamado, y cada unidad cierra dentro de 1e-9. Doce escenarios de mineral y planta redactados a mano con 96 variantes; el banco de trabajo vuelve a resolver el circuito en el navegador con cada cambio de control, y su optimizador y su incertidumbre con semilla también se ejecutan ahí, junto a ajustes cinéticos, sensibilidad de Sobol y cinco sustitutos aprendidos horneados. 52 muestras reales de mineral y las horas de una planta de hierro son fuentes del banco de trabajo. Escenarios redactados, no una planta calibrada.

Motor
Chancador de Whiten; molino de bolas de balance poblacional específico en energía con hidrociclones de Plitt, rebalse inferior retornado; bancos de flotación, sangría gravimétrica, tambores LIMS, deslamado; 63 clases de tamaño por mineral más agua; cada unidad cerrada dentro de 1e-9
Casos
12 casos redactados, 8 variantes cada uno (96: seis cambian una entrada, dos fijan el corte del clasificador), cuatro familias de circuito: rougher (cobre, zinc, níquel, otros minerales sulfurados u oxidados), gravimetría más rougher (oro libre), magnética (magnetita fina), deslamado más rougher (fosfato con lamas arcillosas)
Registros de método
Ajustes cinéticos; un optimizador de búsqueda por patrones con barrera progresiva sobre límites de recuperación, ley, energía, agua y reactivo, en vivo en el navegador; incertidumbre por hipercubo latino con semilla, en vivo con cualquier semilla; sensibilidad de Sobol (SALib); ablaciones de mecanismos; cinco sustitutos aprendidos evaluados por interpolación y dejando un caso fuera, con guarda de autoencoder; exportaciones ONNX reproducidas bit a bit en una nueva corrida
Compuertas
490 pruebas Python, 323 pruebas de frontend, 8 guardas, el chequeo de la página de casos de uso, una prueba de reglas de casos y una de afirmaciones del manuscrito, una compuerta de navegador de 924 chequeos (3 ventanas, 2 temas, 2 idiomas, teléfono y tableta) y 194 contra cada host público; un contrato de 791 sondas para validador, API y navegador
Verificado contra
Ejemplos publicados etiquetados como tales: Moly-Cop BallSim, ejemplos resueltos GMG Bond, el ejemplo gravimétrico de Laplante, las pruebas de magnetita de Zandrivierspoort
Despliegue
FastAPI y uvicorn en el VPS de ML (el sitio, registros de solo lectura, un endpoint de simulación validado por contrato) con un espejo en GitHub Pages; versión 0.07.000; MIT para el código y el contenido redactados; parte del hub Faena
Diagrama de arquitectura de OreFlow, un Circuito de Molienda y Separación Leído como un Solo Balance
#mineral-processing #grinding #flotation #mass-balance #population-balance #sobol #surrogates #onnx #mining #faena

Contexto de Negocio

OreFlow existe para mostrar que en un proceso minero una decisión local tiene efectos globales, así que se requiere una visión integral del circuito. Un punto de operación se elige contra los límites que todas las áreas poseen a la vez, y se verifica de nuevo con un mineral más duro y un corte desplazado del clasificador; el banco de trabajo mantiene el circuito en las unidades que cada área lee, toneladas por hora de metal, megawatts, metros cúbicos de agua y kilogramos de reactivo, para que el jefe de molienda, el jefe de flotación y el gerente de planta miren el mismo balance. El límite de evidencia está declarado en el sitio: los casos están redactados dentro de rangos con fuente, cada rango nombrando su fuente o marcado como redactado, y no son plantas calibradas; dos vías medidas, el dataset de partículas HZDR (RODARE 336) y 52 pruebas de ciclo cerrado GeoMet (Zenodo 7051975), se mantienen aparte del motor y no lo calibran; los puntajes con caso retenido de la vía aprendida acotan la transferencia entre plantas redactadas, no hacia plantas reales. Aplicarlo a una planta específica requiere las pruebas metalúrgicas de esa planta.

Valor Estratégico

El release 0.05.000 reconstruyó el motor como un simulador de diagrama de flujo de circuito cerrado y tamaño por mineral, y reconstruyó el producto sobre él. El release 0.06.000 actuó sobre una auditoría de su propia ciencia: las moliendabilidades minerales dejaban que un mineral masivo blando pasara por encima del índice de trabajo de Bond de la mena, subestimando la energía de molienda hasta 1,9 veces, y ahora cada caso nominal muele entre 0,83 y 0,91 de la eficiencia de Bond, sostenido por una prueba; revisar cada caso contra su fuente encontró siete fuera de los rangos que dan sus fuentes, no los tres que nombró la auditoría, y los siete se redactaron de nuevo dentro de ellos; cada rango de plausibilidad nombra ahora su fuente, y una prueba de afirmaciones sostiene el borrador de manuscrito contra los registros (el borrador anterior falla seis de sus siete pruebas). El release 0.07.000 (2026-09-30) completó el plan validado que la auditoría había encontrado pendiente: el optimizador y la incertidumbre en vivo, el corte del clasificador como control, las muestras reales y las horas de planta, la vía del sensor virtual, las ablaciones, y las páginas de Implementación y Experimentos con sus pestañas planificadas. Sus resultados se reportan tal como salieron: en el punto de operación del pórfido blando cada muestra real es más dura que el mineral para el que se dimensionó el circuito, así que el molino opera a potencia instalada y el motor queda 20,4 puntos bajo los ensayos medidos, donde la vía GeoMet basada en datos queda dentro de 5,1 a 5,5 puntos de RMSE; en la planta de hierro, el ensaye de la hora anterior supera a todo modelo; y el filtro aprendido costó 8,5% más evaluaciones del motor que la misma búsqueda sin él. El registro es medido y no declarado: 490 pruebas Python, 323 pruebas de frontend, ocho guardas de biblioteca estándar, el chequeo de la página de casos de uso, y una compuerta de navegador Playwright de 924 chequeos en tres ventanas, dos temas, dos idiomas y tamaños de teléfono y tableta, más 194 contra cada host público. Es el miembro de procesamiento de la familia Faena de aplicaciones mineras públicas y se ubica junto a los productos de una sola operación (ChancaDEM para chancado, ChargeCascade para la carga del molino, FrothSeg para la espuma) sin duplicarlos. El borrador de manuscrito reporta el estudio de sustitutos y no está depositado; la aceptación del diseño por su dueño no está registrada, y el sitio lo dice.

El Desafío

El área de molienda responde por el tonelaje y la energía por tonelada, la clasificación por la carga que envía adelante, la flotación por la recuperación y la ley del concentrado. La energía de una molienda más fina la reporta molienda; la recuperación que produce la reporta flotación. Las relaciones entre esas etapas están documentadas, energía contra tamaño de partícula, la partición de tamaños en el clasificador, la cinética de flotación y el balance de masa que cierra el circuito, pero cada área lee sus propios indicadores y una decisión tomada en una de ellas aparece como el número de otra. Un banco de trabajo que quiera seguir un ajuste a través de toda la planta tiene que llevar cada flujo completo, tamaño por tamaño y mineral por mineral, cerrar cada recirculación, y volver a resolver lo bastante rápido para usarse como instrumento y no como informe.

Nuestro Enfoque

El motor lleva cada flujo como la masa de cada mineral en 63 clases de tamaño más agua. Resuelve un chancador de Whiten, un circuito de molienda cerrado (un molino de bolas de balance poblacional específico en energía con hidrociclones de Plitt, con el rebalse inferior volviendo al molino), y la separación por bancos de flotación, una sangría gravimétrica, tambores magnéticos de baja intensidad o deslamado, cerrando cada unidad dentro de 1e-9. Doce casos redactados a mano en cuatro familias de circuito (rougher para cobre, zinc, níquel y otros minerales sulfurados u oxidados; gravimetría más rougher para oro libre; magnética para magnetita fina; deslamado más rougher para fosfato con lamas arcillosas), ocho variantes cada uno (seis cambian exactamente una entrada declarada, dos fijan el corte del clasificador y dejan que la molienda siga). Un port TypeScript del motor corre en un Web Worker y se mantiene dentro de 1e-6 del motor Python en las 96 variantes, así que el banco de trabajo vuelve a resolver el circuito con cada cambio de control: el diagrama de flujo con el flujo y la ley de cada corriente, las curvas de molienda y separación del estado actual, barridos de respuesta sobre cualquier par de entradas, y una vista de foco para un instrumento a la vez. Los registros de método: ajustes cinéticos; un optimizador de búsqueda por patrones con barrera progresiva sobre límites fijados para todas las áreas a la vez (recuperación, ley del concentrado, energía, agua, reactivo), escrito línea a línea en Python y TypeScript para que el navegador lo vuelva a ejecutar con cualquier peso sobre el metal recuperado; un registro de incertidumbre por hipercubo latino con semilla que el navegador vuelve a ejecutar con cualquier semilla y tamaño de muestra; sensibilidad de Sobol; ablaciones de mecanismos; y una vía aprendida de cinco sustitutos evaluados por interpolación y por dejar un caso fuera con una guarda de autoencoder. Fuentes reales acompañan a los casos redactados: las 52 muestras de ciclo cerrado GeoMet corren con sus propios ensayes, índice de trabajo de Bond y una mineralogía normativa limitada por azufre en el circuito del pórfido blando, junto a la recuperación medida, y las horas de una planta de mineral de hierro (CC0) con un sensor virtual de sílice para la hora siguiente. Un solo contrato de operación (791 sondas) sirve al validador, al endpoint de simulación FastAPI y al navegador. El motor se verifica contra ejemplos publicados (Moly-Cop BallSim, ejemplos resueltos GMG Bond, el ejemplo gravimétrico de Laplante, las pruebas de magnetita de Zandrivierspoort), etiquetados como ejemplos.

Indicadores Clave de Rendimiento

KPILínea BaseResultadoImpacto
Un solo balance para todo el circuitoCada área reporta sus propios indicadores; una decisión en una aparece como el número de otraCada flujo llevado como 63 clases de tamaño por mineral más agua; el circuito de molienda cerrado; cada unidad dentro de 1e-9; un ajuste seguido a través de todas las etapas siguientesMolienda, clasificación y flotación leen los mismos números
Un instrumento, no un informeUn circuito resuelto fuera de línea y resumidoUn port TypeScript en un Web Worker mantenido dentro de 1e-6 del motor Python en las 96 variantes vuelve a resolver el circuito con cada cambio de control; el optimizador y la incertidumbre con semilla también se ejecutan ahíAnálisis de escenarios en vivo, acotado, en el navegador
El límite, declaradoUn simulador presentado como una plantaCasos redactados dentro de rangos con fuente, cada rango nombrando su fuente; las vías medidas (HZDR RODARE 336, GeoMet Zenodo 7051975) separadas y no usadas para calibrar; los puntajes con caso retenido acotan la transferencia solo entre plantas redactadasUna planta específica necesita sus propias pruebas metalúrgicas, y el sitio lo dice

Arquitectura

oreflow pipeline

oreflow pipeline

Stack Tecnológico

Python NumPy SciPy SALib scikit-learn PyTorch ONNX FastAPI TypeScript React Vite uPlot KaTeX onnxruntime-web

Capturas de la Aplicación

OreFlow, un Circuito de Molienda y Separación Leído como un Solo Balance
OreFlow, un Circuito de Molienda y Separación Leído como un Solo Balance