Enfoque guía: Aplicaciones con base en cálculo y optimización
Recomendación de setpoints, entrenamiento del modelo y cierre del caso flotación
Ver concepto general MathPlay · Cálculo y optimización (MathPlay) →Aplicaciones con base en cálculo y optimización
Optimizar recuperación con restricciones, entrenar con gradiente y cerrar el piloto educativo
Idea central
El Módulo 3 aportó cómo cambia y cómo mejorar. Esta unidad cierra el ciclo: recomendación de setpoints + entrenamiento + gobernanza del piloto sobre el mismo CSV.
1. Optimización multi-criterio (demo)
max f(x) = recuperación estimada(x) sujeto a P(evento|x) ≤ p_max , x ∈ [límites planta]
| Objetivo | Herramienta M3 | Nota operativa |
|---|---|---|
| Subir recuperación | ∇f (unidad 9) | Palanca espumante β≈−0,27 |
| No disparar espuma | Restricción P(evento) | Capa unidad 13 |
| Respuesta en el tiempo | EDO dR/dt (unidad 10) | ¿Cuándo vuelvo a 85 %? |
| Buscar setpoint | Grid / Solver (unidad 12) | esp 28–40, pH 10–10,6 |
2. Entrenamiento = optimización de pérdida
min L(β) = (1/n) Σ (yi − Xiβ)²
OLS del soft sensor = solución analítica. Redes profundas = mismo principio con descenso por gradiente iterativo (∇L).
3. Gobernanza del piloto (obligatorio en planta real)
- Validación con metalurgista antes de recomendar setpoints.
- Umbrales revisados por turno; registro de acciones del operador.
- Re-entrenamiento programado si cambia mineralogía o reactivos.
- Prototipo educativo: no automatizar actuadores sin supervisión.
Cierre del curso (15 unidades): sobre-espumación en flotación de cobre explicada desde estabilidad hasta recomendación optimizada — mismo datos_flotacion_demo.csv, mismo razonamiento medible. Con datos reales y permiso de planta, escala a piloto industrial.
4. Python — recomendación simple
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
features = ["ph","p80_um","flujo_aire","dosif_espumante_ml_min",
"nivel_celda_pct","ley_cabeza_cu_pct"]
df = pd.read_csv("datos_flotacion_demo.csv")
X, y_rec = df[features].values, df["recuperacion_cu_pct"].values
y_evt = df["sobre_espumacion"].values
reg = LinearRegression().fit(X, y_rec)
clf = Pipeline([("s", StandardScaler()),
("m", LogisticRegression(max_iter=500, class_weight="balanced"))])
clf.fit(X, y_evt)
base = df[features].mean().values.copy()
best = None
for esp in np.arange(28, 40.5, 0.5):
x = base.copy()
x[3] = esp
p = clf.predict_proba(x.reshape(1,-1))[0,1]
rec = reg.predict(x.reshape(1,-1))[0]
if p <= 0.25: # restricción demo
if best is None or rec > best[0]:
best = (rec, esp, p)
print("Mejor esp (rec max, P(evento)<=0.25):", best)
5. Investigación final del curso
Informe de 1 página para 1 hora con evento=1: σ, P(evento), d, ŷ, setpoint sugerido y acción del operador. Entrega en Excel o Python.
Regístrate al boletín MathPlay
Datos, simulación, visualización, IA y tecnología aplicada a problemas reales de industria y minería.
Sin calendario fijo. Sin spam.
Listo. Te escribo cuando haya algo nuevo.
