www.fgks.org   »   [go: up one dir, main page]

Academia.eduAcademia.edu
Un protocole de négociation pour l'ordonnancement distribué Multi-Agents d’un Atelier Job-Shop M.L. Berrandjia, S. Ourari Division Robotique et Productique Centre de Développement des Technologies Avancées Alger, Algérie mberrandjia@cdta.dz Résumé— Dans ce papier, nous nous intéressons à la résolution distribuée du problème d’ordonnancement d’atelier Job-Shop en utilisant les systèmes multi-agents. Nous considérons que chaque machine est assimilée à un agent autonome gérant son propre ordonnancement local (Ordonnancement à une machine) et coopérant avec les autres agents pour trouver une solution globale satisfaisante tout en gardant une certaine flexibilité séquentielle afin de faire face aux incertitudes. L'approche de résolution proposée est basée sur un mécanisme de coopération inter-ressources où les négociations sont initiées entre les agents afin d'assurer une cohérence entre tout couple de tâches liées par la gamme opératoire. Un protocole de négociation est proposé et sa mise en œuvre est réalisée sur la plateforme de développement des systèmes multi-agents JADE. Cette dernière permet de développer une solution portable fonctionnant sur plusieurs plateformes et supportant le standard FIPA-ACL pour la communication entre agents. Mots clés— Job-Shop, ordonnancement distribué, système multi-agents, coopération, flexibilité, JADE. I. INTRODUCTION Actuellement, le processus d’ordonnancement de la production occupe une place importante au niveau de l’entreprise qui évolue dans un environnement caractérisé par une hyper-concurrence visant à satisfaire à la fois les exigences et les contraintes imposées par les clients en termes de qualité, de coût et de délais de mise à disposition. Il est donc indispensable d’avoir un système assurant un ordonnancement robuste tenant compte de l’environnement perturbé de la production en exploitant au maximum la flexibilité existante lors de l’exécution du plan de production. Il existe dans la littérature plusieurs approches traitant le problème d’ordonnancement de la production. La plupart de ces approches sont centralisées et s’articulent essentiellement autour de méthodes de résolution exactes ou bien approchées [1]. La solution est alors donnée sous forme d’un ordonnancement prévisionnel unique satisfaisant les contraintes imposées par le client ainsi que par l’environnement de l’atelier. Notons toutefois, que le principal inconvénient de ces approches réside dans le fait que ces dernières considèrent que les problèmes d’ordonnancement R. Chalal Laboratoire de Méthodes de Conception des Systèmes Ecole Nationale Supérieure d’Informatique Alger, Algérie r_chalal@esi.dz sont déterministes, i.e. que les données du problème traité sont connues à l’avance. Seulement dans la réalité, l’environnement de production est de nature perturbé; en effet de nouvelles informations peuvent surgir pendant l’exécution du plan initial le rendant par la même occasion obsolète. La solution dans ce cas consiste donc à élaborer un nouvel ordonnancement global couteux en temps de calcul conduisant le plus souvent à des modifications radicales du plan initial ou bien dans le pire des cas à l’acceptation du retard engendré par la perturbation. Pour faire face au problème d’incertitudes, des approches dites robustes ont été développées. Ces approches sont classées en trois catégories : prédictives, proactives et réactives. Dans les approches prédictives, l’ordonnancement est calculé en se basant sur des données estimées sans tenir compte des perturbations. Les approches proactives quand à elles calculent un ordonnancement en utilisant des connaissances à priori sur les incertitudes probables. Enfin, les approches réactives effectuent un calcul de l’ordonnancement en temps réel en traitant les incertitudes lors de leur apparition. Il à noter que les approches précédentes peuvent être combinées afin d’exploiter les avantages que chacune de ces dernières offre. On retrouve dans [2] et [3] un état de l’art et une classification des approches robustes. D’autres approches exploitent la nature distribuée du problème d’ordonnancement, les décisions sont dans ce cas distribuées entre les différents acteurs, ayant chacun une autonomie, et coopérant entre eux de manière à converger vers un ordonnancement global avec une performance acceptable. Cette façon de faire permet de mieux absorber les incertitudes en ne modifiant que les ordonnancements locaux des ressources concernées par la perturbation. Notons que ce type d'approche distribuée peut être modélisé par les systèmes multi-agents (SMA) [4] en considérant que chaque agent représentant une ressource (machine) possède une autonomie décisionnelle et est capable de communiquer avec les autres agents moyennant un protocole de coopération pour la prise de décisions d'ordonnancement. L'intérêt de ces SMA s'est accru ces dernières années avec le développement rapide des réseaux et de l’informatique distribuée. Plusieurs chercheurs se sont intéressés au paradigme des systèmes multi-agents et à leur application dans le domaine de l’ordonnancement de la production. Dans [5], les auteurs décrivent un mécanisme d’appel d’offre permettant à une ressource de sous-traiter ses tâches avec d’autres ressources. Baker dans [6] a proposé une architecture basée sur le protocole Contract-Net. Dans [7], le système développé assigne à chaque ressource un agent permettant de forcer le respect des contraintes relatives à la capacité de cette dernière, et à chaque travail un agent s’assurant du respect des contraintes de précédence et des dates de disponibilités. Dans les articles [8] et [9], l’ordonnancement est réalisé avec deux agents qui détiennent un ensemble de tâches et sont en compétition pour l’utilisation des ressources. Dans [10], le problème d’atelier job-shop a été abordé dans un contexte coopératif et distribué pour la prise en compte des incertitudes. Dans [11], les auteurs présentent un SMA pour l’ordonnancement des ateliers job-shop où les agents définissent leurs plans de réalisation en utilisant des règles de priorité tout en minimisant les temps d’inactivité de la machine. Wei et Dongmei dans [12], proposent un SMA pour la résolution des problèmes job shop flexibles avec des stratégies de négociation inspirées du fonctionnement du système immunitaire humain. Dans [13], les auteurs proposent un SMA adaptatif permettant de faire face aux incertitudes et basé sur le Q-Learning, pour les systèmes de production à base de connaissances (Knowledge Manufacturing Systems). Enfin, dans [14] les auteurs présentent une approche multi-agents pour l’ordonnancement des workflows collaboratifs relatifs aux chaines d’approvisionnement en combinant le protocole Contract-Net, les modèles de workflow et les théories d’optimisation, et implémentée avec les standards de la FIPA et les modèles réseau de Pétri relatifs aux spécifications des workflows. Dans ce papier, nous nous intéressons à la résolution distribuée d'un problème d’ordonnancement multi-ressources et plus particulièrement à sa mise en œuvre en utilisant la plateforme JADE (Java Agent DEvelopment Framework) [15]. Cette dernière est organisée selon les spécifications de la norme FIPA (Foundation for Intelligent Physical Agents) appelée FIPA97 [16] qui décrit le modèle de référence d’une plateforme multi-agents ainsi que le langage de communication entre les agents (FIPA-ACL). Ce papier est organisé comme suit. Dans la section suivante, nous présentons la problématique d'ordonnancement étudiée. La troisième section est consacrée à la présentation de l’approche multi-agents proposée et une description du protocole de négociation y afférent. Nous expliquons le fonctionnement des étapes principales de l’approche proposée avec un exemple illustratif. Par la suite, nous décrivons la mise en œuvre du protocole proposé pour l'ordonnancement multiagents en utilisant la plateforme JADE. Enfin, nous terminons par une conclusion sur le travail réalisé et les perspectives futures en vue. II. PROBLEMATIQUE D’ORDONNANCEMENT JOB-SHOP Dans ce papier, nous étudions le problème d’ordonnancement de type Job shop noté Jn||Cmax et qui consiste à ordonnancer un ensemble de travaux T= {1,2,…, N} sur un ensemble de machines M = {1,2,…, m}. Chaque travail possède sa propre gamme opératoire et est composé d’un ensemble de tâches s’exécutant sur une des machines de l’ensemble M dans un ordre bien défini. Nous supposons que les tâches sont non-préemptives, et que les machines sont disjonctives. Notons aussi que chaque tâche i ne peut être exécutée que par une et une seule machine et que son exécution nécessite une durée opératoire pi connue à l’avance. La solution du problème consiste à trouver pour chaque machine un ordonnancement de manière à satisfaire les contraintes du problème et à converger au mieux vers un objectif qui est la minimisation de la durée totale de la réalisation des N travaux appelée Makespan et notée Cmax. Ce genre de problème est connu comme étant classé dans la catégorie des problèmes NP-Difficiles [17]. Se situant dans un contexte perturbé, nous exploitons, pour résoudre le problème, la nature distribuée de la fonction ordonnancement, en considérant chaque machine comme étant un centre de décision autonome disposant de toutes les informations nécessaires (connaissances locales) relatives aux tâches (date de disponibilité, date d’échéance et durée opératoire) devant être exécutées sur ce dernier. Ces connaissances locales sont utilisées par le centre de décision pour réaliser son propre ordonnancement local en définissant les dates de début des ses opérations. Le problème qui se pose alors est la cohérence des décisions prises par les différents centres de décisions sachant qu’ils sont interdépendants en raison des liens qui relient les différentes tâches d'un même produit (une date de fin d'une tâche ne pouvant excéder la date de début de la tâche qui la succède). En effet, en supposant que chaque centre prend ses décisions sans prendre en compte celles prises par les autres centres, il est clair que cela engendrerait des incohérences qu’il faudrait éliminer par la suite. On peut déjà en conclure que ces centres de décision sont dans l'obligation d'interagir les uns avec les autres pour assurer la cohérence entre leurs décisions et cela en utilisant un mécanisme de coopération bien précis. Un centre décision possède des relations avec des centres en amont qui lui fournissent des produits à transformer, et qu'il il transfère à son tour aux centres de décision en aval. Parmi les paradigmes les plus utilisés pour la résolution des problèmes distribués, les systèmes multi-agents en constituent le moyen le plus adéquat pour la modélisation distribuée du problème d’ordonnancement en offrant une multitude d’outils et de standards tels que ACL ou bien KQML. III. APPROCHE MULTI-AGENTS POUR L’ORDONNANCEMENT Comme nous l'avons introduit précédemment, nous considérons dans l'approche proposée pour la résolution distribuée du problème, que chaque machine est assimilée à un agent, et que ce dernier procède à l'établissement de son ordonnancement local en exploitant la technique d'ordonnancement à une machine basée sur le théorème de dominance décrite dans [18] et qui permet de caractériser un ensemble de solutions faisables au lieu d'une solution unique et fournit ainsi de la flexibilité séquentielle. Ainsi, chaque agent, définit pour chaque tâche i qu'il réalise, des dates de début et de fin au mieux et au pire et dispose d’une certaine flexibilité lui permettant de faire face aux incertitudes. Notons que chaque ordonnancement local déterminé par un agent donné est réalisé indépendamment des décisions prises localement par les agents en amont et en aval de ce dernier, engendrant ainsi des incohérences qu’il faudrait éliminer afin d’aboutir en finalité à un plan d'ordonnancement global réalisable. Afin d'assurer une cohérence entre les décisions prises localement, un mécanisme de coopération entre les agents est mis en œuvre à travers des primitives, permettant ainsi de négocier de nouvelles valeurs de début et de fin en jouant sur les dates de disponibilités et d’échéances des tâches. La phase de négociation est initiée par les deux agents ayant la plus grande incohérence. Pendant cette phase, les agents utilisent des primitives de négociation leurs permettant de faire des propositions ou bien des contrepropositions afin d’aboutir à la fin à une situation sans incohérences. Le ré-ordonnancement effectué au niveau d’un agent négociant nécessite une mise à jour des connaissances au niveau des autres agents à travers une coordination. Il est à noter qu’un couple d’agents peut faire l’objet de plusieurs négociations. On appelle donc une négociation déjà faite, une renégociation. A. Décomposition du Problème Initial Cette étape consiste à décomposer le problème d’ordonnancement job shop initial à plusieurs machines en plusieurs sous-problèmes à une machine. Il s’agit de déterminer une connaissance locale initiale en calculant pour chaque tâche i à exécuter par une ressource donnée, sa fenêtre d’exécution [ri, di] (ri, di représentent respectivement la date de disponibilité et la date d’échéance de la tâche i). Il faut noter que les données initiales du problème concernent seulement le nombre de travaux à réaliser, leurs gammes opératoires ainsi que les ressources, et les durées opératoire des tâches à exécuter. Les dates ri et di d’une tâche donnée sont calculées en utilisant le graphe disjonctif correspondant au problème [19]. Ainsi, chaque ressource (agent) disposera d’un ensemble de tâches à réaliser avec toutes les informations (ri, di et pi) requises pour procéder au calcul d’un ordonnancement local. B. Exemple illustratif sur la décomposition À titre d'exemple, considérons un problème job-shop à 3 machines 1, 2 et 3 et 4 travaux J1, J2, J3, J4. Tous les travaux sont disponibles à l'instant zéro. Le tableau I présente les données concernant les gammes et les durées opératoires. TABLEAU I. EXEMPLE D’UN PROBLEME JOB SHOP 4×3. Travail 1 1 1 2 2 2 3 3 3 4 4 4 Tâche 1 2 3 4 5 6 7 8 9 10 11 12 Durée 6 10 5 8 9 7 6 10 8 2 1 7 Machine 1 2 3 2 1 3 3 2 1 3 1 2 Le résultat de la décomposition du problème initial est donné sous forme de trois sous-problèmes relatifs aux machines 1, 2 et 3 et en calculant pour chaque tâche i sa date de disponibilité ri ainsi que sa date d’échéance di. Le tableau II illustre les données locales relatives aux tâches correspondantes à chacune des machines. TABLEAU II. Machine (Agent) 1 2 3 DECOMPOSITION DU PROBLEME INITIAL. Tâche 1 11 8 5 12 2 9 6 4 7 10 3 ri 0 2 6 8 3 6 16 17 0 0 0 16 di 9 17 16 17 24 19 24 24 8 6 16 24 Dans ce qui suit, nous donnons la manière dont est réalisé l’ordonnancement local au niveau des agents (machines) utilisant les données calculées précédemment. C. Ordonnancement local Le but de l'ordonnancent global étant la minimisation du Makespan, le problème job shop est décomposé en sousproblèmes plus faciles à résoudre, où chaque agent résout un sous-problème, et procède à l'établissement d'un ordonnancement local à une machine avec comme critère la minimisation du retard algébrique (problème noté 1|ri|Lmax). Comme nous supposons que chaque agent caractérise un ensemble d'ordonnancements possibles, ceci est réalisé en exploitant une condition de dominance [18] à travers les fenêtres temporelles d’exécution des tâches [ri, di] calculées précédemment. Il est possible ainsi de déterminer pour chaque tâche i ce qui suit :  La séquence favorable (resp. défavorable) avec le meilleur retard algébrique noté Limin (resp. Limax);   La date de début au mieux (resp. au pire) notée simin (resp. simax); La date de fin au mieux (resp. au pire) notée fimin (resp. fimax). Le calcul de Limin et de Limax est effectué en utilisant l’algorithme décrit dans [20] dont la complexité temporelle est en O (n log n). Les dates de début et de fin au mieux et au pire sont déduites des retards algébriques. D. Détermination des incohérences Dans la section précédente, nous avons montré que des intervalles temporelles spécifiant les dates de début et de fin au mieux et au pire de chaque tâche sont déterminés localement. Il faut toutefois noter que chaque agent procède à l'établissement de son ordonnancement local sans tenir compte des décisions prises par les autres agents avec qui il est lié au sens de la gamme opératoire des produits. Il en découle ainsi des incohérences entre les dates de début et de fin des tâches, dues aux contraintes de précédence liées aux gammes opératoires. En effet, les intervalles temporelles de début de réalisation déterminés par deux agents prenant en charge respectivement deux tâches successives i et i+1 d’un même produit doivent satisfaire les deux conditions suivantes : si+1min ≥ fimin et si+1max ≥ fimax (1) Les incohérences au mieux et au pire, entre deux tâches (i, i+1) sont données par les formules suivantes Δimin = si+1min – fimin et Δimax = si+1max − fimax (2) Ainsi, chaque agent gère deux ensembles de tâches incohérentes, au mieux et au pire, classés respectivement par ordre croissant des Δimin et Δimax. Le but étant d’arriver à trouver un ordonnancement global satisfaisant les conditions données dans (1), il est clair que seules les valeurs négatives des expressions données dans (2) constituent des incohérences, et feront par conséquent l’objet de négociations entre les agents. Notons que les agents se coordonnent par échange d’informations afin que le couple d’agents détenant l’incohérence la plus prioritaire (calculée à la base d’une règle de priorité) enclenche le processus de négociation. Nous signalons que dans le protocole de négociation que nous proposons, à un instant donné, seul un couple d’agents concernés est en phase de négociation, les autres agents entrent en état d’attente jusqu’à ce que la négociation prenne fin. E. Exemple illustratif sur l’ordonnancement local et le calcul des incohérences Le tableau III illustre les résultats obtenus au niveau des agents après la réalisation du premier ordonnancement local ainsi que les valeurs des incohérences calculées. TABLEAU III. ORDONNANCEMENTS LOCAUX ET DETERMINATION DES INCOHERENCES. Agent 1 2 3 Tâche 1 11 8 5 12 2 9 6 4 7 10 3 min si 0 6 6 17 3 6 20 28 6 0 14 16 fimin 6 7 16 26 10 16 28 35 14 6 16 21 simax 0 16 7 16 16 10 23 31 6 0 14 16 fimax 6 17 17 26 23 20 31 38 14 6 16 21 Δimin Δimax 0 -4 4 2 0 3 0 -10 - 4 -1 6 5 -4 3 1 0 - Les valeurs des incohérences (au mieux et au pire) sont obtenues à travers une coordination entre tout couple d’agents exécutant deux tâches successives (i, i+1) faisant partie du même travail. Le nombre total d’incohérences avant le début des négociations est de 4 (2 au mieux et 2 au pire). Dans ce qui suit nous présentons le protocole de négociation impliquant les agents à travers un schéma d’interaction afin d’éliminer les incohérences existantes entre ordonnancements locaux des agents. F. Protocole de négociation Afin d’assurer une cohérence lors des prises de décisions locales, les agents interagissent selon un schéma de coopération que nous décrivons dans cette section. Comme nous l’avons déjà signalé, il s’agit plus précisément d’amorcer une série de propositions et de contre-propositions entre les agents du couple ayant la plus grande incohérence. Pour ce faire, des primitives permettant d’agir sur les dates de début et de fin des tâches au mieux et au pire sont définies au niveau des agents, permettant à ces derniers de prendre des décisions locales, tout en négociant avec les agents amonts et avals. Dans ce qui suit, nous présentons ces primitives puis nous décrivons le schéma d’interaction adopté. 1) Primitives de gestion des incohérences: chaque agent dispose de deux types de primitives qu’il gère de manière autonome. La première règle les incohérences au mieux, alors que la seconde traite le cas des incohérences au pire. Le principe consiste à modifier les dates de début ou de fin au mieux et au pire de manière à ce que les valeurs Δimin et Δimax soient positives ou bien nulles, assurant ainsi la cohérence entre les tâches. Ces primitives agissent sur l’ordre de certaines tâches déjà préétabli en augmentant les dates de début ou bien en réduisant les dates de fin (au mieux et au pire) de la tâche faisant objet de l’incohérence la plus grande. Ces primitives sont :   Diminuer fimin (resp. fimax): cette primitive permet de diminuer la valeur de la date de fin au mieux (resp. au pire) de la tâche i ; Augmenter simin (resp. simax) : cette primitive permet d’augmenter la valeur de date de début au mieux (ou au pire) de la tâche i. 2) Schéma d’interaction : notre approche de résolution préconise, comme nous l’avons déjà signalé, la distribution des décisions sur un processus d’interaction en utilisant les SMA. En effet, une solution SMA sans interaction n’est guère différente d’une solution classique. Elle consiste à mettre en relation plusieurs agents afin de déclencher certaines actions au niveau de ces derniers. Dans notre cas, deux agents entrent en négociation pour éliminer l’incohérence liée aux tâches successives (i, i+1) de la même gamme, que chacun d’eux réalise. Durant cette phase de négociation, ces agents adoptent deux rôles différents ; l’agent réalisant la tâche i+1 est l’agent initiateur de la négociation alors que celui réalisant la tâche i est l’agent participant. Cette négociation se fait au moyen des primitives suivantes :     Propose : cette primitive permet à l’agent initiateur de demander à l’agent participant de diminuer sa date de fin au mieux ou au pire ; Contre-propose : cette primitive est utilisée par l’agent participant pour demander à l’agent initiateur d’augmenter sa date de début au mieux ou au pire, dans le cas ou la diminution de la date de fin n’a pas suffit à éliminer l’incohérence ; Accepte : cette primitive est utilisée par les agents négociants afin de confirmer l’acceptation de la proposition émanant du participant ou de la contre proposition émanant de l’initiateur ; Coordination : cette primitive est utilisée par les agents négociants pour informer les autres agents des modifications éventuelles opérées à leur niveau. La figure 1 représente un diagramme de séquence illustrant la négociation entre deux agents. La négociation commence par une proposition de l’agent initiateur (Agent réalisant la tâche i+1) demandant à l’agent participant de diminuer fimin (ou bien fimax). Ce dernier procède à un ré-ordonnancement local et informe les autres agents des modifications effectuées afin que ces derniers les prennent en considération. Dans le cas où l’action de l’agent participant a permit de régler le problème, alors il envoie un message d’acceptation à l’agent initiateur et la négociation est terminée. Dans le cas contraire, l’agent participant envoie à l’agent initiateur une contre-proposition lui demandant d’augmenter son si+1min (ou bien si+1max). Ce dernier après avoir procédé à un ré-ordonnancement local, informe les autres à travers un message de coordination des modifications faites à son niveau. A l’issue de cette étape un message d’acceptation sera envoyé à l’agent participant marquant ainsi la fin de la négociation. Les valeurs Cmaxfav(Aj) et Cmaxfav(Aj) représentent respectivement le makespan local au mieux et au pire de l’agent Aj. Rappelons que la solution globale est donnée sous forme d’un ensemble de solutions possibles (ordonnancements admissibles) avec les dates de livraison des jobs au mieux et au pire calculées à partir des expressions (3) et (4) données plus haut et qu’on note Cmaxfav et Cmaxdef : � � �� �� �� = = �� =1… (� �� =1… (� �� �� �� (� )) (5) (� )) (6) Puisque la solution au problème global est donnée sous fourme d’un ensemble d’ordonnancements possibles, alors le makespan global appartient à l’intervalle défini par les valeurs calculées dans (5) et (6), c'est-à-dire : Cmaxfav ≤ Cmax ≤ Cmaxdef :participant (Agent qui réalise i) :initiateur (Agent qui réalise i+1) D’autre part, il est clair que pour avoir plus de flexibilité au niveau de chaque agent, il faut que ce dernier propose un ensemble de solutions possibles au lieu d’une seule solution, et cela imposerait à ce que la valeur de Cmaxfav soit différente de celle de Cmaxdef. En effet, ceci permet de mieux gérer les perturbations, ou bien de mieux prendre en charge de nouvelles commandes qui peuvent surgir durant l’exécution des travaux sans dégrader la performance au pire, c’est-à-dire, en faisant avancer les travaux les plus prioritaires ou bien différer d’autres travaux par manipulation de l’ensemble des solutions proposées. Dans le cas où Cmaxfav est égale à Cmaxdef, alors cela voudrait dire que toutes les solutions proposées ont le même makespan, et ce qui implique une absence de flexibilité globale. Il est à noter que si s’il n’existe pas de flexibilité globale, cela n’implique pas que les agents ne disposent pas de flexibilité locale. Dans ce qui suit, nous illustrons à travers un exemple illustratif les négociations engagées entre les agents afin de parvenir à la fin à une situation sans incohérence. Propose min Diminuer f i (f max i ) Ré-ordonnancement Coordination Mise à jour des Δ Mise à jour des Δ Accepte alt [Δ min i (Δ max i ) ≥ 0] [else] Contre propose min Augmenter S i+1 max (S i+1 ) Ré-ordonnancement Coordination Mise à jour des Δ Mise à jour des Δ Accepte Fig. 1. Schéma d’interaction lors de la négociation. G. Evaluation de la solution La solution globale au problème initial est donnée sous forme d’un intervalle [Cmax] avec des dates de fin au mieux et au pire notées respectivement Cmaxfav et Cmaxdef. Nous savons que chaque agent caractérise un ensemble de solutions possibles lors de l’ordonnancement local, et définit pour chaque tâche i qu’il réalise un intervalle de début [si] ou de fin [fi] de réalisation. A partir de là, il est possible de calculer pour chaque agent Aj=1..m une date de fin de réalisation de toutes ses tâches, au mieux et au pire comme suit : � � �� �� �� � � = = �� � � �� � � �� , = 1… , = 1… (3) (4) H. Exemple illustratif sur les négociations Nous reprenons l’exemple précédent où la première étape de coordination a permis de déterminer l’existence de 4 incohérences. L’élimination de ces dernières nécessite une phase de négociations entre les agents qui procèdent en premier au traitement des incohérences au mieux pour passer ensuite aux incohérences au pire. Nous signalons aussi que le couple d’agents ayant la plus petite incohérence est celui qui enclenche le processus de négociation, cependant, d’autres règles peuvent être adoptées. Les actions adoptées au niveau des primitives Diminuer er Augmenter sont pour l’instant assez basiques puisque l’approche est en cours en de développement et se limitent simplement soit à l’augmentation ou bien à la diminution des dates de disponibilité et d’échéance afin de manipuler les dates de début et de fin au mieux et au pire de la tâche concernée et par la même occasion affecter la valeur de l’incohérence. L'application du schéma d’interaction donne des résultats regroupés dans le tableau VI où sont illustrées les étapes de négociation pour l’élimination de toutes les incohérences existantes. Chaque ligne du tableau est une étape de négociation (avant et après négociation) où (N, T, I, i+1, P, i) représentent respectivement le numéro de la négociation, le type de l’incohérence qu’elle soit au mieux (min) ou bien au pire (max), l’agent initiateur (numéro de la machine associée à l’agent), la tâche exécutée par ce dernier, l’agent participant et la tâche exécutée par ce dernier. Pour chaque agent, nous avons mentionné dans le tableau les dates des tâches incohérentes, la valeur de l’incohérence (Δi) ainsi que le nombre global des incohérences traitées avant et après la négociation (inc). TABLEAU IV. NEGOCIATIONS RELATIVES A L’EXEMPLE. Avant négociation Négociation (N, T, I, i, P, i+1) Initiateur (1, min, 2, 12, 1, 11) (2, min, 1, 11, 3, 10) (3, min, 1, 8, 3, 7) (4, min, 2, 9, 1, 8) (5, min, 1, 5, 3, 4) (6, max, 2, 6, 1, 5) (7, max, 3, 3, 2, 2) 3 2 6 16 8 17 16 d participant smin smax r d Initiateur participant smin smax 24 3 16 2 17 6 16 -4 5 2 6 0 16 14 14 -14 16 7 9 0 6 2 2 -1 24 20 23 8 18 17 18 -7 17 8 9 0 8 8 8 -8 24 20 23 16 25 18 19 -7 24 16 16 6 19 6 10 -4 4 3 2 5 3 3 1 Δi inc r d smin smax r 3 2 8 23 16 24 20 24 5 18 31 25 31 25 3 2 17 27 18 31 20 16 6 18 30 19 31 20 d smin smax 2 5 2 6 0 2 0 0 0 6 2 2 8 18 17 18 0 8 8 8 9 18 18 19 6 16 6 10 0 0 9 0 2 4 0 3 2 5 3 3 1 0 Il est à noter que inc représente ici le nombre d’incohérences global (au mieux + au pire) et que Δi correspond à une incohérence au mieux ou bien au pire, selon l’information indiquée dans la première colonne. Dans cet exemple, l’étape de négociation débute avec le couple d’agents (2, 1) ayant la plus petite valeur d’incohérence au mieux (en valeur absolue) car la priorité est donnée, en premier, au traitement des incohérences au mieux, pour ce schéma de coopération. On remarque d’après le tableau qu’après la troisième négociation, le nombre total d’incohérences est passé de 2 à 5 a cause du ré-ordonnancement local qui modifie aussi non seulement les dates de la tâche 8 mais aussi toutes les tâches affectées à l’agent 1, engendrant ainsi d’autres incohérences. Après le traitement des incohérences au mieux (après la cinquième négociation), les agents procèdent à des négociations visant la résolution des incohérences au pire. Il est à noter que, si la résolution d’une incohérence au pire génère une ou plusieurs incohérences au mieux, alors la prochaine négociation concernera le traitement de ces dernières. Le tableau V présente le résultat final après la fin de toutes les négociations. TABLEAU V. Tâche 1 11 8 5 12 2 9 6 4 7 10 3 Agent 1 1 1 1 2 2 2 2 3 3 3 3 Job 1 4 3 2 4 1 3 2 2 3 4 1 RESULTAT FINAL DES NEGOCIATIONS. ri 0 2 8 9 3 6 19 24 0 0 0 20 di 9 5 18 18 24 16 31 31 8 6 2 25 Dans cette section, nous nous intéressons à la mise en œuvre de la solution SMA proposée en mettant l’accent sur la plateforme utilisée (JADE) pour la modélisation comportementale des agents, la communication et la gestion des messages d’échange entre ces derniers. Il existe plusieurs plateformes logicielles permettant soit, la simulation des systèmes multi-agents, ou bien le développement et la mise en œuvre de ces derniers. Dans [21], les auteurs présentent une étude comparative des plateformes de développement des SMA les plus utilisées. Après négociation Δi inc r IV. MISE EN ŒUVRE simin 0 2 8 18 3 6 20 28 8 2 0 20 fimin 6 3 18 27 10 16 28 35 16 8 2 25 simax 3 6 9 19 16 10 23 31 8 2 0 20 fav Partant des résultats du tableau V, le calcul de [Cmax , se fait comme suit : Cmaxfav = max(f12min, f9min, f6min, f3min) = 35 Cmaxdef = max(f12max, f9max, f6max, f3max) = 38 fimax 9 7 19 28 23 20 31 38 16 8 2 25 Cmaxdef] A. Présentation de la plateforme JADE JADE (Java Agent DEvelopement framework) est une plateforme Open source gratuite, implémentée entièrement en JAVA et dédiée au développement des SMA conformément aux spécifications de la FIPA. Cette norme concerne aussi la communication inter-agents effectuée à travers le langage FIPA-ACL. JADE comporte aussi un ensemble d’outils et d’applications graphiques qui permettent le débogage, la supervision et l’administration du système développé, tels que : « Sniffer Agent » pour la visualisation des messages ACL circulants entre les agents du système, ou encore l’outil « Remote Monitoring Agent » qui permet l’administration à distance d’une ou de plusieurs plateformes JADE. B. Modélisation multi-agent du problème sous JADE Comme mentionné précédemment, chaque agent est autonome, possède des connaissances locales, et interagit avec les autres agents afin de mettre en cohérence les décisions prises localement. Au niveau de la plateforme JADE, chaque agent peut avoir un ou plusieurs réactions, selon la situation à laquelle il est confronté. La modélisation du comportement d’un agent est réalisée avec la classe Behaviour (offerte par JADE) à travers l’utilisation d’une machine à états finis (Finite State Machine). La figure 3 décrit le comportement général d’un agent, où chaque état correspond à une situation donnée :     Etat S1 (réception des données) : durant cet état l’agent reçoit les informations sur les tâches à exécuter nécessaires pour l’établissement de son ordonnancement local. A la fin de la réception des données, l’agent passe à l’état S2 ; Etat S2 (Ordonnancement local) : cet état permet à l’agent d’établir son ordonnancement local en définissant pour chaque tâche, ses dates de début et de fin au mieux et au pire. L’agent passe ensuite à l’état S3 pour la détermination des incohérences ; Etat S3 (Détermination des incohérences) : Il s’agit dans cet état du calcul ou de la mise à jour des incohérences à chaque fois que l’ordonnancement local est établi, suite à une négociation; Etat S4 (Détermination du couple d’agents négociants) : Cet état permet d’identifier le couple d’agents déclenchant la négociation. Ces deux derniers entrent en négociation (état S6) tandis que le reste des agents passent en attente (état S5) ;   Etat S5 (attente) : cet état est relatif aux agents qui ne sont pas concernés par la négociation. Si la négociation est finie alors les agents en attente passent à l’état S4 pour déterminer le nouveau couple d’agents négociants, sinon à l’état S3 pour une coordination et une mise à jour des incohérences ; Etat S6 (Négociation) : durant cet état, les agents ayant la plus grande incohérence négocient afin d’éliminer cette dernière. Le passage à l’état S2 se fait pour effectuer un ré-ordonnancement, à l’état S3 pour mettre à jour les incohérences (coordination) ou bien à l’état S4 après la fin de la négociation. moment, nous avons défini pour chaque état, un type de message qui lui correspond. Il s’agit ici d’ajouter un entête permettant d’identifier le type de message afin que l’agent puisse l’extraire à partir de la file d’attente et l’utiliser, ou bien de le placer en fin de la file d’attente et passer au message suivant s’il ne correspond pas à son état actuel. A partir de cela, nous avons défini les types de messages suivants :       Fig. 2. Machine à états finis d’un agent. C. Gestion de la synchronisation inter-agents Dans l’approche de résolution proposée, les agents sont distribués et interconnectés à travers un réseau informatique, où on ne dispose d’aucun contrôle sur l’acheminement et le routage des messages, et donc sur l’ordre d’arrivée des messages. D’un autre coté, on note que les agents s’exécutent à des vitesses différentes selon l’environnement où ces derniers sont hébergés. Ces deux derniers points posent le problème de synchronisation entre les agents. Il est donc important de procéder à une bonne gestion de la réception et de l’utilisation des messages reçus par chaque agent. Signalons que dans la plateforme JADE, chaque agent peut envoyer des messages d’une manière asynchrone. Il dispose également d’une file d’attente lui permettant la réception asynchrone de la part des autres agents. Afin d’assurer un fonctionnement correct du système, une bonne gestion de la file d’attente des messages doit prendre en considération le problème de synchronisation. En effet, durant son activité, l’agent passe par plusieurs états et pendant chaque état la lecture du message approprié est importante afin régler le problème de synchronisation lié aux deux points évoqués précédemment (Vitesse d’exécution et ordre d’arrivée des messages). Pour pallier au problème de synchronisation et afin de permettre à chaque agent de lire le bon message au bon   RCPT : désigne la réception des données relatives aux tâches et la décomposition du problème initial. Ce type n’est utilisé que dans l’état S1 (réception des données); DINC : message relatif aux communications interagents visant le calcul des incohérences. Ce type n’est utilisé que dans l’état S3 (Détermination des incohérences); DCAN : une catégorie de message associée à la phase de détermination du couple ayant la plus grande incohérence. Cette catégorie n’est utilisée que dans l’état S4 (Détermination du couple d’agents négociants) ; PROP : utilisé par l’agent initiateur pour faire une proposition à l’agent participant. Ce type est utilisé uniquement dans l’état S6 (Etat de négociation); CPRP : utilisé par l’agent participant pour faire une contre proposition à l’agent initiateur. Ce type est utilisé aussi dans l’état S6 ; ACPT : utilisé par l’agent participant (resp. initiateur) pour accepter la proposition (resp. contre-proposition) de l’agent initiateur (resp. participant). Ce type de message est utilisé uniquement dans l’état S6 ; CRNT : utilisé pour actualiser les valeurs des incohérences après ré-ordonnancement local. Ce type de message est utilisé par les agents en attente dans l’état S5 (Etat d’attente); FNGC : ce type exprime la fin d’une négociation, et permet aux agents en état d’attente (état S5) et aux agents négociants de passer à une nouvelle étape de détermination du couple ayant la plus grande incohérence (état S4) afin d’entamer une nouvelle négociation ou bien à l’état final (état SF) dans le cas où toutes les incohérences ont été éliminées. Le pseudo-code 1 illustre un exemple sur la gestion de la file d’attente des messages reçus durant l’état S5: Pseudo-code 1 : Gestion de la file d’attente dans l’état S5 1 : Do 2 : message = receive() ; 3 : if message.type ≠ FNGC and essage ≠ CRNT then 4: Mettre le message à la fin de la file d’atte te 5 : end if 6 : while (message.type ≠ FNGC and 7 : Traiter le message ; essage ≠ CRNT) ; Les messages qui seront traités dans cet exemple sont seulement les messages de fin de négociation FNGC (qui permettent au passage à prochaine négociation) et les messages de coordination CRNT (pour une mise à jour des connaissances après un ordonnancement local effectué par l’un des agents négociants). En effet, après la lecture du message depuis la file d’attente (Ligne 2), l’agent procède à une vérification de son type (Ligne 3). Si ce dernier ne correspond pas aux types FNG et CRNT alors l’agent le remet à la fin de la file d’attente (Ligne 4) et passe au message suivant, dans le cas contraire, l’agent procède à un traitement qui dépend du type de message lu (Ligne 7). V. CONCLUSION ET PERSPECTIVES Dans ce papier, nous avons présenté une approche multiagents pour la résolution distribuée du problème d’ordonnancement des ateliers job-shop. La démarche de résolution exploite au mieux la nature distribuée de la fonction ordonnancement en respectant l'autonomie des différents acteurs et en utilisant le paradigme des systèmes multi-agents. En effet, chaque machine est assimilée à un agent autonome qui gère son propre ordonnancement, et qui coopère avec les autres agents à travers un protocole de négociation de manière à assurer une cohérence entre les décisions prises localement. Nous avons montré le fonctionnement de l’approche à travers un exemple illustratif. Pour valider l’approche proposée, nous avons opté pour l'utilisation de la plateforme JADE afin de développer le système d'ordonnancement multi-agents. Une modélisation du comportement des agents sous forme d’une machine à état finis est proposée. Cette dernière permet aux agents d’adopter les actions appropriées selon la situation à laquelle ils sont confrontés. Nous avons aussi défini plusieurs types de messages servant d'échange lors des communications entre les agents ainsi qu’une règle de gestion des files d’attente des messages reçus au niveau d'un agent afin de résoudre les problèmes liés à la synchronisation et cela afin d’assurer un fonctionnement global correct du système. Actuellement, nous sommes en phase d’implémentation de l'approche pour sa validation à travers des tests expérimentaux sur des benchmarks tirés de la littérature. REFERENCES [1] Gotha, "Les problèmes d'ordonnancement", RAIRO Recherche Opérationnelle/Operations Research, vol. 27, no.1, pp. 77-150, 1993. [2] A.J. Davenport & J.C. Beck, "A survey of techniques for scheduling with uncertainty", http://www.eil.utoronto.ca/chris/chris.papers.html, 2000. [3] W. Herroelen & R. Leus, "Robust and reactive project scheduling: a review and classication of procedures", International Journal of Production Research, vol. 42, no. 8, pp 1599-1620, 2004. [4] J. Ferber, "Les systèmes multi-agents: Vers une intelligence collective", InterEdition, 1995. [5] M. J. Shaw and A. B. Whinston, "Distributed planning in cellular flexible manufacturing systems", Manage. Inform. Res. Center, Purdue Univ., West Lafayette, IN, Tech. Rep., 1983. [6] A. D. Baker, "Manufacturing control with a market-driven contract net", Ph.D. thesis, Rensselaer Polytechnic Inst., Troy, NY, 1991. [7] J. Liu and K. P. Sycara, "Distributed problem solving through coordination in a society of agents", presented at the 13th Int.Workshop on DAI, 1994. [8] A. Agnetis, P.B. Mirchandani, D. Pacciarelli, A. Pacifici, "Nondominated schedules for a job-shop with two competing agents", Computational and Mathematical Organization Theory, 6(2), pp. 191-217, 2000. [9] A. Agnetis, P.B. Mirchandani, D. Pacciarelli, A. Pacifici, "Scheduling problems with two competing agents", Operations Research, vol. 52, no.2, pp. 229-242, 2004. [10] S. Ourari, "De l'ordonnancement déterministe à L'ordonnancement distribué sous incertitudes", Thèse de Doctorat soutenue à l'Université Paul Sabatier de Toulouse, France, 2011. [11] A. Kouider, S. Ourari, B. Bouzouia, M. Mihoubi, "Approche Multi-Agents pour l’ordonancement dynamique d’atelier de production", 9ème Conférence Internationale de MOdélisation et SIMulation, MOSIM’12, 06 au 08 Juin, Bordeaux, France, 2012. [12] X. Weil & F. Dongmei, " Multi-Agent System for Flexible Jobshop Scheduling Problem Based on Human Immune System", Chinese Control Conference, Hefei, China, pages 2476-2480, 2012. [13] H. Wang & H. Yan, " An Adaptive Scheduling System in Knowledgeable Manufacturing Based on Multi-agent", International Conference on Control and Automation, Hangzhou, China, pages 496-501, 2013. [14] F. Hsieh & J. Lin, "A Multiagent Approach for Managing Collaborative Workflows in Supply Chains", IEEE 18th International Conference on Computer Supported Cooperative Work in Design, Hsinchu, China, pages 71-76, 2014. [15] F. Bellifemine, A. Poggi and G. Rimassa, "Developing Multiagent Systems with JADE", published in Intelligent Agents VII, LNAI 1986, pp. 89Ŕ103, 2001. [16] Foundation for Intelligent Physical Agents, "FIPA 97 Specification. Part 2, Agent Communication Language", 1997. [17] J.K. Lenstra, A.H.G. Rinnooy Kan & P. Brucker, "Complexity of machine scheduling problems", Annals of Discrete Mathematics, vol. 1, pp. 343-362, 1977. [18] J. Erschler, G. Fontan, C. Merce & F. Roubellat, "A new dominance concept in scheduling n jobs on a single machine with ready times and due dates", Journal of Operation Research, vol.1, pp. 114Ŕ127, 1983. [19] J.Adams, E.BAlas & D.Zawack, "The shifting bottleneck procedure for job shop scheduling", Management Science, vol. 34, n. 3, pp. 391-401, 1988. [20] L. Trung, "Utilisation d'ordre partiel pour la caractérisation de solutions robustes en ordonnancement", Thèse de doctorat, Laboratoire d'analyse et d'architecture des systèmes (LAAS),CNRS, Toulouse, France, 2005. [21] A. Singh, D. Juneja, A.K. Sharma, "Agent Development Toolkits", International Journal of Advancements in Technology, vol. 2, no. 1, pp. 158-164, January 2011.