El modelado de los procesos de fabricación presenta dificultades cuando las mediciones se realizan en diferentes escalas de tiempo. Una de estas empresas produce vidrio que contiene SeO₂, cuya volatilidad a altas temperaturas de fusión provoca una evaporación significativa, que se captura mediante un filtro de polvo. Para complicar aún más la situación, el polvo cargado de SeO₂ es tóxico, lo que dificulta su eliminación. Predecir el contenido de SeO₂ en el polvo permite reciclarlo en el proceso de fabricación, lo que promueve la producción sostenible, circular y sin residuos, así como la reducción de costes.
El proceso de fabricación de vidrio opera de forma continua, con lecturas de sensores de un minuto para las variables de entrada. Sin embargo, la medición del contenido de SeO₂ en el polvo se realiza a intervalos más largos, lo que requiere una acumulación suficiente de polvo para la homogeneización. En esta presentación, demostramos el desarrollo de un modelo predictivo para la concentración de polvo de SeO₂ utilizando un conjunto de datos limitado. Para garantizar que los parámetros del proceso se promedien a lo largo del muestreo de polvo, empleamos simulaciones de Monte Carlo, aprovechando la variabilidad de los parámetros del proceso.
Con JMP Pro, describimos los métodos de recopilación y preparación de datos, así como el uso posterior de datos simulados para construir modelos predictivos de la concentración de SeO₂. Exploramos la posible aplicabilidad de esta metodología a industrias que enfrentan desafíos similares, como la química o la biotecnología, donde es común modelar procesos con escalas de tiempo e incertidumbres dispares.
Hola. Mi nombre es Drejc Kopac y este es un trabajo realizado en colaboración con mi compañero de trabajo y copresentador, Matej Emin, y el profesor Philip Ramsey.
La charla trata sobre la predicción de efluentes del proceso de fusión de vidrio, centrándose en el modelado de un proceso continuo con muestreo por lotes dispersos de polvo de filtro.
Este proyecto se realizó en colaboración con el mayor fabricante de vidrio de Eslovenia y el objetivo era construir un modelo predictivo de la composición del polvo de un filtro para poder reciclarlo.
Para empezar, visualicemos lo que estamos modelando. Aquí está el esquema 3D de un horno de fundición de vidrio, y podemos ver su tamaño comparado con el de un ser humano. La materia prima entra al horno y se funde, y luego este vidrio fluye por los canales hasta la línea de producción. Podemos ver dos intercambiadores de calor donde los gases de combustión se intercambian con el filtro.
También podemos ver dos quemadores, izquierdo y derecho, que cambian periódicamente. Esta periodicidad induce una variabilidad a corto plazo en el conjunto de datos. Las condiciones de este horno y las propiedades de los gases de combustión son cruciales para nuestro trabajo, y en esto nos centraremos.
Para poner las cosas en perspectiva, aquí se presenta un esquema de proceso representado desde una perspectiva de economía circular. El gas de combustión, como se mencionó, pasa por el intercambiador de calor. Allí se enfría y luego es capturado por el filtro electrostático. En esta etapa, el gas se enfría aún más y se mezcla con hidróxido de calcio, que lo purifica.
Los gases de combustión limpios salen del filtro por la chimenea, mientras que el polvo se recoge en grandes bolsas. Aquí es donde entramos en materia. ¿Es posible reciclar estos 300-400 kilogramos de polvo diarios en el horno en lugar de desecharlos? Para reciclarlos, necesitamos conocer la composición del polvo del filtro. Esta fue la parte principal de este proyecto.
El principal problema con este polvo y su reciclaje es el selenio. Este actúa como decolorante del vidrio. El dióxido de selenio es volátil a temperaturas de fusión del vidrio, por lo que se evapora rápidamente y posteriormente es capturado por el filtro. Este polvo del filtro se trata como residuo peligroso, por lo que su eliminación es costosa. La pregunta es: ¿hay alguna manera de reciclar estos 300-400 kilogramos de polvo al día en el horno? Cabe mencionar que esta no es una cantidad enorme considerando las aproximadamente 150 toneladas diarias de vidrio que se fabrican.
El problema radica en que el color del vidrio es extremadamente sensible a la concentración de selenio. Esto significa que dicha concentración debe conocerse con bastante precisión. Las mediciones y el análisis químico de este polvo son costosos y requieren mucho tiempo. En este caso, la posible solución sería construir un modelo predictivo. Sin embargo, existen varios desafíos.
En primer lugar, el proceso de fabricación de vidrio es continuo, con lecturas de sensores de un minuto. Hay más de 40 sensores en línea que miden diversas temperaturas, consumo de gas, potencia del calentador, índice de acumulación de vidrio, etc. El reto consistía en construir un modelo predictivo del dióxido de selenio en la muestra de polvo, basado en un muestreo disperso de polvo de filtro, en diversas escalas de tiempo de este muestreo y, por supuesto, en numerosos parámetros del proceso.
Normalmente, al iniciar un proyecto como este, el enfoque más habitual es recopilar datos históricos, reunirnos con expertos de la empresa, como los gerentes de planta de proceso, y realizar la selección inicial de datos y la lluvia de ideas. Lo hicimos. Recopilamos datos históricos durante más de un año e intentamos identificar los parámetros influyentes con expertos en la materia.
Aquí, a la derecha, un poco borroso, por supuesto, podemos ver un gráfico multivariante típico que muestra las correlaciones de los parámetros. Este gráfico suele ayudarnos a reducir el número de parámetros influyentes en el modelo.
A menudo, obtener un conjunto de datos que se pueda visualizar y analizar requiere mucho tiempo, especialmente cuando se trata de conjuntos de datos industriales. Les mostraré brevemente cómo se ven los datos sin procesar de los informes SCADA.
Por ejemplo, este es un informe típico de la empresa para un día de datos. Puede ver que los parámetros no están en columnas, como es habitual, sino en filas. Si se desplaza hacia abajo, verá que el nombre del parámetro cambia cada minuto y que el valor se escribe aquí. Si se desplaza hacia abajo, verá que hay 30 parámetros (más o 40 pares) escritos en filas en lugar de columnas.
Por otro lado, hay una segunda parte de este conjunto de datos que, de hecho, ya está ordenada en columnas. Aquí pueden ver que los parámetros se introducen en columnas. El reto consistía en reordenar o reformatear este conjunto de datos para incluirlo en JMP. De hecho, escribimos un script simple, digamos, JSL. Les mostraré brevemente.
Este script de JSL, JMP, entra en este bucle. Aquí, cada 24 horas de datos es otro factor del proceso. Esto recorre el conjunto de datos y los coloca en las columnas, y luego adjunta las columnas de la segunda parte. Este es el script que usamos. Al final, obtuvimos este conjunto de datos, ordenado como de costumbre. En las columnas, todos estos parámetros están anonimizados, por supuesto. El intervalo es de un minuto. Esta es la primera parte. Como mencioné, llegar a esta etapa suele llevar bastante tiempo.
Inicialmente, es importante visualizar los datos para tener una idea de lo que podrían indicarnos. Aquí, podemos ver un conjunto de gráficos X e Y. Esto nos muestra claramente la variabilidad a corto plazo de los datos. Esta variabilidad a corto plazo, estos picos de 20 minutos, corresponden al intervalo de 20 minutos entre el cambio de lado del quemador, es decir, a la izquierda o a la derecha. La mayor parte de la variabilidad a corto plazo ocurre durante este intervalo de 20 minutos. Esta fue una información importante para nosotros al muestrear el polvo del filtro.
Para confirmar este período de 20 minutos en el conjunto de datos, utilizamos la plataforma de series temporales de JMP. Esta nos mostró claramente esta periodicidad y este desfase de +/- 20 minutos debido al encendido del quemador izquierdo o derecho. Junto con otros conocimientos especializados, como el tiempo de transición del efluente de la masa fundida al filtro, que es de aproximadamente 15 segundos, y el tiempo de extracción de polvo del filtro, que es de aproximadamente un minuto, se utilizó posteriormente para combinar muestras de polvo, mediciones y parámetros del proceso. Estos pasos fueron cruciales al principio, incluso antes de muestrear el polvo.
Con base en toda esta información, la experiencia en la materia y las pruebas previas realizadas internamente, uno de los parámetros más influyentes para el contenido de dióxido de selenio debería ser la tasa de extracción de vidrio. Por lo tanto, solicitamos al fabricante el plan de tasa de extracción, que se prepara con un mes de anticipación, y seleccionamos las fechas óptimas para el muestreo físico del polvo del filtro. Nos centramos en valores mínimos, máximos y, en cierto modo, medios de las tasas de extracción. Con esto, intentamos cubrir de forma óptima el espectro de parámetros.
Una vez que supimos las fechas en que la línea de producción operaría a dichas tasas de extracción, fuimos a la fábrica, recolectamos el polvo y lo homogeneizamos. Posteriormente, este polvo se envió al instituto externo, donde se realizó el análisis ICP OES para determinar la composición del polvo del filtro. Nos interesó especialmente el contenido de dióxido de selenio.
Estas son algunas fotografías del proceso. A la derecha, este no es un día típico en la oficina de un científico de datos. Pero esta tarea la realizamos nosotros mismos, ya que era un paso crucial para obtener datos de calidad. No queríamos arriesgarnos a que las muestras se estropearan o, no sé, se etiquetaran mal o algo similar.
Una vez recibidos los resultados del instituto externo, los incorporamos al conjunto de datos. Aquí puede ver el conjunto de datos original, pero ahora hay una columna llamada "Resultados IGR". Básicamente, en algunos momentos, aquí se muestran valores que corresponden al contenido de dióxido de selenio durante los momentos en que capturamos este polvo.
Una vez que obtengamos este conjunto de datos, podemos empezar a modelarlo. Empezamos con un modelo muy simple. Usamos nueve puntos de datos donde se determina el dióxido de selenio. Estos puntos de datos son muy... Tenemos mucha confianza en estos puntos de datos porque la fecha y la hora son perfectamente conocidas, y el polvo se homogeneizó de forma consistente.
Además, se disponía de cinco puntos de datos adicionales, obtenidos de varios muestreos de bolsas grandes realizados por el personal interno. Sin embargo, estos cinco puntos de datos solo tienen una determinación temporal aproximada debido al muestreo grueso del polvo de las bolsas grandes. Prevemos que estos puntos de datos generarían una mayor incertidumbre en el modelo. Sin embargo, sin incluir estos puntos adicionales, los modelos no son estadísticamente significativos. Debemos ampliar el conjunto de datos con estos puntos también.
Nos centramos en tres parámetros de entrada: el flujo de gas natural, la tasa de extracción de vidrio y la potencia de los calentadores eléctricos. Estos parámetros fueron considerados los más influyentes y mostraron valores prácticamente constantes durante el muestreo. Mencioné que tomamos la mediana de estos parámetros durante el período de muestreo de polvo.
Aquí también se muestran los gráficos de los parámetros en las fechas en las que se muestreó el polvo. Utilizamos un método simple de mínimos cuadrados estándar para el modelado e incluimos las interacciones de segundo orden. El resultado final fue el siguiente modelo, que mostraré en JMP. Estos son los nueve puntos obtenidos de nuestro propio muestreo de polvo y cinco puntos adicionales del muestreo con big bag. Este es un modelo simple y claro, que incluye las interacciones de segundo orden.
Por supuesto, podemos ver que nuestro R² es bueno, muy cercano a uno. El valor p es bajo. Se diría que este es un modelo estadísticamente significativo. Además, el valor p de los factores es bajo. Esto significa que todos esos factores son importantes. Pero el problema o las advertencias de este modelo simple se pueden ver en el perfilador aquí abajo. Voy a ampliarlo un poco así.
El principal problema, detectado también por expertos de la empresa, residía en la marcada relación entre el contenido de dióxido de selenio, el caudal de gas natural y la potencia del calentador. Si se llevan a los extremos de estos valores, se observa que el contenido de dióxido de selenio se sobreestima o se subestima.
Además, podemos observar en el parámetro de tasa de extracción que, si nos movemos a los extremos, como una tasa de extracción de 130 toneladas por día, el margen de error o la incertidumbre en la predicción del dióxido de selenio se vuelve bastante alta. Estas eran algunas advertencias del modelo que nos ayudarían a creer que no es un modelo estadísticamente significativo. Un modelo tan simple no predijo bien las nuevas mediciones. Hubo algunas predicciones físicamente irreales.
Observamos que otros parámetros podrían afectar el nivel de dióxido de selenio, pero no pudimos incluirlos debido a la escasez del conjunto de datos. Como se mencionó, el perfilador de predicción indicó grandes incertidumbres en valores extremos del espacio de parámetros. Para obtener un mejor modelo, necesitaríamos considerar más parámetros del proceso.
Pero, por supuesto, estábamos limitados a solo nueve mediciones y no queríamos enviar más muestras de polvo para el análisis porque requerían mucho tiempo y eran costosos. Nos preguntamos si la información sobre la variación del proceso podría aportarnos información adicional al conjunto de datos existente, ya que otros parámetros también podrían ser influyentes.
Aquí comenzamos a considerar la variabilidad de los datos. En primer lugar, la determinación de dióxido de selenio del laboratorio externo presenta una incertidumbre de medición. Esto ya constituye una variación en la medición, que podemos aprovechar. Además, para cada intervalo de muestreo de 20 minutos, hay 18 puntos de datos de lecturas de sensores de 18 minutos, excluyendo, por supuesto, dos minutos durante el encendido del quemador. Estas 18 mediciones tienen las distribuciones subyacentes. Aquí solo muestro cinco de ellas para que se vean mejor.
Nuestra idea era que, dadas estas medias de distribución, de hecho, usábamos medianas debido a que algunas distribuciones presentaban ligeras asimetrías. Dadas las dispersiones de distribución, podíamos seleccionar aleatoriamente valores de estas poblaciones originales y, así, generar un conjunto de datos sintéticos mediante un método de Monte Carlo.
Junto con expertos en procesos, consideramos 13 parámetros de entrada entre todos estos parámetros. Se consideró que estos 13 eran los más influyentes. Además, su distribución era normal, o al menos aproximadamente normal, durante los períodos de muestreo. No presentaron valores atípicos, artefactos extraños ni desviaciones temporales a corto plazo. Esta fue nuestra solicitud inicial: contar con factores con distribuciones adecuadas.
Un aspecto muy importante que tuvimos que tener en cuenta fue preservar las correlaciones entre los factores, es decir, mantener la relación entre los parámetros del proceso tal como está. Imaginen que, si tienen dos parámetros con una alta correlación, y si se selecciona un valor aleatorio de uno de ellos como muy alto, el otro parámetro, también seleccionado, también debería estar sesgado hacia valores más altos. Estas correlaciones de parámetros deben preservarse en la selección aleatoria, por supuesto, en el método de Monte Carlo. Lo hicimos mediante matrices de covarianza.
Probablemente conozca este método multivariante, el análisis multivariante en JMP. Puedo mostrárselo. Una vez depurado este conjunto de datos, para cada medición de polvo, podemos generar estos gráficos multivariantes, que se encuentran aquí. Se han realizado nueve gráficos o análisis multivariantes. Para cada uno de estos análisis, podemos extraer esta matriz de covarianza. Esto nos proporciona información sobre la correlación entre estos parámetros.
Para cada muestreo de polvo, se genera la matriz de covarianza correspondiente. Exportamos estas matrices. En este caso, usamos Python porque existe un método llamado "normal multivariante" en NumPy. Lo usamos para generar distribuciones normales multidimensionales, considerando dichas covarianzas. Estoy seguro de que esto también se podría hacer en JMP con algún script, pero para nosotros fue un poco más fácil hacerlo en Python porque estamos más acostumbrados a usar estos métodos.
Con esto, podemos generar un conjunto de datos sintéticos. Lo hicimos usando esas matrices. Se generaron quinientos valores sintéticos para cada muestra de polvo seleccionada. Usamos nueve puntos de datos, digamos nueve intervalos, de esas muestras confiables que recopilamos nosotros mismos y homogeneizamos.
Pero también usamos una medición adicional del muestreo en bolsas grandes, que tenía un contenido muy bajo de dióxido de selenio. Esto era necesario para ampliar el rango de parámetros hacia valores bajos de dióxido de selenio. Les mostraré cómo se ve esto.
Este es el conjunto de datos simulado o sintético. Pueden ver 5000 filas, es decir, 500 por 10. Por supuesto, se conservan las correlaciones entre los parámetros. Lo comprobamos. Digamos que este es un conjunto de datos muy útil para realizar un modelado más detallado, ya que ahora disponemos de suficientes datos. Inmediatamente pensamos en modelarlo con redes neuronales. Lo hicimos, y los resultados mostraron un buen modelo estadístico.
Utilizamos una red neuronal simple con tres funciones TanH y una capa oculta, lo que supone un enfoque muy sencillo. Los valores de R², tanto para el entrenamiento como para la validación, son muy altos. Por cierto, dividimos esos 5000 puntos de datos en dos tercios para el entrenamiento y un tercio para la validación. Además, los gráficos de valores reales y predichos muestran un modelo estadísticamente significativo.
Luego exportamos este modelo. Volvamos a JMP. Puede hacer clic aquí y guardar las fórmulas de predicción. Pero lo más importante... Regresaré a la presentación. Más importante aún, queríamos probar la predicción de este modelo con otros datos de muestreo de big bag que teníamos. Usamos esos datos de muestreo de big bag como puntos de validación.
Aquí tenemos una medición real de dióxido de selenio y este es el valor predicho. Al representar estos dos números en el gráfico de Actual vs. Predicho, observamos que el modelo predice otras mediciones con bastante precisión. Por lo tanto, solo una bolsa grande, es decir, dos muestras de esta bolsa grande, presentan una ligera sobreestimación. La línea de Actual vs. Predicho tiene un R² de 0,86 basado en estas mediciones. Estuvimos muy satisfechos con este resultado, y el siguiente paso fue presentarlo a la empresa.
Más importante aún, lo presentamos con este perfilador. En este perfilador, invocamos un simulador (puedes hacerlo bajo este triángulo rojo). Aquí, en lugar de tener un único valor de contenido de dióxido de selenio, que ahora se predice con base en estos 13 parámetros de proceso, intentamos simular la distribución de este dióxido de selenio utilizando las incertidumbres de estos parámetros de proceso durante el tiempo en que este contenido se introdujo en la bolsa grande. Aquí, determinamos la media y la desviación estándar de estos parámetros de proceso durante este intervalo. Con base en estos valores, pudimos simular la predicción del dióxido de selenio.
Además, en este perfilador podemos observar que las respuestas son más complejas que un simple comportamiento lineal o quizás cuadrático. Existen numerosas interacciones dentro de estos parámetros. Pero aún más importante, el simulador de dispersión de predicción nos proporcionó esta distribución de dióxido de selenio en este lote, en esta bolsa grande. De hecho, la plataforma de distribución de JMP nos mostró que la distribución normal de dos mezclas es la que mejor se ajusta a este caso. Estamos muy satisfechos con este resultado, ya que nos mostró que esta distribución coincide con el valor medido posteriormente.
El paso crucial que mencioné anteriormente fue considerar las correlaciones, es decir, la covarianza entre factores. Probamos qué sucede si no incluimos estas correlaciones en la simulación de Monte Carlo. Aquí pueden ver el gráfico de valores reales y predichos de las mismas mediciones, pero donde simulamos el conjunto de datos sintéticos sin usar estas covarianzas. Podemos observar que, en primer lugar, el alcance de esta predicción de dióxido de selenio es poco realista, demasiado amplio, y además los puntos están mucho más dispersos.
Al comparar ambos modelos, el correcto en azul y el incorrecto, donde no consideramos la correlación como válida para el rojo, podemos ver que el modelo azul es mucho mejor. Por supuesto, muestra predicciones mucho más realistas para el dióxido de selenio.
En conclusión, a pesar del escaso muestreo de polvo y del pequeño conjunto de datos inicial, obtuvimos un modelo predictivo útil para el contenido de dióxido de selenio en el polvo de filtro. Observamos que el método de Monte Carlo era el adecuado, considerando la complejidad del proceso y el escaso conjunto de datos. Además, el modelado de redes neuronales que utilizamos fue... También probamos otros métodos, pero el modelo de redes neuronales resultó ser mejor porque estos parámetros no están altamente correlacionados, pero interactúan entre sí. Por lo tanto, la red neuronal preservó estas interacciones.
La capacidad predictiva del modelo se probó con nuevas muestras de polvo, mostrando predicciones realistas y de utilidad práctica. La conclusión más importante es que este enfoque permitió recuperar el 100 % del polvo residual del filtro en un ensayo piloto. De esta manera, se reemplazó el 60 % de una costosa materia prima para la decoloración del vidrio y, por supuesto, se eliminó por completo el costo de la eliminación del polvo del filtro.
Eso es todo. Muchas gracias.