Le séchage d'un produit en lit fluidisé à l'air non conditionné est un procédé complexe et imprévisible, notamment en raison de la variabilité des produits entrants. De ce fait, des réglages non optimaux ont été trop souvent utilisés, entraînant des retouches et de nombreux inconvénients, tels que des coûts supplémentaires, un surcroît de travail et une pression accrue pour respecter les délais de production. Les tentatives de modélisation du temps de séchage en fonction des conditions d'air et de température, dans le but d'optimiser les paramètres de séchage, n'ont connu qu'un succès partiel.
Cependant, une avancée majeure a eu lieu lorsque l'outil Functional Data Explorer de JMP Pro a été utilisé pour intégrer au modèle le profil de séchage de chaque produit durant les 15 premières minutes du processus. Les opérateurs peuvent ainsi prédire le temps de séchage minimal et ajuster les paramètres de la machine en conséquence. L'utilisation de FDE pour analyser l'impact des différents paramètres sur les résultats en cours de production s'est avérée extrêmement précieuse. Cette présentation sera utile à toute personne mesurant des informations de processus, en démontrant comment transmettre ces informations aux opérateurs afin qu'ils puissent ajuster les paramètres de la machine en cours de production et optimiser ainsi les résultats.
Bonjour et bienvenue à cette présentation. Je suis Jacob d'Olympic et je suis accompagné de mon collègue [inaudible]. Nous allons présenter l'optimisation en cours de processus d'un procédé de séchage à l'aide de Functional Data Explorer.
Nous commencerons par un aperçu du contexte du projet. Ensuite, [inaudible] vous présentera plus en détail les analyses statistiques de notre travail. Nous espérons que cela vous intéressera.
Tout d'abord, un petit mot sur Lundbeck. Lundbeck est une entreprise qui existe depuis 1915 et qui se consacre à la santé cérébrale. Nous nous intéressons donc à tout médicament qui contribue à restaurer la santé du cerveau.
Lundbeck emploie environ 5 400 personnes dans plus de 50 pays à travers le monde et possède une longue histoire. L'entreprise maîtrise l'ensemble de sa chaîne d'approvisionnement, de la production des principes actifs pharmaceutiques (API) jusqu'à la distribution en gros. Elle s'appuie également sur des partenaires CMO et de nombreux fournisseurs de matières premières. Nos produits sont commercialisés sur plus de 100 marchés à travers le monde, ce qui représente une chaîne d'approvisionnement relativement complexe.
Aujourd'hui, nous allons nous concentrer sur un projet que nous avons réalisé dans notre unité de production en grande quantité, qui produit environ 2,5 milliards de comprimés par an. Il s'agit d'un procédé de granulation, que je détaillerai dans un instant. Nous utilisons un procédé de granulation à lit fluidisé.
Avec un important renouvellement d'air extérieur, cet air est simplement filtré. Or, notre petite station météorologique locale nous apprend que les conditions météorologiques et la qualité de l'air varient considérablement en 24 heures.
Nos opérateurs ont rencontré des difficultés pour déterminer la durée optimale de leurs essais de fabrication afin de respecter nos spécifications internes. Quelques chiffres JMP sont affichés en haut à droite. À ce jour, nous avons constaté que 26 % des lots étaient non conformes à nos limites internes.
C'est un peu élevé. Nous avons commencé par chercher à atténuer ce problème et à aider nos excellents opérateurs à optimiser le processus.
En quoi consiste le procédé de granulation ou de séchage en lit fluidisé ? On dispose d'une poudre humide dans un lit fluidisé, puis on y insuffle de l'air. Cet air est chauffé à une température précise, puis une certaine quantité d'air traverse le lit fluidisé pour en extraire l'eau. L'air évacué est ensuite filtré, ce qui permet de conserver une partie de la poudre dans le lit fluidisé. On peut également procéder à une granulation. Ce n'est pas le cas ici, mais c'est une option envisageable.
Dans les versions plus récentes des lits fluidisés, un système de climatisation permet de réguler l'humidité de l'air entrant à un niveau précis. Cependant, dans notre configuration actuelle, cela est impossible, et des contraintes physiques empêchent même l'acquisition et l'installation de ce système.
Comme l'installation est un peu ancienne, nous avons dû installer nous-mêmes les capteurs pour obtenir suffisamment de données des machines. Sinon, tous les résultats seraient imprimés sur papier, ce qui n'est pas optimal pour notre projet.
De plus, nous avons rassemblé toutes les données nécessaires. Nous disposons des données relatives au lit fluidisé, des données météorologiques (ici à gauche) et des données de contrôle en cours de production. Notre objectif est de centraliser toutes ces données dans un lac de données.
De plus, nous avons créé une petite application permettant d'afficher les opérateurs et de réaliser les opérations d'affichage souhaitées. Il s'agit simplement du flux de toutes ces données.
Nous avons commencé avec un modèle simple où nous prédisions la durée en fonction des conditions météorologiques extérieures, mais ce modèle s'est avéré peu performant. C'est pourquoi [inaudible] va maintenant nous expliquer comment elle a utilisé l'explorateur de données fonctionnel pour nous aider à trouver une solution plus efficace.
Oui. Merci, Jacob. Nous aimerions avoir un schéma, une vue d'ensemble du système. Comme Jacob l'a mentionné, nous disposions d'une station météorologique qui pouvait nous fournir quotidiennement des informations sur les conditions météorologiques ou la qualité de l'air alimentant ce lit fluidisé.
À partir de là, nous pourrions estimer, par exemple, le temps nécessaire aux opérateurs pour régler la machine, faire des essais et granuler le produit afin d'atteindre la cible. Cependant, les variations saisonnières des conditions météorologiques posent de nombreux problèmes, tout comme certaines installations que nous devons éteindre ou mettre hors service en été ou en hiver, par exemple en raison du froid.
Nous avons constaté de fortes variations dans la qualité de l'air alimentant ce lit fluidisé. Il était assez difficile de prévoir les temps de séchage uniquement à partir des données fournies par… disons, la station météorologique située en contrebas.
Dans un premier temps, lors de notre investigation initiale, nous avons installé des capteurs IoT juste avant le lit fluidisé, au niveau de l'arrivée d'air. Nous avons également placé des capteurs au niveau du lit fluidisé (pour mesurer la température du produit) et d'autres encore à la sortie d'air.
Grâce à cela, nous pouvons mesurer directement les propriétés de l'air entrant dans le réservoir et sortant du lit fluidisé. Cela implique cependant un volume important de données, notamment des séries temporelles. Chacun de ces huit capteurs transmet des informations chaque seconde à notre lac de données.
Ensuite, vous devriez être en mesure de comprendre ce qui se passe pendant le séchage, quelle est la différence entre deux lots, et de recueillir davantage d'informations. L'objectif final était d'utiliser ces données pour mieux prédire le séchage dans cette configuration.
L'idée était simple. Nous avions une grande quantité de données historiques collectées dans notre lac de données, et nous souhaitions extraire toutes ces données, y compris les données IoT et les données météorologiques.
Nous souhaitions donc entraîner notre modèle, puis l'utiliser sur notre plateforme, que nous appelons « prod intelligence ». Le premier modèle consistait à collecter toutes les informations juste avant le début du séchage, puis à les transmettre au modèle. L'opérateur démarrait ensuite le processus en fonction de l'estimation que nous lui avions fournie.
Avant d'aller plus loin, examinons les données, ou plutôt les données IoT, dont nous disposons. Comme je l'ai mentionné, nous avons des données historiques collectées au cours de l'année écoulée. Nous disposons également d'informations IoT provenant de tous ces capteurs, mises à jour en continu.
Prenons un lot comme exemple. Lors du séchage, de l'air est insufflé dans le lit fluidisé, et ce flux d'air, de manière synchronisée, varie pour se maintenir en moyenne à la valeur cible définie.
Nous contrôlons également la température de l'air de séchage. Ainsi, vous pouvez observer l'augmentation de la température du produit au cours du processus, en fonction du temps écoulé depuis le début du séchage.
On constate alors que la température de l'air d'échappement augmente également pendant le séchage. C'est parfait. Comparons maintenant ce lot à un autre, par exemple. Je vais justement passer à un autre lot.
Voici un autre lot, comme vous pouvez le voir en rouge. On constate clairement que, malgré nos efforts pour maîtriser ce système, la procédure de séchage peut varier d'un lot à l'autre.
Cela peut varier considérablement en fonction de la température de l'air du séchoir. Le profil de séchage influe également, et cela se traduit par une augmentation de la température du produit et de celle de l'air d'échappement. Il est donc clair qu'il est impossible, même si vous pouvez utiliser vos données historiques et celles collectées juste avant le début du séchage, d'estimer plus ou moins votre objectif ou la durée de séchage nécessaire.
Si le processus présente une variation, vous ne la remarquerez pas tant que vous ne l'aurez pas lancé. C'est alors que vous pourrez dire : « D'accord, mon séchage suit une autre tendance, il me faut donc un autre profil. »
C’est pourquoi nous avons imaginé une deuxième façon d’utiliser les données recueillies pendant le séchage afin d’estimer les objectifs à atteindre pour obtenir le taux d’humidité relative final du produit conforme à nos spécifications.
L'idée était simple. Nous voulions lancer le processus et, pendant le séchage, collecter les données des huit capteurs. Nous attendions environ 15 minutes de données, puis les analysions ou les intégrions au modèle que nous avions développé. Au bout de 15 minutes, nous pouvions fournir une prédiction à l'opérateur : par exemple, la température cible à atteindre ou la durée d'arrêt après 10 minutes.
Cette prédiction repose désormais directement sur les performances du séchage et sur ce lot spécifique, et non sur une condition présupposée.
Pour ce faire… Je reviendrais à cette solution. L'avantage de JMP réside dans son outil très puissant d'analyse des données de séries temporelles, notamment grâce à l'explorateur de données fonctionnelles.
Malheureusement, cette fonctionnalité n'est disponible pour le moment, à ma connaissance, que dans le cadre de son développement. C'est un outil très puissant pour analyser les données de séries temporelles.
Par exemple, je vais examiner les différences entre les lots dans ce profil de séchage. J'utilise l'explorateur de données. Je souhaite analyser mon produit. J'ai le temps écoulé et, bien sûr, le lot (fonction IT).
Cette application me permet d'analyser l'historique de tous ces lots au fil du temps et d'en dégager une tendance générale. On peut ainsi facilement différencier les lots et comparer leurs profils individuellement.
Ce que je souhaite faire, c'est extraire la tendance ou le profil de chacun de ces signaux, puis l'utiliser comme entrée pour mon modèle afin de prédire la cible.
Comme je l'ai mentionné, dans ce cas précis, nous souhaitions collecter les données sur 50 minutes afin de prédire la valeur cible à partir de cette tendance ou de ce profil. Je devrais donc limiter la période d'analyse des données.
Cette fonctionnalité offre une option très pratique pour rogner vos données grâce à ce filtre. Par exemple, ici, je sélectionne une plage de 15 minutes. Je souhaite également restreindre légèrement la plage dès le départ afin d'obtenir des données plus propres avant l'analyse. Je vais donc me concentrer sur les données comprises entre 180 et 900 secondes.
Je l'ai ici. Ensuite, je souhaite analyser la tendance générale de tous ces lots. Je vais donc dans « Modèle » et effectuer une ACP fonctionnelle directe. Comme vous pouvez le constater, JMP recherche une tendance générale au sein de ces lots, l'affiche comme fonction principale, puis extrait cinq valeurs propres différentes, appelées fonction de forme, afin de caractériser la différence entre chaque lot par rapport au niveau moyen de tous ces produits.
Vous obtenez ainsi des informations très détaillées sur chaque lot, indiquant son écart par rapport à l'aspect moyen. Vous pouvez facilement expérimenter avec ces données : dans le profileur ci-dessous, vous pouvez manipuler tous les composants FPC extraits pour observer l'effet de chaque modification.
Par exemple, voici le temps écoulé. Je souhaite ensuite vérifier si la valeur du composant FPC 1 est plus élevée. Quel sera l'impact sur la température moyenne de mon produit, en termes de tendance ou de profil ? Et même si cette valeur devient négative, quel sera l'effet sur la température de mon produit ?
En termes simples, si la valeur de FPC1 est plus élevée, cela signifie que pendant cette période, le niveau moyen de la température du produit était plus bas, et si elle était plus négative, le niveau moyen était plus élevé.
On peut facilement observer l'effet de chacun de ces facteurs pris individuellement sur la température du produit, son évolution ou son profil au fil du temps. J'extrais ensuite ces composantes pour les utiliser comme données d'entrée de mon modèle, puis j'utilise ce modèle pour prédire la valeur cible.
Vous pouvez enregistrer le résultat sous forme de résumé ici. Ce résumé vous fournit des informations détaillées sur tous les composants FPC, comme ceux que j'ai ici. Il est ensuite associé au numéro de lot correspondant.
Comme vous pouvez le constater, pour chaque lot, j'obtiens désormais une valeur numérique pour chacun des composants FPC. Cette valeur me sert à élaborer mon modèle, car elle correspond directement à l'information extraite du profil de chaque signal. Grâce à cela, je peux déterminer la nature du signal. Mon nouveau lot présente des différences par rapport à la moyenne, et c'est en fonction de ces différences que je poursuis mon analyse.
Revenons en arrière pour voir si je vais modéliser cela. La méthode serait alors la suivante. J'ai simplement rassemblé toutes les composantes FPC de tous mes signaux, et à partir de là, c'est assez simple. Il suffit, par exemple, de construire votre modèle de régression général ou toute autre approche pour construire votre modèle.
Par exemple, j'avais la possibilité d'utiliser mon signal final, à savoir la prédiction de l'humidité relative. En entrée, je disposais de toutes les combinaisons possibles des différents composants du contrôleur de vol.
Je peux ensuite établir l'estimation finale, ou mon modèle final, afin de l'intégrer à mon système. C'est assez simple. Ce modèle, ou cette prédiction, repose directement sur le profil de tous les signaux collectés par les capteurs IoT, et nous définissons ensuite la cible en fonction de ces données.
À partir de là, il ne reste plus qu'à extraire le modèle. Après sa construction, il faut l'extraire et revenir à la première étape d'extraction. Mais comment extraire ensuite ce composant LPC pour un nouveau lot ?
Le principal problème est que je ne pourrai plus utiliser JMP par la suite. Dans ma configuration, je souhaite que tout soit opérationnel dans mon produit exécuté sur AWS ; je dois donc pouvoir extraire à la fois le modèle et le composant FPC.
L'extraction du modèle est assez simple, je peux donc m'en charger. En revanche, l'extraction précise des composants FPC s'avère complexe. Malheureusement, il n'existe actuellement aucune méthode directe pour extraire ces composants de JMP, car je souhaite en traiter un nouveau lot.
Avec ce nouveau lot, je souhaite estimer quel composant utiliser pour ce modèle. Il existe une méthode indirecte pour extraire ces composants, qui consiste simplement à revenir aux principes fondamentaux du calcul des composants FPC.
Si vous regardez… si je retrouve celui-ci, je pourrai peut-être le fermer. Oui, il est là. Si vous retournez au tableau que vous avez extrait des composants FPC, vous verrez qu'il y a une colonne qui indique le produit, c'est-à-dire la prédiction ou la façon dont le système tente de prédire le signal à l'aide de ce composant FPC.
Celui-ci est assez simple. Il tente de calculer une fonction moyenne sur l'ensemble des données, c'est-à-dire, dans notre cas, toutes les données historiques que nous avons saisies. Ensuite, il crée la fonction de forme, puis il ajuste cette fonction en fonction du lot afin de compenser les différences entre chaque lot et l'aspect moyen.
Ce que nous pouvons faire, c'est que nous disposons de données historiques et, sur la base de ces données, nous pouvons extraire la valeur moyenne au fil du temps, ainsi que la fonction de forme en fonction de cette évolution temporelle.
Une fois ces deux paramètres obtenus, nous pouvons les extraire et les intégrer à notre plateforme. Ensuite, à chaque nouveau lot, nous l'adaptons à ce modèle et calculons les composants FPC.
Comment procéder ? Je reviendrai sur ce cas précis. À chaque création du tableau, vous extrayez le résumé de votre composant FPC. Vous obtenez également la fonction de forme, même si elle est masquée ici. Si vous examinez les fonctions de forme, par exemple, vous verrez une équation sous-jacente qui calcule leur évolution dans le temps.
Ce que je souhaite faire, c'est extraire directement cette donnée. Je veux également extraire ma valeur moyenne et le profil au fil du temps. Je vais effectuer un nettoyage rapide pour simplifier les choses. C'est la dernière fois que je l'affiche.
Par défaut… et c'est un élément supplémentaire, je peux peut-être le supprimer. Par défaut, le tableau que vous extrayez calcule toutes ces fonctions de forme au centre de l'intervalle de temps que vous indiquez.
Je souhaite extraire les valeurs de la fonction de forme sur une période de 180 à 900 secondes, après avoir tronqué mes données. Il me suffit de mettre à jour cette colonne. Comme je souhaite obtenir des valeurs à partir de 900 secondes, je modifie simplement le temps écoulé pour obtenir les valeurs de ma fonction de forme au fil du temps.
Vous pouvez constater que vous pouvez utiliser exactement les mêmes entrées que celles affichées dans la première fenêtre. J'ai maintenant ces fonctions de mise en forme. Comment puis-je les utiliser ? Il me suffit de les compiler.
J'ai préparé un tableau de données. J'ai extrait les fonctions de forme, par exemple pour la température du produit, à partir des données historiques, et j'ai le temps écoulé. Un nouveau lot est arrivé. Je viens de l'ajouter à mon tableau. Bien sûr, sur la nouvelle plateforme, il s'agirait d'AWS. Tous ces calculs sont effectués.
Voici mon nouveau lot. Les informations du signal que j'ai obtenues pour des températures comprises entre 100 et 900 °C. En reprenant l'équation expliquée précédemment, je souhaite maintenant construire ce modèle puis extraire les composants du circuit imprimé flexible (FPC).
Ce que je fais, c'est que je commence par calculer la différence entre les signaux de chaque nouveau lot et les valeurs moyennes. On obtient ainsi la formule de la fonction minimum en extrayant le tableau d'Episcopal. Le résidu correspond simplement à la différence entre le signal et les valeurs moyennes calculées à partir des données historiques. À partir de là, il suffit de construire le reste du modèle, cette partie du modèle.
Faisons-le. J'ai construit ce qui représente mes résidus. Pour chacune de mes fonctions, je souhaite extraire les composantes FPC. Bien sûr, je ne veux pas d'ordonnée à l'origine. Je veux désactiver mon polynôme central pour m'assurer d'obtenir exactement la même extraction que pour l'autre fonction.
Ensuite, en exécutant ce programme et en examinant l'expression de chaque fonction de forme, vous obtenez un paramètre représentant vos composantes FPC. C'est ainsi que vous extrayez chacune de ces composantes à partir de chaque fonction de forme extraite des données historiques. Vous pouvez ensuite l'utiliser comme entrée pour votre modèle.
À chaque nouvel ensemble de données, à chaque nouveau lot, on tente d'ajuster le modèle, d'en extraire la composante FPC, puis de l'utiliser comme entrée. De cette manière, on devrait pouvoir obtenir l'estimation souhaitée pour chaque lot.
Malheureusement, comme je l'ai mentionné, extraire ces composants FPC n'est pas une méthode simple. Voici toutefois une solution possible. C'est ainsi que nous utilisons les fonctionnalités des composants FPC pour prédire les performances du système dans notre configuration.
La dernière diapositive est une conclusion générale. Il me semble assez clair, du moins dans notre cas, qu'il est très difficile de prédire l'état d'un système à partir de quelques entrées par défaut, compte tenu de toutes les variations auxquelles le système est exposé et de tout ce qui s'y produit.
Bien sûr, il est préférable d'intégrer une fonction de contrôle en ligne au système, si possible, mais sa mise en œuvre n'est pas aisée. La seconde option consiste à utiliser différentes fonctionnalités d'exploration, un outil précieux pour l'analyse des données de séries temporelles. Cependant, cette fonctionnalité est actuellement principalement disponible pour la configuration, et il est difficile d'extraire certains éléments de JMP.
La plupart des systèmes industriels n'ont peut-être pas la possibilité de se connecter directement à JMP. Cela limite considérablement les fonctionnalités de cette option proposée par JMP.
Mais cela nous a permis de mieux comprendre notre processus, d'un point de vue exploratoire. On a ainsi pu identifier précisément le problème et ce qui se passait pour chaque lot. Auparavant, on se contentait d'observer la moyenne. Maintenant, on voit vraiment…
Plus de détails.
Oui. Et les données de séries chronologiques. Du point de vue du processus, la partie analyse a été très intéressante.
Exactement. Oui. Sur ce, merci de votre attention et j'espère vous y voir nombreux.