Optimisation de l`engagement des opérateurs dans un
Transcription
Optimisation de l`engagement des opérateurs dans un
Optimisation de l’engagement des opérateurs dans un atelier de peinture d’une chaîne de montage automobile Jean-Baptiste Pons1, Alain Nguyen2 1 Université de Bordeaux, F-33000 Bordeaux, France [email protected] 2 RENAULT Direction Informatique / pôle optimisation, 13 Avenue Paul Langevin (API : EQV NOV 3 88) 92359 LE PLESSIS ROBINSON CEDEX, France [email protected] Mots-clés : optimisation, atelier, automobile. 1 Problématique métier Sur une chaîne de fabrication automobile, au sein de la ligne de peinture, les orifices creux en dessous du véhicule sont remplis de cire par des opérateurs, à l’aide de buses. Cette opération est destinée à la protection anti corrosion et à l’étanchéité de la caisse. Ces parties creuses (ou trous) peuvent être remplies avec différentes qualités de cire, ce qui nécessite l’utilisation de buses dédiées. Pour remplir un trou, l’opérateur se déplace vers la table des buses, prend la buse idoine, remplit tous les trous associés à cette buse, puis revient à la table déposer la buse, avant de prendre la buse suivante. Le chef d’atelier doit affecter une liste de trous à chaque opérateur, en s’efforçant de minimiser le nombre d’opérateurs, de lisser la charge de travail entre les différents opérateurs et de faire en sorte que l’ensemble des tâches de chaque opérateur soit réalisé dans le temps de cycle, i.e. temps maximal autorisé pour traiter un véhicule. Le chef d’atelier cherche également à minimiser le temps de travail non productif, à savoir les temps de déplacement (par opposition aux temps opératoires de remplissage des trous). Enfin de manière qualitative, le chef d’atelier privilégie des trajectoires de déplacements d’opérateurs qui soient ergonomiques, compte tenu de la configuration de la ligne de peinture. Les temps de déplacement inter-trous sont liés à la distance entre les trous et à des pénalités en temps lorsque les trous appartiennent à des zones différentes. 2 Méthode de résolution Le problème a été résolu en utilisant une approche apparentée à de la génération de colonnes [1], chaque colonne représentant la liste ordonnée des trous affectés à un opérateur. Les colonnes sont générées par une énumération des combinaisons de trous affectables au même opérateur. Pour ce faire, on parcourt un arbre en profondeur d’abord, en partant d’une colonne vide à la racine, et où à chaque nœud, on rajoute une liste de trous à la colonne en cours de génération, en respectant les nombreuses contraintes métier ci-dessous : affectation au même opérateur de tous les trous utilisant la même buse (car chaque buse est unique), temps maximal alloué à chaque opérateur (afin de lisser la charge de travail entre opérateurs en limitant l’activité de l’opérateur le plus chargé) nombres maximaux de buses et de trous affectés à un opérateur (afin de limiter les temps de déplacement) interdiction de déplacements entre certaines parties de la sous-caisse, pour des questions de sécurité (l’opérateur ne peut pas passer totalement en dessous du véhicule). Ces contraintes, en réduisant fortement la combinatoire, ont permis de générer exhaustivement les meilleures colonnes satisfaisant à toutes les contraintes métier, dans un temps compatible avec l’utilisation de l’outil. A chaque noeud, on détermine l’ordre des trous pour la colonne en cours de génération, en calculant le plus court chemin (sans cycle) en temps entre ces trous. Ce plus court chemin a été calculé par un algorithme génétique (nous avons retenu cet algorithme pour prendre en compte plus facilement le calcul complexe des temps de déplacement lors des changements de buse, changements qui nécessitent un aller-retour de l’opérateur vers une table fixe à partir d’un véhicule en mouvement). On abandonne la colonne en cours si le temps nécessaire à réaliser l’ensemble des déplacements et des opérations associées à la colonne dépasse le temps maximal alloué à chaque opérateur. Une fois toutes les colonnes générées, un programme linéaire en nombres entiers permet de trouver les N colonnes de coût minimal (le programme itère sur des valeurs croissantes de N jusqu’à trouver une solution). Sur le modèle de véhicule traité (50 trous), 600 000 colonnes sont énumérées en 3 secondes et le problème maître de sélection des colonnes de coût minimal est résolu à l’optimum en 20 secondes avec CPLEX 12.4, le tout sur un serveur Intel 4-Core i7 – 2.93 Ghz. Le chef d’atelier a demandé que l’outil produise plusieurs solutions diversifiées, pour explorer des trajectoires de déplacements d’opérateurs très différenciées. Pour ce faire, le PLNE est lancé P fois (si l’utilisateur souhaite générer P solutions) avec après chaque exécution, l’ajout d’une contrainte pour interdire l’apparition de sous-groupes de trous présents dans les solutions précédentes. Cette procédure a permis de produire des solutions suffisamment diversifiées pour les utilisateurs. 3 Conclusions et perspectives Les résultats de l’outil ont véritablement aidé le chef d’atelier de l’usine pilote à construire l’engagement de ses opérateurs suite à un changement de cadence sur la chaîne. Nous envisageons de traiter prochainement l’atelier de mastic (autre atelier de la ligne de peinture), où il s’agira d’appliquer du mastic sur certaines parties du véhicule. Le nombre d’opérateurs et de « trous » sera 1,5 à 2 fois plus élevé. Références [1] C. Joncour et al. Column Generation based Primal Heuristics. ISCO 2010 - International Symposium on Combinatorial Optimization. Volume 36, 1 August 2010, Pages 695–702.