La modélisation des procédés de fabrication se heurte à des difficultés lorsque les mesures sont effectuées sur des échelles de temps différentes. Une entreprise, par exemple, produit du verre contenant du SeO₂. La volatilité du SeO₂ à haute température de fusion entraîne une évaporation importante, capturée par un filtre à poussières. Or, ces poussières chargées de SeO₂ sont toxiques, ce qui pose des problèmes d'élimination. La prédiction de la teneur en SeO₂ dans ces poussières permet de les recycler dans le processus de fabrication, favorisant ainsi une production durable, circulaire et zéro déchet, tout en réduisant les coûts.
Le procédé de fabrication du verre fonctionne en continu, avec des relevés de capteurs effectués toutes les minutes pour les variables d'entrée. Cependant, la mesure de la teneur en SeO₂ dans la poussière est réalisée à des intervalles plus longs, ce qui nécessite une accumulation suffisante de poussière pour son homogénéisation. Dans cette présentation, nous démontrons le développement d'un modèle prédictif de la concentration de SeO₂ dans la poussière à partir d'un ensemble de données limité. Afin de garantir que les paramètres du procédé soient moyennés sur la durée de l'échantillonnage de la poussière, nous utilisons des simulations de Monte Carlo, en exploitant la variabilité de ces paramètres.
Avec JMP Pro, nous décrivons les méthodes de collecte et de préparation des données, ainsi que l'utilisation ultérieure de données simulées pour construire des modèles prédictifs de la concentration en SeO2. Nous explorons l'applicabilité potentielle de cette méthodologie aux industries confrontées à des défis similaires, telles que la chimie ou la biotechnologie, où la modélisation de processus présentant des échelles de temps et des incertitudes disparates est courante.
Bonjour. Je m'appelle Drejc Kopac, et voici le travail réalisé en collaboration avec mon collègue et co-présentateur, Matej Emin, et le professeur Philip Ramsey.
L'exposé porte sur la prédiction des effluents issus du processus de fusion du verre, et plus particulièrement sur la modélisation d'un processus continu avec un échantillonnage par lots épars de la poussière de filtre.
Ce projet a été réalisé en collaboration avec le plus grand fabricant de verre slovène, et son objectif était de construire un modèle prédictif de la composition des poussières de filtre afin de les recycler.
Pour commencer, visualisons ce que nous modélisons. Voici le schéma 3D d'un four de fusion du verre ; on peut en apprécier la taille par rapport à un être humain. La matière première est introduite dans le four et fondue, puis le verre obtenu s'écoule par des canaux vers la chaîne de production. On distingue deux échangeurs de chaleur où les gaz de combustion sont filtrés.
On observe également deux brûleurs, gauche et droit, qui s'activent alternativement. Cette périodicité induit une variabilité à court terme dans les données. Les conditions de fonctionnement de ce four et les propriétés des gaz de combustion sont essentielles à notre étude ; c'est sur ces aspects que nous concentrerons nos efforts.
Pour mieux comprendre, voici un schéma de procédé représenté selon les principes de l'économie circulaire. Comme mentionné précédemment, les gaz de combustion traversent l'échangeur de chaleur. Ils y sont refroidis, puis capturés par le filtre électrostatique. Là, ils sont à nouveau refroidis et mélangés à de l'hydroxyde de calcium, ce qui les purifie.
Les gaz de combustion épurés sortent du filtre par la cheminée, tandis que les particules de poussière sont collectées dans de grands sacs. C'est là que le bât blesse. Peut-on recycler ces 300 à 400 kilogrammes de poussière par jour dans le four plutôt que de les éliminer ? Pour ce faire, il est nécessaire de connaître la composition de la poussière du filtre. C'était l'enjeu principal de ce projet.
Le principal problème lié à cette poussière et à son recyclage est la présence de sélénium. Ce dernier agit comme décolorant du verre. Le dioxyde de sélénium étant volatil aux températures de fusion du verre, il s'évapore rapidement et est ensuite capturé par le filtre. Cette poussière de filtration est considérée comme un déchet dangereux, ce qui engendre des coûts d'élimination élevés. La question est donc de savoir s'il existe un moyen de recycler ces 300 à 400 kilogrammes de poussière produits quotidiennement dans le four. Il convient de préciser que cette quantité est relativement faible compte tenu des quelque 150 tonnes de verre fabriquées chaque jour.
Le problème est que la couleur du verre est extrêmement sensible à la concentration en sélénium. Il est donc nécessaire de connaître cette concentration avec une grande précision. Or, les mesures et l'analyse chimique de cette poussière sont coûteuses et chronophages. Une solution possible serait d'élaborer un modèle prédictif. Cependant, plusieurs obstacles se dressent sur ce chemin.
Tout d'abord, le processus de fabrication du verre est continu, avec des relevés de capteurs effectués toutes les minutes. Plus de 40 capteurs en ligne mesurent diverses températures, la consommation de gaz, la puissance du chauffage, le débit du bain de verre, etc. Le défi consistait à élaborer un modèle prédictif de la concentration de dioxyde de sélénium dans les échantillons de poussière, à partir d'un échantillonnage épars de poussière de filtre, en fonction de différentes échelles de temps pour cet échantillonnage et, bien sûr, en fonction de nombreux paramètres du processus.
Habituellement, lorsqu'on entame un projet de ce type, la démarche la plus courante consiste à collecter des données historiques, à se concerter avec les experts de l'entreprise, comme les responsables d'usines de traitement, afin de procéder à une première sélection des données et à un brainstorming. C'est ce que nous avons fait. Nous avons collecté des données historiques sur plus d'un an et nous avons cherché, avec l'aide d'experts du domaine, à identifier les paramètres influents.
Ici, à droite, un peu flou bien sûr, on peut voir un graphique multivarié typique illustrant les corrélations entre les paramètres. Ce graphique nous aide souvent à réduire le nombre de paramètres influents dans le modèle.
L'obtention de ces données, visualisables et analysables, est souvent longue, surtout lorsqu'il s'agit de données industrielles. Je vais vous montrer rapidement à quoi ressemblent les données brutes des rapports SCADA.
Voici, par exemple, un rapport type de l'entreprise pour une journée de données. Vous pouvez constater que les paramètres ne sont pas disposés en colonnes comme d'habitude, mais en lignes. En faisant défiler ces données, vous verrez que le nom du paramètre change chaque minute et que sa valeur est indiquée ici. En continuant à faire défiler, vous constaterez qu'il y a plus de 30, voire 40 paramètres, présentés en lignes au lieu de colonnes.
D'autre part, une seconde partie de cet ensemble de données est déjà organisée en colonnes. On constate ici que les paramètres y sont effectivement saisis. La difficulté consistait à réorganiser ou à reformater ces données pour les intégrer à JMP. Nous avons donc écrit un script JSL simple, que je vais vous montrer rapidement.
Ce script JSL (JMP Scripting Language) entre dans une boucle. Ici, les données sont collectées toutes les 24 heures, ce qui constitue un autre facteur de traitement. Le script parcourt l'ensemble de données, les dispose en colonnes, puis y ajoute les colonnes de la seconde partie de cet ensemble. Voici le script que nous avons utilisé. Au final, nous avons obtenu cet ensemble de données, ordonné comme d'habitude. Les colonnes contiennent tous ces paramètres, anonymisés bien sûr. L'intervalle est d'une minute. Il s'agit de la première partie. Comme je l'ai mentionné, parvenir à cette étape prend souvent un certain temps.
Il est important, dans un premier temps, de visualiser les données afin de mieux comprendre leur signification. Ici, nous observons un ensemble de graphiques X et Y. Ceux-ci mettent clairement en évidence la variabilité à court terme des données. Cette variabilité, représentée par des pics de 20 minutes, correspond à l'intervalle de 20 minutes entre deux inversions de la polarité du brûleur (gauche ou droite). La majeure partie de cette variabilité se produit durant cet intervalle. Cette information s'est avérée cruciale lors de l'échantillonnage des poussières du filtre.
Pour confirmer cette période de 20 minutes dans l'ensemble de données, nous avons utilisé la plateforme d'analyse de séries temporelles de JMP. Celle-ci a clairement mis en évidence cette périodicité et ce décalage de +/- 20 minutes dû à l'allumage du brûleur gauche ou droit. Ces données, combinées à d'autres informations clés telles que le temps de transition de l'effluent entre la fusion et le filtre (environ 15 secondes) et le temps d'extraction des poussières du filtre (environ une minute), ont permis par la suite de combiner les échantillons de poussières, les mesures et les paramètres du procédé. Ces étapes se sont avérées cruciales dès le départ, avant même le prélèvement des poussières.
En nous basant sur ces informations, notre expertise et les tests réalisés en interne, nous avons identifié le débit de filtration comme l'un des paramètres les plus influents sur la teneur en dioxyde de sélénium. Nous avons donc demandé au fabricant son plan de débit, établi un mois à l'avance, et sélectionné les dates optimales pour le prélèvement d'échantillons de poussière de filtre. Nous avons ciblé les valeurs minimales, maximales et intermédiaires de ces débits, afin de couvrir au mieux l'espace des paramètres.
Une fois les dates de fonctionnement de la chaîne de production connues, nous nous sommes rendus à l'usine pour prélever la poussière et l'homogénéiser. Cette poussière a ensuite été envoyée à un laboratoire externe pour une analyse ICP-OES afin de déterminer sa composition. Nous nous intéressions particulièrement à la teneur en dioxyde de sélénium.
Voici quelques photos illustrant le processus. À droite, vous pouvez voir une journée atypique dans le bureau d'un data scientist. Cette tâche a été réalisée en interne car elle constituait une étape cruciale pour obtenir des données de qualité. Nous ne voulions prendre aucun risque avec des échantillons mal manipulés, mal étiquetés ou autre.
Une fois les résultats reçus de l'institut externe, nous les avons intégrés à la base de données. Vous pouvez voir ici la base de données originale, à laquelle on trouve désormais une colonne intitulée « Résultats IGR ». Concrètement, cette colonne affiche, pour certaines périodes, les valeurs correspondant à la concentration de dioxyde de sélénium mesurée lors du prélèvement des poussières.
Une fois ces données recueillies, nous pourrons commencer la modélisation. Nous avons débuté avec un modèle très simple, utilisant neuf points de données pour la détermination du dioxyde de sélénium. Ces points de données sont très fiables, car la date et l'heure de prélèvement sont parfaitement connues et la poussière a été homogénéisée de manière constante.
De plus, cinq points de données supplémentaires étaient disponibles, obtenus grâce à divers prélèvements effectués en interne à l'aide de big-bags. Cependant, la durée de ces cinq points de données n'est qu'approximative en raison du faible volume de poussière prélevée dans les big-bags. Nous prévoyons que ces points de données induiraient une plus grande incertitude dans le modèle. Or, sans ces points supplémentaires, les modèles ne sont pas statistiquement significatifs. Il est donc nécessaire d'enrichir l'ensemble de données avec ces points.
Nous nous sommes concentrés sur trois paramètres d'entrée : le débit de gaz naturel, la vitesse d'extraction du verre et la puissance des résistances électriques. Ces paramètres ont été jugés les plus influents et ont présenté des valeurs relativement constantes durant l'échantillonnage. Il est à noter que nous avons retenu les valeurs médianes de ces paramètres sur la période d'échantillonnage des poussières.
Voici également les graphiques de ces paramètres aux dates de prélèvement des échantillons de poussière. Nous avons utilisé une méthode simple des moindres carrés pour la modélisation, en incluant les interactions du second ordre. Le modèle obtenu est le suivant. Je vous le présenterai dans JMP. Il s'agit des neuf points issus de notre propre échantillonnage de poussière et de cinq points supplémentaires provenant d'un échantillonnage par big-bag. C'est un modèle simple et précis, prenant en compte les interactions du second ordre.
Bien sûr, notre R² est bon, très proche de 1. La p-valeur est faible. On peut donc dire que ce modèle est statistiquement significatif. De plus, la p-valeur des facteurs est faible, ce qui signifie que tous ces facteurs sont importants. Cependant, les problèmes ou les limites de ce modèle simple apparaissent dans le profileur en bas de page. Je vais simplement dézoomer un peu.
Le principal problème, constaté également par les experts de l'entreprise, résidait dans la forte corrélation entre la teneur en dioxyde de sélénium, le débit de gaz naturel et la puissance du chauffage. Aux valeurs extrêmes de ces paramètres, on observe une surestimation ou une sous-estimation de la teneur en dioxyde de sélénium.
De plus, on constate, concernant le paramètre de taux d'extraction, qu'aux valeurs extrêmes, comme un taux d'extraction de 130 tonnes par jour, la marge d'erreur, ou l'incertitude, sur la prédiction du dioxyde de sélénium devient très importante. Ces limitations du modèle nous laissent penser qu'il n'est pas statistiquement significatif. En résumé, ce modèle simple n'a pas permis de prédire correctement les nouvelles mesures. Certaines prédictions étaient physiquement irréalistes.
Nous avons constaté que d'autres paramètres pourraient également influencer le niveau de dioxyde de sélénium, mais la taille réduite de l'ensemble de données ne nous a pas permis de les prendre en compte. Comme indiqué précédemment, le profil de prédiction a révélé d'importantes incertitudes aux valeurs extrêmes de l'espace des paramètres. Pour obtenir un modèle plus performant, il serait nécessaire d'intégrer davantage de paramètres de procédé.
Bien sûr, nous étions limités à neuf mesures seulement et nous ne souhaitions pas envoyer davantage d'échantillons de poussière pour analyse, car cela aurait été long et coûteux. Nous nous sommes demandé si les informations sur la variation du processus pouvaient enrichir nos données, car d'autres paramètres pourraient également avoir une influence.
Ici, nous avons commencé à raisonner en termes de variabilité des données. Tout d'abord, le dosage du dioxyde de sélénium effectué par le laboratoire externe présente une incertitude de mesure. Il s'agit déjà d'une variation de mesure que nous pouvons exploiter. De plus, pour chacun de ces intervalles d'échantillonnage de 20 minutes, nous disposons de 18 points de données issus de relevés de capteurs effectués toutes les 18 minutes, à l'exclusion des deux minutes correspondant à la commutation du brûleur. Ces 18 mesures présentent leurs distributions sous-jacentes. Je n'en présente ici que cinq à titre d'illustration.
Notre idée était que, compte tenu de cette distribution, nous avons utilisé les médianes car certaines distributions étaient légèrement asymétriques. À partir des dispersions de distribution, nous pouvons sélectionner aléatoirement des valeurs dans ces populations parentes et ainsi générer un ensemble de données synthétiques par une approche de Monte Carlo.
En collaboration avec des experts en processus, nous avons sélectionné 13 paramètres d'entrée parmi tous les paramètres de processus. Ces 13 paramètres étaient considérés comme les plus influents. De plus, leur distribution était normale, ou du moins approximativement normale, durant les périodes d'échantillonnage. Ils ne présentaient ni valeurs aberrantes, ni anomalies, ni dérives temporelles à court terme. Notre exigence initiale était de disposer de facteurs présentant une distribution régulière.
Un point crucial auquel nous devions veiller était de préserver les corrélations entre les facteurs, afin de maintenir les relations entre les paramètres du processus. Imaginez deux paramètres fortement corrélés : si l’on attribue aléatoirement une valeur élevée à l’un d’eux, l’autre paramètre, auquel on attribue également une valeur aléatoire, sera lui aussi influencé par des valeurs élevées. Ces corrélations entre paramètres devaient impérativement être préservées lors de la sélection aléatoire, dans le cadre de l’approche de Monte-Carlo. Nous avons réalisé cela grâce aux matrices de covariance.
Vous connaissez probablement cette méthode multivariée, l'analyse multivariée dans JMP. Je peux vous la montrer. Une fois les données nettoyées, pour chaque mesure de poussière, nous pouvons construire ces graphiques multivariés, que vous trouverez ci-joints. Neuf analyses multivariées ont été réalisées. Pour chacune d'elles, nous pouvons extraire la matrice de covariance. Celle-ci nous renseigne sur la corrélation entre les paramètres.
Pour chaque échantillon de poussière, la matrice de covariance correspondante est générée. Nous avons exporté ces matrices. Nous avons utilisé Python car NumPy propose une méthode appelée « multivariate normal ». Nous l'avons employée pour générer des distributions normales multidimensionnelles, en tenant compte de ces covariances. Il serait certainement possible de réaliser cela avec JMP via un script, mais Python nous a semblé plus simple car nous sommes plus habitués à utiliser ces méthodes dans ce langage.
Grâce à cela, nous pouvons générer un jeu de données synthétiques. Nous l'avons fait à partir de ces matrices. Cinq cents valeurs synthétiques ont été générées pour chaque échantillon de poussière sélectionné. Nous avons utilisé neuf points de données, soit neuf intervalles, issus d'échantillons fiables que nous avons collectés et homogénéisés nous-mêmes.
Nous avons également utilisé une mesure supplémentaire issue d'un échantillonnage en big-bag, présentant une très faible teneur en dioxyde de sélénium. Cette mesure était nécessaire pour étendre l'espace des paramètres aux faibles valeurs de dioxyde de sélénium. Je vais vous montrer à quoi cela ressemble.
Voici l'ensemble de données simulées ou synthétiques. Il comporte 5 000 lignes, soit 500 fois 10. Bien entendu, les corrélations entre les paramètres sont préservées. Nous l'avons vérifié. Cet ensemble de données est idéal pour une modélisation plus détaillée, car nous disposons désormais de suffisamment d'informations. Nous avons immédiatement pensé à le modéliser avec des réseaux de neurones. Nous l'avons fait, et les résultats ont montré un modèle statistique satisfaisant.
Nous utilisons un réseau de neurones simple avec trois fonctions tangente hyperbolique (TanH) et une couche cachée, ce qui représente une approche très simple. Les valeurs de R², tant pour l'entraînement que pour la validation, sont très élevées. Par ailleurs, nous avons divisé les 5 000 points de données en deux tiers pour l'entraînement et un tiers pour la validation. De plus, les graphiques « Valeurs réelles vs Valeurs prédites » montrent un modèle statistiquement significatif.
Nous avons ensuite exporté ce modèle. Revenons à JMP. Vous pouvez cliquer ici et enregistrer les formules de prédiction. Mais surtout… je reviens à la présentation. Plus important encore, nous souhaitions tester les prédictions de ce modèle avec d'autres données d'échantillonnage de type « big-bag » dont nous disposions. Nous utilisons ces données comme points de validation.
Voici une mesure réelle du dioxyde de sélénium, et voici sa valeur prédite. En reportant ces deux valeurs sur le graphique « Valeurs réelles/Valeurs prédites », nous avons constaté que le modèle prédit assez bien les autres mesures. Seuls deux échantillons d'un grand sac (le premier) présentent une légère surestimation. La droite « Valeurs réelles/Valeurs prédites » affiche un coefficient de détermination (R²) de 0,86 sur la base de ces mesures. Très satisfaits de ce résultat, nous l'avons ensuite présenté aux collaborateurs de l'entreprise.
Plus important encore, nous présentons ces données à l'aide de ce profileur. Ce dernier intègre un simulateur, accessible via le triangle rouge. Au lieu d'obtenir une simple valeur de la teneur en dioxyde de sélénium, actuellement prédite à partir de ces 13 paramètres de procédé, nous avons simulé la distribution de cette teneur en dioxyde de sélénium en tenant compte des incertitudes liées à ces paramètres lors du conditionnement. Nous avons ainsi déterminé la moyenne et l'écart type de ces paramètres sur cet intervalle. Grâce à ces valeurs, nous avons pu simuler la prédiction de la teneur en dioxyde de sélénium.
De plus, ce profileur révèle que les réponses sont plus complexes qu'une simple relation linéaire ou quadratique. De nombreuses interactions existent entre ces paramètres. Plus important encore, le simulateur de dispersion des prédictions nous a fourni cette distribution du dioxyde de sélénium dans ce lot, contenu dans ce grand sac. En effet, la plateforme de distribution de JMP a montré que la distribution normale à deux composantes est la plus adaptée à ce cas. Ce résultat nous a pleinement satisfaits, car il confirme la valeur mesurée ultérieurement.
L'étape cruciale que j'ai mentionnée précédemment consistait à prendre en compte les corrélations, c'est-à-dire la covariance entre les facteurs. Nous avons testé l'effet de l'absence de ces corrélations dans la simulation de Monte Carlo. Vous pouvez observer ici le graphique des valeurs réelles par rapport aux valeurs prédites pour les mêmes mesures, mais avec un jeu de données synthétiques simulé sans ces covariances. On constate que, tout d'abord, l'intervalle de prédiction du dioxyde de sélénium est irréaliste, il est trop large, et que les points sont également beaucoup plus dispersés.
En comparant les deux modèles, le modèle correct en bleu et le modèle incorrect en rouge (où la corrélation n'est pas prise en compte), on constate que le modèle bleu est nettement supérieur. Il fournit, de fait, des prédictions beaucoup plus réalistes pour le dioxyde de sélénium.
En conclusion, malgré un échantillonnage de poussière limité et un jeu de données initial restreint, nous avons élaboré un modèle prédictif utile pour la teneur en dioxyde de sélénium dans la poussière de filtre. L'approche de Monte Carlo s'est avérée la plus appropriée, compte tenu de la complexité du processus et de la rareté des données. De plus, la modélisation par réseau de neurones que nous avons utilisée était particulièrement performante. Nous avons également testé d'autres méthodes, mais le modèle par réseau de neurones s'est révélé supérieur car les paramètres, bien que peu corrélés, interagissent entre eux. Le réseau de neurones a ainsi permis de préserver ces interactions.
Le pouvoir prédictif du modèle a été testé avec de nouveaux prélèvements de poussière, et les résultats obtenus sont réalistes et utiles en pratique. La principale conclusion est que cette approche a permis de récupérer 100 % de la poussière de filtre usagée lors d'un essai pilote. Ainsi, 60 % d'une matière première coûteuse pour la décoloration du verre ont été remplacés, et les coûts d'élimination de cette poussière ont été totalement supprimés.
Voilà. Merci beaucoup.