See, I told you I’d talk about it soon. So, let’s start at the beginning. What is an agent? In the most basic sense, an agent is something with autonomy; that is, an agent is something that can work without oversight to accomplish some goal. Broad, eh? Let’s get more specific, then. We’re really talking about software agents here: a piece of software that has some level of intelligence and works on its own. This is still pretty broad, but we’ll use this definition moving forward.
An agent by itself isn’t that interesting. What makes these useful is their ability for collaboration. We call a collection of agents a multi-agent system. Just so that we are clear, I want to differentiate between two different types of multi-agent system. The more common type is used in computer simulations. Think the Game of Life. While these are certainly an interesting topic, they are not today’s topic.
Instead, we’re talking about agent-oriented software engineering. Think of each agent as a software component, and the application as the system created from the interactions of the agents.
FIPA
Before we get any further, we should talk about the Foundation for Intelligent Physical Agents (FIPA). FIPA is a IEEE organization that promotes agent-based technology (the ‘Physical’ part of their name is now a bit of a misnomer, since they focus on software agents). More importantly, they have a set of specifications for agent systems. The FIPA specifications don’t deal with autonomy or intelligence; instead, they talk about agent management and communication.
Presumably, and agent development environments that implements the FIPA specification should be able intercommunicate. I haven’t had much of a chance to test this yet, but I imagine it’s true. I can go into the specifics of the specification later on.
Existing Libraries/Environments
On the FIPA website, 10 different environments are listed as available implementations of their specification. Of these, 3 seem to still exist in any capacity whatsoever. Two of these seem to have incomplete or non-existent FIPA support anymore. The third one, JADE, seems to be the only updated and maintained environment. I’ve also found SPADE, an implementation using XMPP and Python, but it doesn’t seem to be actively maintained, either (their last commit was nearly a year ago). It may still work, but I have yet to test it.
Jade
The Java Agent DEvelopment Framework (JADE) is, as its name implies, a set of libraries for creating agents in Java. It is fully FIPA compliant (and, in fact, seems to be the flagship FIPA product). It’s owned by Telecom Italia, but is FOSS under the LGPL. The latest version is 4.0.1, which was released 7/7/10.
If you think multi-agent systems are the greatest thing since sliced bread, and simply must implement something in them now, then JADE is probably your best bet. The libraries are written in Java, so they are portable to most modern OSs. It also seems to be able to run on mobile devices, although I don’t know too much about that.
Spade
SPADE, or the Smart Python multi-Agent Development Environment, is a set of libraries used to create multi-agent systems in Python. As a bioinformaticist, I’ve been meaning to improve my understanding of Python for a while now, so I may delve deeper into this soon.
SPADE is based off XMPP/Jabber technology. This is a pretty cool idea; in fact, PADE (we’ll get to it later, I promise!) was very nearly based off XMPP, too. I ultimately decided against it, but that’s a later topic.
I haven’t played with SPADE quite enough yet to talk about it’s reliability or performance. It does seem to be a much smaller (in scale) project than JADE, which is backed by a pretty large consortium of companies and coders. The last release appears to be the 2.0 RC4 release, in June 2010.
Next time, we’ll talk about the environment I’m developing (PADE). If anyone actually reads this and has any questions, feel free to post a comment.
No comments:
Post a Comment