Software Agenter med JADE Jaran Nilsen javabin Sørlandet, Kristiansand, 8. januar 2009
Jaran Nilsen Styremedlem i javabin Sørlandet Senior Software Developer i Integrasco A/S 5 år http://www.integrasco.no Annet itunes Agent http://ita.sourceforge.net jade4spring http://jade4spring.sourceforge.net
I kveld Hva er software agenter? Multi-agent systemer (MAS) Bruksområder Fordeler og ulemper JADE og Jade4Spring Demo: Utvikling av enkele software agenter med JADE og Jade4Spring
Hva er en software agent?
Hva er en software agent? Konseptet agenter har vært tilstede siden 1970-tallet Deres fysiske bror roboter har vært tilstede enda lengre Ideologi: Fremtiden vil bringe personlige assistenter som kan gjøre alt for oss Arrangere møter for deg Bestille flybilletter og hotell når du skal ut på reise Dagens agenda mens du spiser frokost Mote-tips? Kjøleskapet handler for deg...
Hva er en software agent? Latin: Agere å gjøre, avtale om å handle på ens vegne [1] Software entitet som til en viss grad arbeider selvstendig Designet for å arbeide uten innblanding fra en bruker bestemmer selv når den skal eksekvere oppgavene sine Definisjon[3]: Anything that can be viewed as perceiving its environment through sensors and acting upon that environment through effectors Selv mennesker kan sees på som agenter ut i fra denne definisjonen
Hva er en software agent? Det finnes ingen standardisert definisjon av software agenter Ofte veldig vanskelig å definere software som agent eller ikke et veldig flytende begrep Generell enighet om at software agenter må oppfylle noen krav: Persistent (vedvarende): Blir ikke fortalt når den skal eksekvere oppgaver bestemmer dette selv Autonomous (selv-styrt): Utfører oppgavene sine med ingen eller lite bruker-interraksjon Social: Har mulighet for å kommunisere med andre agenter og samarbeide Reactive: Sanse miljøet / konteksten og reagere på hendelser
Hva er en software agent? Konklusjon: En software agent er ikke noen voldsomt avansert og komplisert form for software, men snarere et begrep for å beskrive autonome prosesser som jobber uten lite innblanding fra brukere Generelt sett utfører software agenter mer avanserte oppgaver enn den gjennomsnittlige desktop applikasjon og er ofte designet for å gjøre oppgaver uten at en bruker trenger å blande seg inn
Multi-agent systems (MAS) Agenter er et forholdsvis gammelt konsept MAS er dukket opp i de senere årene Flere software agenter som jobber sammen for å løse mer komplekse problemer Utspring fra distribuerte systemer Distribusjon kombinert med behovet for at systemer representerer våre beste interesser og behov, krever at systemene sammarbeider og oppnår enighet Agentcities.org (eksisterer ikke lenger) Drømmen om en agent-verden hvor agenter tilbyr tjenester og kan samarbeide på tvers av grenser og platformer
Bruksområder Data mining og analyse Automatiske prosesser som krever lite innblanding av en bruker Simuleringer Spill Distribusjon av oppgaver og samarbeid mellom prosessene gjennom meldingsutveksling Simulering av store folkemengder, trafikk etc. Non-Player Characters Bots - tar på seg rollen som en spiller GPS-modul i bilen...
Hvorfor software agenter? Rammeverk basert på standarder Allerede implementert funksjonalitet for Meldingsutveksling Eksekvering Håndtering av livssyklus Enkel tilgang til verktøy for å overvåke og administrere et distribuert agent-miljø Ryddig og strukturert måte å utvikle selvstendige prosesser på
Hvorfor ikke software agenter? Den vanligste kritikken: Testing kan være en utfordring spesielt med tanke på integrasjonstester når man f.eks. skal teste oppførselen til en agent i samarbeid med flere andre Ingen standard for kommunikasjon med systemer som ikke er agent-baserte Ingen standard for inter-mas kommunikasjon
Agent-rammeverk Voyager Concordia (Mitsubishi) Grasshopper Able (IBM) IMPACT JADE +++
JADE Java Agent DEvelopment Framework Middleware for utvikling av distribuerte multi-agent systems[3] Uviklet og vedlikeholdt av Telecom Italia Labs Open source robust og aktivt miljø rundt rammeverket Implementerer FIPA spesifikasjonene http://jade.tilab.com
FIPA (.org) Foundation of Intelligent Physical Agents Spesifikasjoner for flere forskjellige aspekter ved software agenter Lifecycle management Message transport Message structure Interaction protocols Ontologies Security
FIPA (.org) Inside the scope of FIPA: Platform services provided to the agents Message Transport System Outside the scope of FIPA: The agent itself
JADE - arkitektur
JADE - tjenester Gule-sider tjeneste Directory Facilitator (DF) Effektiv kommunikasjon via Agent Communication Language (ACL) Ontologies for avansert agent kommunikasjon og standardkompabilitet Intra-platform mobilitet agenter kan flytte seg mellom containere Verktøy for administrasjon, overvåking og debugging av agenter
En JADE agent Består av to vikitge elementer Agent-klassen (extends jade.core.agent) Behaviours: her ligger selve funksjonaliteten til agenten - agentens actions public class MyAgent extends Agent { protected void setup ( ) { } // TODO Initialize the agent and // add behaviours protected void takedown() { // TODO Perform any clean up before the // agent is destroyed } }
En JADE agent - Behaviours jade.core.behaviour Behaviour base class for alle behaviours OneShotBehaviour Kjøres umiddelbart, og aldri igjen før agenten restartes TickerBehaviour Kjøres periodisk WakerBehaviour Kjøres en gang, etter en gitt tid ParallelBehaviour Kjører under-behaviours parallelt SerialBehaviour Kjører under-behaviours serielt ++
Jade4Spring Tillegg til JADE for enkel integrasjon av JADE agent-containere i Springbaserte applikasjoner Utviklet av Integrasco og brukt internt før vi bestemte oss for å release prosjektet som open source på Sourceforge i februar i fjor. Versjon 2.0 under utvikling og vil by på enda enklere integrasjon, samt en rekke nye features http://jade4spring.sourceforge.net <bean id="jade" class="net.sf.jade4spring.jadebean" init-method="startcontainer" lazy-init="false" destroy-method="stopcontainer" />
Let's write some code! :)
Videre lesning http://jade.tilab.com - registrer og last ned Inneholder tutorials og guides http://jade4spring.sourceforge.net Developing Multi-Agent Systems with JADE (ISBN: 978-0-470-05747-6) http://eu.wiley.com/wileycda/wileytitle/productcd-0470057475.html
Referanser [1] Wikipedia.org http://en.wikipedia.org/wiki/software_agents [2] Artificial Intelligence: A Modern Approach. Stuart J. Russel and Peter Norvig, 1995 [3] JADE A White paper F. Bellifemine, G. Caire, A. Poggi, G. Rimassa