|
Autonomous Agent
|
A system element that functions independently of centralized control by managing its own behavior.
Autonomy is deeply profound, and best explained with a long familiar example. Consider a socialist country with a planned central economy. While local businesses and citizens exist apart from their government, they get most crucial instructions from the central government. Businesses are told what to manufacturer, how much, when. The byword is Planned Production. Citizens are told where to live, where to work, where they can travel, and in some cases what they can profess to believe.
As history has now shown, socialism works well in theory, but not in practice. The reason is a country is such a horrendously complex system that autonomy is the more effective method of control. If a business can decide what to produce, for example, it is more likely to produce what is needed.
Some may object that free markets are not perfect either. True, but let's not throw the baby out with the bath. Neither free markets nor centrally planned ones are perfect, because what we have here is an example of a continuum of a variable's range. The variable is the percentage of autonomy and the end points are extremes to be avoided. Zero autonomy is too topheavy to be effective. Complete autonomy is chaotic anarchy.
For example some centralized coordination is necessary to give a country a useful highway system. Highway agents are created to do just that. They get their charter from other agents: Congress and the Executive branch. The highway agents are given a broad mission rather than tight, specific, frequent orders. When a road needs to be built, construction agents bid on it, rather than one being selected per a gigantic plan. And in turn, employee agents are asked how much they will accept to do a certain job, etc. What we see here is a fine example of an incredibly complex system producing equally incredibly good results, and that one of the main reasons for successful system behavior is leaning over to the autonomous end of the spectrum of control.
We have deliberately choosen the analogy of soclialism, because we have all seem its colossal collapse. Would you believe that current software engineering is due for a similar collapse, unless it changes? That's because the developer plays the role of central planner. Even our best current efforts, with standards, infrastructure, frameworks, classes and objects, don't begin to be autonomous enough. We tell an element precisely how it's initialized and what to do when a message is received. If we don't like that behavior, we recode it. The element has very little to say about its own behavior. It's as if the developer is King, and the code is a sea of serfs in object oriented bondage. But by favoring autonomy over central control in system and element design, and swiftly moving there with new software engineering practices, we can avoid the unexpected but inevitable collapse of our profession. (This somewhat editorial paragraph is dated January 2001 :-)
The advantages of autonomous agents over those without much autonomy are numerous. Here's a few. The last one wins the case hands down.
1. Better (faster, cheaper, more appropriate) response to local conditions.
2. Less top level architecture and detailed design is required.
3. Shorter dependency chains.
4. Much higher reuse due to more local dependencies.
5. "Life like" behavior becomes easier, such as ability to evolve to new conditions, self repair, growth, geographical migration, useful or entertaining personalities, and use of seemingly simple rules to achieve complex results.
6. Much refactoring is replaced by elements doing that themselves.
7. They can produce many types of emergent behavior that cannot appear without widespread autonomy, and they can do it to astonishing depth, even better than a human could imagine.Thus Autonomous Agents are the best way to produce complex emergent behavior, which is the chief goal of today's software systems. Small wonder we're having a bit of trouble. :-)
![]() |
Use Autonomous Agents whenever a system is, or will become, so complex that you'd like to take a breather and let it play your role. :-) |