Newsletter sign-up
View all newsletters

Sign up for our Enterprise Java Newsletter

Enterprise Java

Agents can think, too!

Learn how to increase your agent's IQ to make it more robust, reliable, and useful

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
One of my favorite mottos is, If you want a job done right, do it yourself! It's generally sage advice, but unfortunately even the best of us are limited by what we can accomplish ourselves. What we really need is a helpful assistant, a tireless gopher, someone -- or something -- to take care of the tedious administrative details of everyday life: finding the lowest priced product, waiting in line for those hard-to-get concert tickets, doing our taxes. In short, we all need an agent.

If this sounds familiar, it may be because you and I have read the same whitepapers, press releases, and shallow articles. They're filled with all sorts of good ideas about what agents should do, but they neglect to come clean with what agents can do.

You see, in order to actually do some of the things their promoters promise, agents have to be given the ability to think. And people have been trying -- with little success -- to get computers to think since the '60s.

Artificial Intelligence means never having to say you're sorry

The one point missed by many intelligent-agent aficionados (especially those promoting commercial products) is that artificial intelligence (AI) is hard to come by. Over thirty years have passed since Slagle penned his now-famous Artificial Intelligence: The Heuristic Approach. LISP, the longtime darling of the AI community, was developed at MIT back in the '50s, well before many of us were even born. And now, as the millennium slowly approaches, we find we still haven't built our HAL 9000.

As a result, many dreams of intelligent agents have turned to dust. And the failed hype has put a bit of tarnish on agents and agent technology. Despite all this, I believe there are at least two valid reasons to give your agents a touch of the smarts (especially if they're of the mobile variety):

  1. Mobile agents must operate reliably even when they're not in contact with you or their home base. Remember, mobile agents may live in environments with poor network reliability.

  2. Many of the problems agents need to solve are not well suited to strictly procedural solutions. Agents may need to move from host to host, asking questions and accumulating information; they need the capacity to deal with a vague final destination while calculating their immediate destination, at each step of the way, based on analysis of the information they've acquired.



Artificial Intelligence, neural networks, expert systems -- oh my!

There are many tools and techniques for making machines think; AI is a broad field of endeavor. At one end are neural networks -- computing systems designed to mimic the low-level structure and function of the nervous system. At the other end are expert systems -- computing systems designed to imitate higher level cognitive processing.

Because higher level cognitive processing is what we're shooting for, let's take a closer look at expert systems.

Expert systems and agents

An expert system performs a set of activities traditionally associated with highly skilled or knowledgeable humans -- activities like medical diagnosis and stock market analysis. Admittedly, we don't want our agents to be skilled in these fields, however we do want them to be competent entities in the environments in which they live.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comment
Login
Forgot your account info?
Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources
  • Download the source code http://www.etcee.com/javaworld/ki/index.html
  • Read up on Jess, the Java expert system shell http://herzberg.ca.sandia.gov/jess
  • The CLIPS expert system shell http://www.ghg.net/clips/CLIPS.html
  • See all of Todd's previous How-To Java columns http://www.javaworld.com/topicalindex/jw-ti-howto.html