I was cribbing to a colleague of mine that I had to give an example of a specific kind of multiagent system, a kind that I think didn't exist. The colleague suggested that it would be impossible to do that because there is not a single multiagent system in the world, let alone a specific kind.
He couldn't be more wrong. Multiagent systems are everywhere; it is just that we build these systems without using agent-oriented concepts, so we do not see them as such. The application eBay is a multiagent system: it involves eBay (the organization), bidders, sellers, payment processors, and so on. The application Orbitz is a multiagent system: it involve customers, airlines, Orbitz (the organization), credit card companies, banks, and so on. Your home security system is a multiagent system if it includes active monitoring by a security agency. These are multiagent systems because they involve interactions between autonomous parties, in other words agents.
You and your microwave do not constitute a multiagent system: the microwave is under your control. However, it would be a multiagent system if your microwave could say "No, I don't want to defrost the chicken now". Whereas you and the security agency that installed the sensors constitute a multiagent system, neither two or more sensors by themselves nor the sensors in conjunction with you constitute one. There is no sense in which such a sensor is autonomous in relation to you nor in relation with other sensors.
Every agent is a component, but not every component is an agent. Every multiagent system is necessarily distributed, but not every distributed system is a multiagent system.
The only test of agenthood is autonomy. Something is not an agent because it has a sense, reason, act (SRA) loop. Autonomy can only be understood in relation with other agents; the SRA loop is about the internal construction of the agent. Whether a bidder on eBay is a human or "intelligent" software using an SRA loop or "stupid" software -- for example, one that blindly raises its bid every so often -- does not change the fact that they are all agents.
An agent is not an agent because it is written in JADE or WADE (agent-oriented programming languages); it is not one because it was modeled and designed using agent-oriented abstractions. Anything that is autonomous is an agent; anything that is not is not an agent, and labeling such a thing as an agent is to abuse the term. In fact, the term "autonomous agent" is redundant in itself.
As multiagent system researchers, our goal is to enable their programming in a way that accommodates autonomy.
Showing posts with label autonomy. Show all posts
Showing posts with label autonomy. Show all posts
Tuesday, November 10, 2009
Thursday, September 24, 2009
Beyond loose coupling: Completely decoupled agents
In the beginning, a software system was thought of as a process. The process invoked methods to carry out its intended tasks. Both object-oriented and procedural programs are essentially of this nature. The various system components were said to be tightly coupled or integrated.
This view of a software system evolved into one that involved multiple communicating processes, typically by messaging passing. This view reflected a looser coupling between processes and emphasized interoperation between processes via protocols. Traditionally, a protocol specifies the ordering and synchronization constraints upon the sending and receiving of messages by each process.
It is time for another sea change in software systems modeling. Instead of talking in terms of processes, we need to talk in terms of autonomous agents engaging each other. This is only essential given that many of today's Internet applications are services provided by autonomous organizations, and typically involve multiple such organizations. An agent has a legal identity like you and me; properties such as trust, reputation, and responsibility can be attributed to agents. By contrast, a process has no legal identity, and it makes no sense to talk about it in terms of the above properties.
The word 'autonomous' has been much used and abused, and tends to invoke skeptical looks from many and even derision from some. Others conflate it with autonomic. I mean autonomous in the specific sense that no agent has control over another. Autonomy for me is strictly an interagent relation, not between agents and their developers, and it most certainly has nothing to do with intelligent behavior.
Traditional protocols are all about control; therefore, they are not suitable to realize engagements. Engaging means interacting meaningfully. There is nothing meaningful about traditional protocols. The difference between TCP and an e-business protocol such RosettaNet is only in their functionality; not in the nature of their specifications.
To be able to engage, agents have to be coupled only to extent required to interact in a semantically correct manner and no more. Semantic means in general -- for all applications, whether it be banking, supply chain, selling books or anything else. Semantic means at the level of the application.
Commitments yield exactly such a notion of semantic correctness: an agent is interacting correctly as long as it satisfies its commitments. What do we care then whether goods follow payment or payment goods! It's all the same as long as the involved commitments are satisfied!
With commitment-based protocols, agents would be only be nominally coupled, for they would be free to act as they please. An agent could send any message anytime. It would even have the choice of violating its commitments (typically though, there would be penalties for doing that). I prefer to call such agents completely decoupled agents, for they are no more coupled than is absolutely necessary.
This view of a software system evolved into one that involved multiple communicating processes, typically by messaging passing. This view reflected a looser coupling between processes and emphasized interoperation between processes via protocols. Traditionally, a protocol specifies the ordering and synchronization constraints upon the sending and receiving of messages by each process.
It is time for another sea change in software systems modeling. Instead of talking in terms of processes, we need to talk in terms of autonomous agents engaging each other. This is only essential given that many of today's Internet applications are services provided by autonomous organizations, and typically involve multiple such organizations. An agent has a legal identity like you and me; properties such as trust, reputation, and responsibility can be attributed to agents. By contrast, a process has no legal identity, and it makes no sense to talk about it in terms of the above properties.
The word 'autonomous' has been much used and abused, and tends to invoke skeptical looks from many and even derision from some. Others conflate it with autonomic. I mean autonomous in the specific sense that no agent has control over another. Autonomy for me is strictly an interagent relation, not between agents and their developers, and it most certainly has nothing to do with intelligent behavior.
Traditional protocols are all about control; therefore, they are not suitable to realize engagements. Engaging means interacting meaningfully. There is nothing meaningful about traditional protocols. The difference between TCP and an e-business protocol such RosettaNet is only in their functionality; not in the nature of their specifications.
To be able to engage, agents have to be coupled only to extent required to interact in a semantically correct manner and no more. Semantic means in general -- for all applications, whether it be banking, supply chain, selling books or anything else. Semantic means at the level of the application.
Commitments yield exactly such a notion of semantic correctness: an agent is interacting correctly as long as it satisfies its commitments. What do we care then whether goods follow payment or payment goods! It's all the same as long as the involved commitments are satisfied!
With commitment-based protocols, agents would be only be nominally coupled, for they would be free to act as they please. An agent could send any message anytime. It would even have the choice of violating its commitments (typically though, there would be penalties for doing that). I prefer to call such agents completely decoupled agents, for they are no more coupled than is absolutely necessary.
Subscribe to:
Posts (Atom)