XI. FIPA abstraktní architektura, nástroj JADE Podklady k přednáškám kurzu AGS ---------------------------------------------------- 2006 Zdeněk Mazal mazal@fit.vutbr.cz Organizace FIPA [www.fipa.org] The Foundation for Intelligent Physical Agents Nezisková organizace, zabývá se standardizací v oblasti agentních technologií Založena ve Švýcarsku 1996, od roku 2005 součást IEEE Computer Society (jedna ze Standards Committee) V současné době 23 členů, převážně firmy a univerzity (Boeing, Siemens, Toshiba, ) Většina norem přijata v období kolem roku 2002 Standardy FIPA Normy mají svůj životní cyklus V současné době 25 norem ve stavu Standard Obory normalizace Applications jaké služby poskytovat, ontologie pro dané oblasti, většina norem stále experimentální Abstract Architecture základní komponenty systému Agent Communication zprávy, jazyky, protokoly Agent Management detaily architektury, definuje jak vytvářet prostředí pro běh agentů (Platforma) Agent Message Transport specifikuje jak posílat zprávy mezi platformami FIPA Abstraktní Architektura Základní kámen pro všechny ostatní normy Identifikuje důležitéčásti systému, které musí být přítomny a definuje jejich vztahy a sémantiku Zaměření na komunikaci mezi heterogenními agenty Velmi obecná, zcela nezávislá na implementačním prostředí Využívá návrhové vzory, UML Skládá se ze 3 částí: Stručný textový popis architektury Seznam povinných a volitelných komponent agentního systému UML diagramy popisující vztahy mezi komponentami
Agent Výpočetní proces, autonomní, komunikuje pomocí ACL (Agent Communication Language) Má jedinečné jméno (agent-name), které musí zůstat stejné po celou dobu života agenta (rozvinuto v další normě AID) Norma se zabývá pouze jeho vnějšími projevy zasíláním zpráv, vnitřní architektura není studována Pro podporu chodu agentů jsou přítomny služby Služba (Service) Abstrakce pro podpůrné prostředky běhu agentů Muže být implementována jako agent, avšak nesmí odmítnout autorizovaný požadavek méně autonomie než běžný agent Stejně jako agent musí mít jedinečné jméno Při spuštění agent obdrží Service Root seznam adres služeb, které agent potřebuje ke své funkci Standardní služby v systému Norma definuje, jaké služby musí být v každém agentním systému přítomny Dále definuje operace, které musí služby poskytovat a za jakých podmínek podrobněji definováno v navazující normě (AMS, viz dále) Agent Directory Service (ADS) Udržuje seznam agentů O každém agentovi obsahuje záznam (Agent Directory Entry), který musí obsahovat minimálně jméno a seznam Agent Locators popis jak agent kontaktovat (protokol, adresa...) Umožňuje registraci, editaci / mazání záznamů a vyhledávání Další standardní služby Service Directory Service (SDS) obdobná služba jako ADS pro vyhledávání ostatních služeb Obsahuje signatury služeb (obdoba Agent Locatoru) Message Transport Service (MTS) poskytuje operace pro zasílání a přijímání zpráv mezi agenty zvolenou metodou Encoding Service (ES) kóduje zprávy do zvoleného formátu (konkrétně do payload viz dále)
Zprávy zasílané mezi agenty Vyjadřovány v ACL (např. FIPA ACL, KQML) Povinně musí obsahovat Jednoho odesílatele 0 n příjemců (0 slouží pro multicast) Obsah Obsah zprávy vyjádřen v obsahovém jazyce (content language např. FIPA-SL, KIF, RDF) Po zakódování ES tvoří payload ( užitečný náklad ) a společně s obálkou transportní zprávu (transport message) Zpráva pokračování Průběh kódování zprávy před odesláním pomocí MTS Agent Management Specification Norma, která se zabývá detailně tím, jak má vypadat prostředí ve kterém jsou agenti spouštěni Zpřesňuje a doplňuje abstraktní architekturu Zavádí pojmy Platforma, AID, DF, AMS, životní cyklus agenta Součástí je ontologie pro agent management (AM) detailně popisuje protokol pro všechny operace komunikace s DF a AMS Platforma (Agent Platform) Představuje fyzické prostředí, ve kterém je agent spuštěn Sestává z: hardware operačního systému pomocného software FIPA komponent (DF, AMS, MTS)
Agent Management System (AMS) Povinnáčást každé platformy (v každé platformě musí být právě jeden AMS i v případě že platforma je distribuovaná) Slouží ke správě agentů všichni agenti přítomní na platformě musí být u AMS zaregistrováni Poskytuje službu bílých stránek vyhledávání agentů podle AID je reifikací ADS z abstraktní architektury Dále umožňuje měnit stav agenta viz životní cyklus agenta Životní cyklus agenta Je spravován v AP, vyjadřuje povinnosti AMS vůči agentovi Norma definuje Jaké prostředky přiděluje platforma agentovi Jak je nakládáno se zprávami pro agenta Directory Faciliator (DF) Nepovinnáčást platformy Poskytuje službu žlutých stránek vyhledávání agentů ne podle identifikátoru, ale nabízených služeb Na jedné platformě může být libovolný počet DF, tito mohou tvořit hierarchickou strukturu Autorizovaným agentům poskytuje 4 základní operace register, deregister, modify, search Komunikace pomocí ontologie pro AM JADE zkratka pro Java Agent DEvelopment Framework middleware pro podporu tvorby agentních systémů podle standardů FIPA v jazyce Java vyvíjen v Tilab (Telecom Italia Lab) od roku 2000 Open Source (licence LGPL 2) sestává ze tří hlavních částí: Runtime Environment prostředí pro běh agentů knihovna tříd Agent, Message apod. GUI nástroje pro správu a ladění
Runtime Environment Implementováno v souladu s normami FIPA Základní jednotkou RE je platforma, ta se dále dělí na několik kontejnerů, které mohou běžet na různých počítačích distribuovaně (využívají RMI). Jeden z kontejnerů musí být hlavní, ten obsahuje DF a AMS Poskytuje prostřeky pro mobilitu agentů je možné migrovat agenty mezi platformami V rámci platformy probíhá zasílaní zpráv efektivně (pomocí Java objektů), mezi platformami použití serializace do textových řetězců Runtime Environment DF, AMS DF a AMS jsou implementováni jako agenti (nemají však možnost odmítnout službu v souladu se specifikací FIPA) Je možné s nimi komunikovat standardně zasíláním zpráv, podle protokolu a ontologie definovaných FIPA (FIPA-Agent-Management ontology) JADE však také poskytuje zjednodušený interface pro přístup k těmto službám JADE - programování Základ představuje třída Agent Zapouzdřuje životní cyklus agenta, prostředky pro zasílání a přijímání zpráv a zjednodušenou komunikaci s AMS a DF Vlastní funkčnost agenta je soustředěna v tzv. chováních (Behaviours) JADE poskytuje podporu komunikaci a životní cyklus agentů, neposkytuje prostředky pro uvažování, např. BDI model (existují nadstavby např. JADEX) Agent základní smyčka ne Inicializace agenta Byl agent zabit? ne Vezmi další chování z množiny chování Prováděj chování Bylo chování dokončeno? ano Odstraň chování z množiny chování Ukonči agenta
Chování (Behaviour) Abstrakce pro vykonávání nějaké rutiny V daném okamžiku aktivní právě jedno chování přepínání kooperativní (chování se samo musí vzdát kontroly) důvod: efektivita, složitost synchronizace Tři základní kategorie chování: jednoduché (One Shot, Cyclic...) provádí nějakou konkrétní akci, liší se ukončovací podmínkou složené (sériové, paralelní, založené na FSM) slouží ke spouštění dalších chování ve stanoveném pořadí specifické pro role v komunikačních protokolech (ContractNetInitiator, contractnetresponder) -- metody odpovídají jednotlivým stavům protokolu, jako parametr obdrží příslušné zprávy Příklad jednoduchého agenta public class TimeAgent extends Agent { protected void setup() { addbehaviour(new TickerBehaviour(this, 1000) { protected void ontick() { System.out.println("Agent "+myagent.getlocalname()+": tick="+gettickcount()); ); addbehaviour(new WakerBehaviour(this, 10000) { protected void handleelapsedtimeout() { System.out.println("Agent "+myagent.getlocalname()+": It's wakeuptime. Bye..."); myagent.dodelete(); ); Ukázka registrace agenta u DF public class WeatherForecastAgent extends Agent { protected void setup() { String servicename = "WeatherForecast"; try { DFAgentDescription dfd = new DFAgentDescription(); dfd.setname(getaid()); ServiceDescription sd = new ServiceDescription(); sd.setname(servicename); sd.settype("weather-forecast"); sd.addontologies("weather-forecast-ontology"); sd.addontologies(fipanames.contentlanguage.fipa_sl); sd.addproperties(new Property("country", "Italy")); dfd.addservices(sd); Registrace u DF dokončení DFService.register(this, dfd); catch (FIPAException fe) { fe.printstacktrace(); protected void takedown(){ try{ DFService.deregister(this); catch(fipaexception fe){ fe.printstacktrace();
Zasílání zpráv Zprávy implementovány třídou ACLMessage Odesílány typicky ze speciálního chování Jejich obsah často odpovídá některé ontologii (v JADE implementovány jako objekty, JADE zajišťuje serializaci) ACLMessage cfp = new ACLMessage(ACLMessage.CFP); for (int i = 0; i < selleragents.length; ++i) { cfp.addreceiver(selleragents[i]); cfp.setcontent(targetbooktitle); cfp.setconversationid("book-trade"); cfp.setreplywith("cfp"+system.currenttimemillis()); myagent.send(cfp); Příjem zprávy Zprávy dorazí agentovi do jeho schránky a je jen na něm, kdy si je vyzvedne Zprávy ve schránce je možné téměř libovolně filtrovat Odpověď je generována pomocí msg.createreply() MessageTemplate mt = MessageTemplate.MatchInReplyTo(cfp.getReplyWith()); ACLMessage reply = myagent.receive(mt); if (reply!= null) { if (reply.getperformative() == ACLMessage.PROPOSE) { else { block(); Nástroje pro ladění a správu RMA GUI nástroj pro správu platformy umožňuje spouštění, ukončování, migrace agentů atd. DummyAgent Pro manuální zasílání zpráv agentům a čtení jejich odpovědí Vhodné pro testování agentů bez zkoumání jejich vnitřních stavů (blackbox) SnifferAgent Prostředek pro odchytávání komunikace mezi agenty
Introspector Agent K pozorování agenta zevnitř v jakém se nachází stavu, jaké chování je aktivní, jak vypadá fronta zpráv apod.