Módulo 3 · Cálculo aplicado

12. Cálculo multivariable y técnicas de optimización

¿Qué combinación operativa mejora recuperación sin disparar riesgo?

Mate MathPlay · Flotación Cu · Archivo de trabajo: flotacion_cobre.xlsx

Flotación CuExcelPythonML básico

Cálculo multivariable y técnicas de optimización

Usamos funciones objetivo, restricciones y búsqueda de escenarios para conectar cálculo con decisión operativa.

1. Pregunta de planta

El cálculo multivariable y la optimización aparecen cuando queremos buscar una combinación operativa mejor, no solo describir lo que ya pasó.

Idea central: optimizar es buscar condiciones que aumenten recuperación y reduzcan riesgo, respetando restricciones de planta.

2. Matemática simple

Podemos pensar en una función objetivo:

Objetivo = maximizar recuperación - penalizar riesgo

Una versión simple:

J = Recuperación estimada - 0.20 * Score de riesgo

Y restricciones razonables:

flujo_aire entre mínimo y máximo operativo nivel_celda dentro de rango seguro pH dentro de rango metalúrgico espumante sin exceder límite operativo

3. Traducción operativa

ElementoEn matemáticaEn planta
Variables de decisiónx1, x2, x3...Aire, nivel, pH, espumante.
Función objetivoJ(x)Recuperación alta con riesgo controlado.
Restriccioneslímites de xRangos operativos y seguridad.
Óptimomejor valor encontradoSet point candidato para revisar, no orden automática.

4. Excel: ejercicio guiado

En Excel se puede crear una tabla de escenarios.

Recuperación estimada

=intercepto + b1*I2 + b2*J2 + b3*K2 + b4*L2

Objetivo penalizado

=recuperacion_estimada - 0.20*P2

Semáforo de restricción

=SI(Y(I2>=130,I2<=170,J2>=65,J2<=85,K2>=9.5,K2<=11),"Factible","Fuera de rango")
Con Solver de Excel se puede maximizar el objetivo cambiando aire, nivel, pH y espumante dentro de rangos permitidos.

5. Python: búsqueda simple de escenarios

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression

archivo = "flotacion_cobre.xlsx"
df = pd.read_excel(archivo)

features = ["flujo_aire", "nivel_celda", "ph", "dosificacion_espumante"]
X = df[features]
y = df["recuperacion_cu"]

modelo = LinearRegression()
modelo.fit(X, y)

# Crear escenarios alrededor de rangos observados
air = np.linspace(df["flujo_aire"].quantile(0.10), df["flujo_aire"].quantile(0.90), 8)
nivel = np.linspace(df["nivel_celda"].quantile(0.10), df["nivel_celda"].quantile(0.90), 8)
ph = np.linspace(df["ph"].quantile(0.10), df["ph"].quantile(0.90), 6)
esp = np.linspace(df["dosificacion_espumante"].quantile(0.10), df["dosificacion_espumante"].quantile(0.90), 6)

escenarios = []
for a in air:
    for n in nivel:
        for p in ph:
            for e in esp:
                escenarios.append([a, n, p, e])

esc = pd.DataFrame(escenarios, columns=features)
esc["recuperacion_estimada"] = modelo.predict(esc[features])
esc["penalizacion_riesgo"] = 0.02*esc["flujo_aire"] + 0.04*esc["nivel_celda"] + 0.12*esc["dosificacion_espumante"]
esc["objetivo"] = esc["recuperacion_estimada"] - 0.20*esc["penalizacion_riesgo"]

esc.sort_values("objetivo", ascending=False).head(10)
Advertencia profesional: este ejemplo sirve para aprender. En una planta real, cualquier recomendación debe validarse con metalurgia, control de procesos, seguridad y restricciones operativas.

6. Puente hacia Machine Learning

La optimización puede usar modelos predictivos como función interna: el modelo estima recuperación o riesgo, y luego buscamos el mejor escenario permitido.

from sklearn.ensemble import RandomForestRegressor

modelo_ml = RandomForestRegressor(random_state=42, n_estimators=200)
modelo_ml.fit(X, y)

esc["recuperacion_ml"] = modelo_ml.predict(esc[features])
esc["objetivo_ml"] = esc["recuperacion_ml"] - 0.20*esc["penalizacion_riesgo"]

mejores = esc.sort_values("objetivo_ml", ascending=False).head(10)
mejores
Lectura: ya no usamos ML solo para predecir. Lo usamos para explorar escenarios y apoyar decisiones.

7. Cierre del Módulo 3

Mensaje final: el Módulo 3 une sensibilidad, acumulación, dinámica y optimización. Con eso el alumno entiende que la IA industrial no empieza entrenando modelos complejos; empieza midiendo cómo cambia la planta y qué decisiones podrían mejorarla.

← Lección anteriorDescargar datosSiguiente lección →