15. Aplicaciones con bases en cálculo y optimización
¿Cómo paso de predecir a recomendar escenarios operativos?
Aplicaciones con bases en cálculo y optimización
Integramos sensibilidad, acumulación, modelos predictivos y función objetivo para explorar decisiones operativas.
1. Pregunta de planta
Esta unidad cierra el recorrido: usamos cálculo y optimización para pasar de diagnóstico a recomendación operacional.
Idea central: un modelo puede estimar recuperación o riesgo, pero la optimización pregunta qué combinación de variables conviene probar dentro de rangos seguros.
2. Aplicación con bases en cálculo
| Base de cálculo | Aplicación | Uso en decisión |
|---|---|---|
| Derivadas parciales | Sensibilidad de recuperación a cada variable. | Priorizar qué variable mover. |
| Gradiente | Dirección de mayor cambio. | Buscar mejora o evitar deterioro. |
| Integración | Efecto acumulado de aire o espumante. | Medir exposición sostenida. |
| Optimización | Maximizar recuperación penalizando riesgo. | Escenarios candidatos para evaluar. |
3. Excel: función objetivo integrada
La función objetivo combina beneficio y penalización.
Objetivo = recuperacion_estimada - penalizacion_por_riesgo
Ejemplo
=recuperacion_estimada - 0.20*score_riesgo
Restricciones de ejemplo
flujo_aire entre 130 y 170
nivel_celda entre 65 y 85
ph entre 9.5 y 11.0
dosificacion_espumante menor a 45
En Excel se puede usar Solver para maximizar esta función objetivo respetando restricciones.
4. Python: optimizar con un modelo predictivo
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
archivo = "flotacion_cobre.xlsx"
df = pd.read_excel(archivo)
features = ["flujo_aire", "nivel_celda", "ph", "dosificacion_espumante", "p80"]
X = df[features]
y = df["recuperacion_cu"]
modelo = RandomForestRegressor(n_estimators=300, random_state=42)
modelo.fit(X, y)
rangos = {
"flujo_aire": np.linspace(df["flujo_aire"].quantile(0.10), df["flujo_aire"].quantile(0.90), 10),
"nivel_celda": np.linspace(df["nivel_celda"].quantile(0.10), df["nivel_celda"].quantile(0.90), 10),
"ph": np.linspace(df["ph"].quantile(0.10), df["ph"].quantile(0.90), 6),
"dosificacion_espumante": np.linspace(df["dosificacion_espumante"].quantile(0.10), df["dosificacion_espumante"].quantile(0.90), 6),
"p80": [df["p80"].median()]
}
escenarios = []
for aire in rangos["flujo_aire"]:
for nivel in rangos["nivel_celda"]:
for ph in rangos["ph"]:
for esp in rangos["dosificacion_espumante"]:
for p80 in rangos["p80"]:
escenarios.append([aire, nivel, ph, esp, p80])
esc = pd.DataFrame(escenarios, columns=features)
esc["recuperacion_predicha"] = modelo.predict(esc[features])
esc["riesgo_simple"] = (
0.02*esc["flujo_aire"] +
0.04*esc["nivel_celda"] +
0.12*esc["dosificacion_espumante"]
)
esc["objetivo"] = esc["recuperacion_predicha"] - 0.20*esc["riesgo_simple"]
esc.sort_values("objetivo", ascending=False).head(10)
5. Cierre general del curso aplicado
La ruta completa queda conectada:
Estadística: detectar estabilidad y riesgo
Álgebra: organizar datos y construir modelos
Cálculo: medir sensibilidad, dinámica y optimizar escenarios
ML básico: aprender patrones y apoyar alertas
Advertencia profesional: una recomendación de IA no reemplaza criterio metalúrgico ni control operacional. Sirve para priorizar preguntas, escenarios y revisiones.
Mensaje final: la IA aplicada a minería se vuelve poderosa cuando la matemática ayuda a leer la planta, no cuando se usa como caja negra.
