Description, programmation et validation d'interactions par Coupled Augmented Transition Network (CATN) Christian Lemaître (LANIA, MX), Xavier Prat (Crim, P. VI), Laurent Magnin (Crim, UdM), Arnaud Dury (Crim)
Les interactions au cœur des SMA Agent A Agent B Réification des interactions - Modélisation / conception - Exécution - Validation - Transformation / adaptation
Le formalisme Coupled Augmented Transition Network (CATN)
Vers les CATN : les ATN 1/4 e1 ReceiveRequest Message() ComputeCost() e2 e3 e4 Cost =- 1 TimerFired := Sleep() SendInform Message() e5 LaunchService Message() e6 e7 TimerFired = true ExecuteService(ServiceName e8 xprat? Représentation? Conditions? Plusieurs de l'exécution sous forme d'un graphe de passage sur les arcs types de transitions : simple, OR, AND, XOR
Vers les CATN : ATN évolués 2/4 e1 Registres : Float Cost = -1 Boolean TimerFired = false GuestId Applicant = null String ServiceName = null ReceiveRequest Message() Cost := ComputeCost() e2 e3 e4 Cost =- 1 TimerFired := Sleep() SendInform Message() e5 LaunchService Message() e6 e7 TimerFired = true? Utilisation de registres internes au CATN ExecuteService(ServiceName e8 xprat
Vers les CATN : ATN évolués 2/4 e1 Registres : Float Cost = -1 Boolean TimerFired = false GuestId Applicant = null String ServiceName = null ReceiveRequest Message() Cost := ComputeCost() e2 e3 SendInform Message() e4 Cost =- 1 TimerFired := Sleep() e5 LaunchService Message() e6 e7 TimerFired = true? Utilisation de registres internes au CATN ExecuteService(ServiceName e8 xprat e1? Utilisation Message := ReceiveMiscMessage() e2 de sous-atn ExecuteSubATN( «respondtoaservicerequest.atn») IsRequest( Message) ExecuteSubATN( «participatetoanauctionsale.atn») IsAuction( Message) e3 e4
Les CATN : les interactions 3/4 Registres : Float Cost = -1 Boolean TimerFired = false GuestId Applicant = null String ServiceName = null e4 Cost =- 1 TimerFired := Sleep() e7 TimerFired = true e1 e2 Cost := ComputeCost() e3 e5 e6 RequestMessage InformMessage LaunchServiceMessage ExecuteService(ServiceName e8? Inclusions des interactions dans le formalisme xprat
e1 Les CATN : représentation complète des interactions 4/4 Registres : Float Cost = -1 Boolean TimerFired = false GuestId Applicant = null String ServiceName = null e2 Cost := ComputeCost() e3 Cost =- 1 e4 TimerFired := Sleep() e5 e6 e7 TimerFired = true RequestMessage InformMessage LaunchServiceMessage ExecuteService(ServiceName e8 xprat e1 e2 TimerFired := Sleep() e3 TimerFired = true e5 e4
Exécution des CATN
Exécution des CATN Implémentations indépendantes des platesformes multiagents Portage sur FipaOS et Guest (Aglets, Corba, Grasshopper, Jade et Voyager) Fait appel aux méthodes natives des agents Constitués de : Parseur CATNManager MessageManager
xprat Inplémentation : Parseur <CATN name = "serviceprovider"> <Register name = "applicant" datatype = "ca.crim.guest.main.guestid" initialvalue = "" <Register name = "servicename" datatype = "String" initialvalue = "-"/> <Register name = "activationcost" datatype = "Float" initialvalue = "-1"/> <State name = "e1"> <Transition type = "single"> <Arc actiontype = "CATNMR" label = "receiverequest" result = "applicant, servicename" nextstate = "e2"/> </Transition> </State> <State name = "e2"> <Transition type = "single"> <Arc actiontype = "PA" label = "computecostoftheservice" param = " servicename" result = "activationcoast" nextstate = "e3"/> </Transition> </State> <State name = "e3"> <Transition type = "xor"> <Arc actiontype = "PA" label = "donothing" nextstate = "e4"> <Constraint type = "comparison" lefttype = "register" leftvalue = "activationcost" relationalop = "equals" righttype = "Float" rightvalue = "-1"/ </Arc> <Arc actiontype = "CATNMS" label = "constructinformmessage" agent = "applicant" param = "activationcost" nextstate = "e5"/> </Transition>
CATNManager Charge, décharge, exécute des CATN Permet l'exécution simultanée de plusieurs CATN Problématiques de gestion de Thread importante Gestion des erreurs Déchargement en cascade xprat
MessageManager File de message en attente de traitement File d'arc en attente de message Gestion de conversation Pour savoir quel message est dirigé vers quel CATN xprat
Validation des interactions
Validation de traces La vérification de propriétés d un système doit se baser sur un modèle de celui-ci Difficulté à modéliser des système ouverts et hétérogènes (méthodes natives) Notre approche consiste à générer, à partir d une trace d exécution du système (messages échangés), un modèle de celui-ci La validation se fera alors sur ce modèle
Validation : Model Checking Principe Recherche de propriétés dans les traces d'exécution Quatre étapes Définition des anti-patterns que l'on ne veut pas trouver Récupération de la trace d'exécution Exprimer sous un même formalisme les traces et les anti-patterns Analyse de la trace Xprat
Validation : Model Checking SMA exécutant des graphes CATN Trace d'exécution en XML Anti-patterns écrit en Goal SDL Model SDLTools Xprat Concepteur du système Produit ObjectGEODE Tools : OG Simulator OG Model Checker Patterns présents ou pas
Validation : définition d'un antipattern S0 Output request correlation_id := applicant!correlation_id Success state Succ; Error state Err; dcl correlation_id in probe applicant ; S1 Intput inform Output request EndState correlation_id := applicant!correlation_id xprat applicant!correlation_id = correlation_id True Err Fals e S0 S1 Succ
Validations possibles Approche utilisée dans la validation d un système multiagent industriel Trois niveaux de validation : Implémentation «Système» (messages bien reçus) «Algorithmique» Génération automatique des propriétés à valider à partir d un CATN (travail en cours)
Transformation / adaptation Nouvelle implémentation des CATN Permet de décrire récursivement les CATN Possibilité de chargement, d arrêt, de modification et de relance dynamique des CATN
Conclusion
Les CATN nous permettent : De décrire les interactions entre agents De les faire s exécuter en parallèle De générer automatiquement des traces et les propriétés à y vérifier De modifier dynamiquement et de façon unifiée ces mêmes interactions
Questions?