IA para Predecir el desgaste de liners y evitar paradas no programadas en molinos SAG

🧠 1. Objetivo: Indicador y Modelo Predictivo

El estudio tuvo como objetivo predecir el desgaste de los liners en molinos SAG, un proceso crítico para evitar paradas no planificadas y optimizar la eficiencia en operaciones de molienda. Para ello, se evaluaron diferentes enfoques de modelamiento, desde métodos simples hasta técnicas avanzadas de machine learning.

  • Indicador de interés: Desgaste en la altura del lifter y el espesor de la placa del molino SAG.
  • Modelos probados:
    • Regresión lineal simple y múltiple
    • Modelo cinético de primer orden
    • Árboles de decisión, Random Forest, XGBoost
    • Red neuronal tipo Multilayer Perceptron (MLP)
  • Mejor desempeño: XGBoost alcanzó un MAPE de 5.27% en escenarios de interpolación y 6.12% en extrapolación, mostrando su capacidad para generalizar.

📊 2. Fuentes de Datos

La base del estudio consistió en una recopilación robusta y diversa de datos operativos reales de plantas de procesamiento de minerales. Esta información permitió entrenar modelos tanto específicos por molino como generalizables.

  • Volumen del dataset: 143 inspecciones de desgaste correspondientes a 36 ciclos de liner en 10 molinos SAG distintos.
  • Variables clave: Alimentación, velocidad crítica, porcentaje de sólidos, potencia consumida.
  • Frecuencia y retos: Datos operativos por hora frente a mediciones de desgaste mensuales.
  • Solución aplicada: Interpolación PCHIP para generar estimaciones horarias suaves y evitar sobreajustes.

⚙️ 3. Proceso de Modelamiento Predictivo

El enfoque metodológico combinó modelos individuales con un modelo genérico, aplicando técnicas estadísticas, árboles de decisión y redes neuronales. Además, se utilizó análisis de componentes principales (PCA) para mejorar la robustez frente a multicolinealidad.

  • Fase 1: Limpieza del dataset y enriquecimiento con variables acumuladas.
  • Fase 2: Modelos individuales entrenados con los ciclos más largos por molino.
  • Fase 3: Modelo genérico con validación leave-one-out y pruebas en molinos no vistos.
  • Fase 4: Aplicación de PCA y normalización z-score para reducir dimensiones y mejorar estabilidad.
  • Evaluación de desempeño: Métricas MAE, RMSE y MAPE. Se usó SHAP para interpretar el impacto de cada variable en las predicciones.

🔍 4. Insights & Conclusiones

Los hallazgos demuestran que es posible construir modelos genéricos efectivos basados en datos operativos, aunque aún hay espacio para mejorar incorporando variables críticas que no estuvieron disponibles en el dataset original.

  • XGBoost superó a otros modelos, especialmente en generalización entre diferentes molinos.
  • Las condiciones operativas acumuladas (tiempo, alimentación, potencia) fueron los factores con mayor impacto en el desgaste.
  • Las variables de diseño (geometría del liner) mostraron menor influencia en el modelo genérico.
  • SHAP permitió entender de forma visual e intuitiva cómo cada variable influye en la predicción.
  • La falta de datos sobre propiedades del material del liner, dureza del mineral y características del medio de molienda limitó la capacidad predictiva total.

Conclusión & Siguientes Pasos

Este trabajo representa un avance significativo en la predicción de desgaste de liners usando machine learning, especialmente en contextos de múltiples plantas con condiciones operativas variadas. Sin embargo, hay claras oportunidades de mejora.

Diseñar una estrategia de recolección de datos más rica y frecuente para escalar la solución.

Incorporar datos sobre material del liner, tipo de bola y condiciones del mineral.

Explorar modelos híbridos combinando simulación física (DEM) con datos reales.

fuente: https://www.mdpi.com/2075-163X/14/12/1200

🧪 Procedimiento en Python (preprocesamiento + modelamiento + SHAP)

Diccionario de Variables

features_dict = {
«cumulative_feed»: «Toneladas totales alimentadas al molino»,
«cumulative_power»: «Potencia total acumulada (kWh)»,
«cumulative_solid_percent»: «Porcentaje de sólidos acumulado (%)»,
«cumulative_critical_speed»: «Velocidad crítica acumulada del molino (%)»,
«mill_diameter»: «Diámetro del molino (m)»,
«liner_face_angle»: «Ángulo del liner (grados)»,
«liner_height»: «Altura inicial del lifter (mm)»,
«operating_hours»: «Horas acumuladas de operación»,
«ore_type_code»: «Código de tipo de mineral (categoría codificada)»,
}

import pandas as pd
import xgboost as xgb
import shap
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_percentage_error
1. Cargar dataset
df = pd.read_csv(«sag_mill_wear_data.csv»)
2. Selección de variables predictoras y target
features = [
«cumulative_feed», «cumulative_power», «cumulative_solid_percent»,
«cumulative_critical_speed», «mill_diameter», «liner_face_angle»,
«liner_height», «operating_hours», «ore_type_code»
]
target = «liner_wear» # Variable objetivo (ej. desgaste en mm)
X = df[features]
y = df[target]
3. Separar data en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
4. Entrenar modelo XGBoost
model = xgb.XGBRegressor(n_estimators=100, max_depth=5, learning_rate=0.1, random_state=42)
model.fit(X_train, y_train)
5. Evaluación de desempeño
y_pred = model.predict(X_test)
mape = mean_absolute_percentage_error(y_test, y_pred)
print(f»MAPE: {mape:.2%}»)
6. Interpretabilidad con SHAP
explainer = shap.Explainer(model)
shap_values = explainer(X_test)
7. Visualización de importancia de variables
shap.summary_plot(shap_values, X_test, feature_names=features)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish
Scroll al inicio