El proceso de secado de un producto en un lecho fluidizado con aire no acondicionado es complejo e impredecible, debido en parte a la variabilidad de los productos entrantes. Como resultado, se utilizaban con demasiada frecuencia ajustes no óptimos, lo que resultaba en repeticiones de trabajos y numerosos inconvenientes, como costes adicionales, trabajo extra y mayor presión para cumplir con los plazos de producción. Los intentos de modelar el tiempo de secado en función de las condiciones del aire y la temperatura, con el fin de optimizar los parámetros de secado, solo tuvieron un éxito parcial.
Sin embargo, se produjo un gran avance cuando se utilizó el Explorador de Datos Funcionales de JMP Pro para incluir en el modelo el perfil de secado de cada producto durante los primeros 15 minutos del proceso. Los operadores pudieron usar los resultados para predecir el tiempo mínimo de secado y ajustar la configuración de la máquina en consecuencia. El uso de FDE para comprender cómo los diferentes parámetros afectan los resultados durante el proceso ha sido extremadamente valioso. Esta charla será útil para quienes miden información de procesos, ya que demuestra cómo proporcionar esta información a los operadores para que puedan ajustar la configuración de la máquina durante el proceso y maximizar los resultados.
Hola y bienvenidos a esta presentación. Soy Jacob de Olympic y me acompaña mi colega [inaudible]. Presentaremos la optimización del proceso de secado con Functional Data Explorer.
Primero repasaremos los antecedentes del proyecto. Después, [inaudible] les explicará con más detalle lo que hemos hecho. Esperamos que les resulte interesante.
Primero, un poco sobre Lundbeck. Lundbeck es una empresa que existe desde 1915 y nos dedicamos a la salud cerebral. Por lo tanto, cualquier medicamento que restaure la salud cerebral.
Aproximadamente 5400 empleados en todo el mundo, presentes en más de 50 países. Y una trayectoria que se remonta a mucho tiempo atrás. Lundbeck cuenta con una cadena de suministro completa que abarca desde la producción de API hasta los mayoristas. Esto también incluye socios de CMO y numerosos proveedores de todos los materiales que entran. Nuestros productos están presentes en más de 100 mercados en todo el mundo. Por lo tanto, se trata de una cadena de suministro bastante compleja.
Hoy nos centraremos en un proyecto que hemos realizado en nuestra producción a granel, donde producimos aproximadamente 2500 millones de tabletas al año. El caso se describe en un proceso de granulación. Explicaré en qué consiste en un minuto. En él, intentamos granular utilizando un lecho fluidizado.
Con mucho aire que entra del exterior. El aire solo se filtra. Y sabemos, gracias a nuestra pequeña estación meteorológica local, que el clima y el aire cambian mucho en 24 horas.
Nuestros operadores han tenido problemas y están intentando determinar cuánto tiempo debo probar mi proceso o producto hoy para cumplir con nuestras especificaciones internas. Hay algunas cifras pequeñas de JMP aquí arriba. Pero en este momento, observamos que el 26 % de los lotes estaban por debajo de nuestros límites internos.
Eso es un poco exagerado. Empezamos por ver si podíamos mitigar este problema y ayudar a nuestros amables operadores a que el proceso funcionara con mayor fluidez.
¿Qué es el proceso de granulación o secado en lecho fluidizado? Tenemos polvo húmedo en un lecho y luego entra mucho aire. Calentamos el aire a una temperatura específica, lo pasamos y secamos el agua. Luego, el aire sale por filtros para no perder toda la potencia del fluido. También se puede realizar granulación. No es para este caso específico, pero podría ser una opción.
En las versiones más recientes de lechos fluidizados, se cuenta con una unidad de aire acondicionado que puede ajustar la humedad del aire entrante a un valor de consigna específico. Sin embargo, en la configuración actual, esto no es posible y, debido a limitaciones físicas, ni siquiera es posible comprarla e instalarla.
Debido a que la configuración es un poco anticuada, hemos tenido que instalar sensores nosotros mismos para obtener suficientes datos de las máquinas. De lo contrario, simplemente imprimirían todos los resultados en papel, y eso no es óptimo para lo que vamos a hacer.
Además, hemos recopilado todos los datos necesarios para realizar todo esto. Tenemos los datos del lecho fluidizado. Tenemos los datos meteorológicos aquí a la izquierda. También tenemos los datos de control del proceso. Nuestro objetivo es que todos esos datos se almacenen en un lago de datos.
Además, hemos creado una pequeña aplicación donde podemos mostrar los operadores según lo que queramos. Este es simplemente el flujo de todos esos datos.
Comenzamos con un modelo simple donde simplemente predijimos cuánto tiempo duraría, basándonos en el clima exterior, pero no resultó ser un buen modelo. Por eso, [inaudible] tomará el control y explicará cómo ha usado el explorador de datos funcionales para acercarnos a algo que nos está ayudando.
Sí. Gracias, Jacob. Queremos un esquema para ver todo el sistema. Como mencionó Jacob, teníamos una estación meteorológica que nos daba información diaria sobre el clima o el aire que llegaba a este lecho fluidizado.
Con base en eso, podríamos estimar, por ejemplo, el tiempo que necesitan los operadores para configurar la máquina y probar el granulado para alcanzar el objetivo. Sin embargo, existen muchos problemas con los cambios estacionales en las condiciones climáticas, y también debido a algunos servicios públicos, como el frío, que, por ejemplo, en verano o invierno, interrumpimos o desconectamos.
Había mucha variación en el aire que entraba en este lecho fluidizado. Fue bastante difícil predecir el tiempo de secado basándonos únicamente en los datos o la información que obtenemos de... diría que de la estación meteorológica de aquí abajo.
Como primer paso de la investigación, instalamos sensores IoT justo antes del lecho fluidizado, en el flujo de aire que lo alimenta. Además, se añadieron sensores al lecho fluidizado, como la temperatura del producto y el aire de escape.
Con esto, podríamos medir directamente las propiedades del aire que entra al tanque y sale del lecho fluidizado. Esto significa que disponemos de una gran cantidad de datos. Contamos con datos de series temporales. Cada uno de estos sensores, en total ocho, envía información cada segundo a nuestro lago de datos.
Con esto, deberías poder comprender, en primer lugar, qué sucede durante el secado. ¿Cuál es la diferencia entre un lote y otro? Además, recopilar más información. El objetivo final era usar estos datos para predecir mejor el secado durante esta configuración.
La idea era simple. Teníamos muchos datos históricos recopilados en nuestro lago de datos y luego queríamos extraerlos todos, incluyendo los datos del IoT y los meteorológicos.
Con eso, queríamos entrenar nuestro modelo y luego usarlo en nuestra plataforma, que llamamos inteligencia de producción. El primer modelo consistía en recopilar toda la información justo antes de comenzar el secado, introducirla en el modelo y, posteriormente, el operador comenzaría según la estimación que le habíamos proporcionado.
Antes de continuar, echemos un vistazo a los datos de IoT que tenemos. Como mencioné, se trata de datos históricos recopilados durante el último año. Además, tenemos información de IoT de todos estos sensores que se actualiza cada segundo.
Veamos un lote como ejemplo. Durante este secado, se inyecta aire en el lecho fluidizado y, de forma sincronizada, este flujo de aire sube y baja, manteniéndose en el promedio establecido.
También controlamos la temperatura del aire de secado. Esto significa que, durante el proceso, se puede observar cómo aumenta la temperatura del producto a medida que avanza. Esto se basa en el tiempo transcurrido desde el inicio del secado.
Luego también se puede ver cómo la temperatura del aire de escape aumenta durante el secado. Perfecto. Pero comparemos este lote con, por ejemplo, otro lote. Simplemente paso a otro lote.
Este es otro lote, como se puede ver en rojo. Vemos claramente que, aunque intentamos controlar este sistema, el proceso de secado puede variar de un lote a otro.
Puede variar mucho según la temperatura del aire de la secadora. También puede variar en el perfil de secado y se observa tanto en la temperatura del producto como en la del aire de escape. Esto demuestra claramente que no se pueden usar los datos históricos, ni los recopilados justo antes de iniciar el secado, para estimar aproximadamente el tiempo de secado objetivo.
Si hay una variación en el proceso, no la ves a menos que lo inicies. Entonces, con base en eso, dices: "Bueno, mi secado sigue otra tendencia, así que necesito otro perfil".
Es por eso que se nos ocurrió la segunda idea de cómo podemos utilizar los datos durante el secado para poder estimar cómo deberían ser los objetivos para alcanzar nuestra especificación de humedad relativa final del producto.
La idea era simple. Queríamos iniciar el proceso y, durante el secado, recopilamos datos de los ocho sensores. Esperamos aproximadamente 15 minutos para obtener los datos. Luego, los analizamos o los incorporamos al modelo que construimos. Después de 15 minutos, podemos proporcionar una predicción al operador. Ese objetivo es, por ejemplo, la temperatura de este sensor, o se debe detener después de diez minutos.
Esta predicción ahora se basa directamente en el rendimiento del secado y se basa en ese lote específico y no en alguna condición preestablecida.
Cómo hacerlo… Volvería a este. Lo bueno de JMP es que cuenta con una herramienta muy potente para analizar datos de series temporales, además del Explorador de Datos Funcionales.
Lamentablemente, esta funcionalidad solo está disponible por el momento, según tengo entendido. Es una herramienta muy potente para analizar datos de series temporales.
Por ejemplo, quiero ver la diferencia entre lotes en este perfil de secado. Tengo la función "Explorador de datos". Por ejemplo, quiero ver mi producto. Luego, tengo el tiempo transcurrido y, por supuesto, mi lote como función de TI.
Lo que hace esta aplicación es analizar el historial de todos estos lotes e intentar encontrar una tendencia general en su perfil. Se puede observar la facilidad con la que se pueden diferenciar los lotes y comparar los perfiles por separado.
Lo que quiero hacer es poder extraer la tendencia o el perfil de cada una de estas señales y luego usarlo como entrada para mi modelo para predecir cuál debería ser el objetivo.
Dado que, como mencioné, en este caso específico queríamos recopilar los 50 minutos de datos y, con base en esa tendencia o perfil, predecir cuál sería el objetivo, también debería limitar el período de tiempo en el que analizo los datos.
En esta función, tienes una opción muy útil para recortar tus datos con este filtro. Por ejemplo, en este caso, estoy viendo unos 15 minutos. También quiero limitarlo un poco desde el principio para asegurarme de que mis datos no estén demasiado limpios antes del análisis. Solo miraría los datos entre 180 y 900 segundos.
Lo tengo aquí. Luego, quiero ver cuál es la tendencia general en todos estos lotes. Voy al modelo y dirijo el PCA funcional. Con esto, como pueden ver, JMP intenta encontrar una tendencia general en todos estos lotes, la muestra como una función principal y luego extrae cinco valores propios diferentes, que se denominan función de forma para caracterizar la diferencia entre cada uno de estos lotes en comparación con el nivel promedio de todos estos productos.
Proporciona información muy útil sobre cada uno de estos... cuánto difiere cada lote del aspecto promedio. Puedes experimentar fácilmente con esto... en el perfilador de abajo, puedes experimentar fácilmente con todos los componentes FPC extraídos para ver el efecto de cada uno de estos cambios.
Por ejemplo, este es mi tiempo transcurrido. Quiero ver si tengo un componente FPC 1 más alto. ¿Cómo afectará esto a la temperatura promedio de mi producto con respecto a la tendencia o al perfil? Incluso si me acerco a números negativos, ¿cuál sería el efecto en la temperatura de mi producto?
Tan simple como decir que si voy más alto con FPC1, significa que durante este período, más o menos mi nivel promedio de temperatura del producto fue más bajo, y si fue más negativo, el nivel promedio fue más alto.
Se puede ver fácilmente el efecto de cada uno de estos factores por separado en el resultado general de la temperatura del producto, la tendencia o el perfil a lo largo del tiempo. Ahora, al extraer estos componentes, puedo usarlos como entrada para mi modelo y luego usarlo para predecir el objetivo.
Tiene la opción de guardar el resultado como resumen aquí, lo que le proporciona una información muy útil sobre todos los componentes FPC que, por ejemplo, tengo aquí. Luego, por supuesto, se asocia con el número de lote diferente.
Como pueden ver aquí, para cada lote, obtengo un número para cada uno de estos componentes FPC. Esta será mi información para construir mi modelo, ya que extraigo directamente del perfil de cada señal. Con base en esto, sé cómo son. Mi nuevo lote varía del promedio y, en función de eso, sigo adelante.
Volvamos a ver si voy a modelar eso. ¿Cómo sería entonces? Reuní todos los componentes FPC de todas mis señales, y a partir de aquí es bastante fácil. Por ejemplo, solo necesitas construir tu modelo de regresión general o cualquier otro enfoque para construir tu modelo.
Por ejemplo, aquí, tenía la opción sencilla de obtener mi señal final, que era la que quería predecir mi humedad relativa. Como X, tenía como entrada la combinación de los diferentes componentes de FC.
Luego, podría elaborar la estimación final o mi modelo final para poder incorporarlo a mi sistema. Es bastante sencillo. Ahora bien, todo este modelo o predicción se basa directamente en el perfil de todas estas señales que recopilamos de los sensores del IoT, y luego, en función de eso, establecemos el objetivo.
A partir de este punto, lo único que importa es extraer el modelo. Tras la compilación, debemos extraerlo y volver a la primera extracción. Pero entonces, ¿cómo puedo extraer este componente LPC para un nuevo lote?
El mayor problema es que ya no puedo usar JMP después. En mi configuración, quiero tener todo en orden en mi producto, que se ejecuta en AWS, así que necesito poder extraer tanto el modelo como el componente FPC.
La extracción del modelo es bastante sencilla, así que puedo hacerlo. Pero el problema es que la extracción exacta de los componentes FPC es bastante difícil. Desafortunadamente, actualmente no hay una forma sencilla de extraer estos componentes de JMP porque ahora quiero tener un nuevo lote.
Ahora, con este nuevo lote, quiero estimar cuál es mi componente para usar este modelo. Existe una forma muy indirecta de extraer estos componentes: simplemente volviendo a los fundamentos de cómo se calculan estos componentes FPC.
Si revisas... si encuentro este, quizás lo cierre. Sí. Está aquí. Si regresas a la tabla que extrajiste de los componentes FPC, verás que hay una columna que muestra el producto, como la predicción, o cómo intenta predecir la señal usando este componente FPC.
Este es bastante sencillo. Intenta construir una función media para todos los datos, que en nuestro caso fueron todos los datos históricos que introdujimos. Luego, crea la función de forma y la ajusta según el lote para compensar la diferencia entre cada lote y el aspecto promedio.
Lo que podemos hacer es tener datos históricos y, en base a ellos, podemos extraer el valor medio a lo largo del tiempo y también podemos extraer la función de forma en función del tiempo con base en estos datos históricos.
Una vez que tenemos estos dos parámetros, podemos extraerlos y colocarlos en nuestra plataforma. Cada vez que llega un nuevo lote, intentamos ajustarlo a este modelo y calcular los componentes FPC.
Cómo podemos hacerlo. Volveré a este caso. Cada vez que creas la tabla, extraes el resumen de tu componente FPC. De hecho, también obtienes la función de forma. Simplemente está oculta aquí. Todas estas... si observas las funciones de forma, por ejemplo, verás una ecuación al final que intenta calcular la función de forma a lo largo del tiempo.
Lo que quiero hacer es extraer directamente este. También mi valor medio y extraer el perfil a lo largo del tiempo. Permítanme hacer una limpieza aquí para que sea más fácil. Esta es la última vez, así que simplemente lo mostraré.
Por defecto… y esto también es adicional, quizás pueda eliminarlo. Por defecto, la tabla que extraes calcula toda esta función de forma en el centro del rango de tiempo que estás ingresando.
Lo que quiero hacer es extraer esta función de forma de 180 segundos a 900 segundos, tras haber recortado mis datos. Puedo actualizar fácilmente esta columna. Como quiero que sea de 900 segundos, simplemente actualizo el tiempo transcurrido y puedo obtener fácilmente los números de mi función de forma a lo largo del tiempo.
Como pueden ver, pueden tener exactamente la misma entrada que, por ejemplo, vieron en la primera ventana. Ahora tengo estas funciones de forma. ¿Cómo puedo usarlas? Simplemente intento compilarlas todas juntas.
Tengo una tabla de datos preparada aquí. Extraje estas funciones de forma, por ejemplo, para la temperatura del producto, basándome en los datos históricos, y tengo el tiempo transcurrido. Ahora llegó un nuevo lote. Acabo de añadirlo a mi tabla. Por supuesto, en la nueva plataforma, estaría en AWS//. Realiza todos estos cálculos.
Ahora tengo mi nuevo lote. La información de la señal que obtuve para temperaturas adicionales entre 100 y 900. Volviendo a la ecuación que expliqué antes, quiero construir este modelo y luego extraer los componentes FPC.
Lo que hago simplemente es, primero, calcular la diferencia entre las señales del nuevo lote en cada momento y los valores promedio. También se obtiene esta fórmula de función mínima como resultado de la tabla extraída de Episcopal. El residuo es simplemente la diferencia entre la señal y los valores promedio calculados con base en las fechas históricas. Con esto, solo se necesita construir el resto del modelo, esta parte del modelo.
Hagámoslo. Lo que construí son mis residuos. Para cada función, quiero extraer los componentes FPC. Claro que no quiero tener ninguna intersección. Quiero desactivar mi polinomio central para asegurarme de obtener exactamente la misma extracción que el otro.
Al ejecutar esto y observar la expresión para cada función de forma, se obtiene un parámetro que representa los componentes de FPC. Así se extraen estos componentes según la función de forma extraída de los datos históricos. Después, se utilizan como entrada para el modelo.
Cada vez que llega un nuevo conjunto de datos, un nuevo lote, se intenta ajustarlo, extraer el componente FPC y luego introducirlo como entrada para el modelo. Con esto, se debería poder alcanzar la estimación necesaria en función de cada uno.
Lamentablemente, como mencioné, esta no es una forma sencilla de extraer estos componentes FPC. Sin embargo, es una forma de hacerlo. Así es como abordamos el uso de la funcionalidad de los componentes FPC para predecir el rendimiento del sistema en nuestra configuración.
La diapositiva final es una conclusión general. Creo que está bastante claro, al menos en nuestro caso, que es muy difícil predecir el estado de un sistema basándose en unas entradas predeterminadas, considerando toda la variación a la que está expuesto el sistema y todo lo que ocurre en él.
Claro que es mucho mejor incorporar la posibilidad de un control en línea en el sistema, si es posible, pero no es fácil. La segunda opción es que esta funcionalidad para explorar de forma diferente sea una excelente herramienta para analizar datos de series temporales. Sin embargo, actualmente está disponible principalmente para la provisión, y no es fácil extraer algunos de los elementos presentes de JMP.
La mayoría de los sistemas industriales quizás no puedan conectarse directamente a JMP. Esto limita considerablemente la funcionalidad de esta opción disponible en JMP.
Pero nos ha dado una gran perspectiva de nuestro proceso desde la perspectiva de un explorador. Dónde estaba realmente el problema y qué sucedía con cada lote. Antes, solo observábamos el promedio o algo similar. Ahora vemos...
Más detalles.
Sí. Y los datos de series temporales. Desde el punto de vista del proceso, ha sido muy interesante ver la parte analítica.
Exactamente. Sí. Gracias por escuchar y espero verlos a todos allí.