Chapter Outline

This book is divided into two major parts. Part 1 focuses on the artificial intelligence algorithms and techniques used to make applications and agents intelligent. Part 2 builds on Part 1 by taking the AI algorithms and using them in an intelligent agent framework and example applications. All programs and examples are written entirely in Java.

In Chapter 1, we discuss some of the history of artificial intelligence research and the basic premises of both the symbol processing and neural network (connectionist) schools. We explore the evolution of artificial intelligence systems into today’s intelligent agents and the simultaneous emergence of network computing and the World Wide Web. We discuss the many ways that artificial intelligence can be used to add value to commercial software systems. We examine the Java programming language from an intelligent agent perspective in terms of support for autonomy, intelligence, and mobility.

In Chapter 2, we show how to solve problems using search and state-based definitions of the world. We describe how problems can be mapped onto a state-space representation, and how common AI search strategies such as breadth-first, depth-first, and best-first search can be used to find solutions to problems. We implement these search techniques in Java and develop an application to help us examine their behavior on sample problems. Other more advanced heuristic search techniques are also discussed. We end the chapter with a discussion of genetic search algorithms and describe our implementation.

Chapter 3 deals with the major types of knowledge representation used in AI systems. We start with a general discussion of the types of knowledge we need to represent and then explore propositional and predicate logic, frames, and semantic networks. An emerging standard knowledge representation, the Knowledge Interchange Format (KIF), is described in detail. Finally, we discuss the issues when building a domain-specific knowledge base. Knowledge representation is a key element in any artificial intelligent application, so we pay particular attention to the strengths and weaknesses of the various techniques.

Reasoning systems, specifically rule-based systems, are the focus of Chapter 4. The basic elements of a rule are described, including antecedent and consequent clauses, certainty factors, and sensor and effector (action) rules. An example rule base is used throughout the chapter to illustrate the concepts related to forward chaining and backward chaining with rules. We develop a Java application and classes to implement rules and rule-based inferencing. Fuzzy rule systems that combine rules and fuzzy logic are described and implemented in Java. We also explore the issues related to planning, a specialty in AI that is particularly relevant to intelligent agent systems.

In Chapter 5, we discuss learning and adaptive techniques and the advantages such behavior provides in intelligent agents. We describe the fundamental issues in building learning systems, and the major paradigms including supervised, unsupervised, and reinforcement learning. An introduction to neural networks and the fundamentals of back propagation networks and self-organizing feature maps are described. Next, we show how information theory is used to build decision trees using induction. These three learning algorithms are then implemented in Java, along with an application to serve as a test-bed for exploration.

Chapter 6 provides a bridge from the artificial intelligence techniques described in Chapters 2 through 5 to the intelligent agents and the applications developed in the rest of the book. We look at the agent attributes of perception and action and how AI provides the solutions. The issues related to multi-agent systems are also discussed. The classic blackboard agent architecture is described as an introduction to the general topic of communications between agents. The Knowledge Query and Manipulation Language (KQML) is examined as the leading approach for communicating between agents. Finally, we discuss how agents can cooperate and compete in the emerging electronic commerce world.

In Part 2, we change our focus from the underlying artificial intelligence issues and techniques to their application to major intelligent agent paradigms. Part 2 consists of a set of application chapters, where we design and build an intelligent agent architecture and then apply it to several common application domains. We build on the artificial intelligence functions developed and described in Part 1.

Chapter 7 is a key chapter in this book, where we develop the CIAgent intelligent agent architecture, going from requirements through specifications and design. We describe the major Java classes, the functions they provide, and their Java implementations. The Java Beans software component model is evaluated as it relates to intelligent agent requirements. Finally, we extend the rule-based processing capabilities introduced in Chapter 4 by adding support for Facts, and Sensors and Effectors in rules.

Chapter 8 illustrates how we can use our CIAgent framework to construct an application that provides a simple agent platform, allowing users to develop and plug-in their own agents. We develop several CIAgent intelligent agents, one to schedule work for other agents, one to watch file states, one to notifiy the user of events, and one to monitor airfares over the Internet. The airfare agent uses rules and forward chaining reasoning to determine which flights might interest the user. The agents are all JavaBeans and provide their own Customizer dialogs to edit their properties. Multi-agent system applications can be created in this application through the use of event notifications between agents.

The Internet is the focus of our intelligent agent application in Chapter 9. We design and develop an information filter application that uses several agents to download data from Internet news groups and web pages and to intelligently filter that information using neural networks. The user can specify a set of keywords that are used to score news articles for their potential relevance to the user. Three different types of filtering are provided. Basic keyword filtering orders the articles based on the total number of keyword matches. Neural segmentation is used in cluster filtering, where the article profiles are clustered and the scores in each cluster are averaged. In feedback filtering, articles are assigned a relevance value ranging from useless to interesting. These values are used as the target value to train a back propagation neural network model to predict the relevance scores of new articles.

Chapter 10 focuses on the issues involved when autonomous agents interact in multiagent systems. We develop an electronic marketplace application, with a CIAgent-based Facilitator as the market manager. BuyerAgents and SellerAgents communicate with the Facilitator using KQML-like messages and the Java Beans event framework. The sales negotiation strategies range from simple hardcoded logic to rule-based inferencing using action rules.

We conclude in Chapter 11 with an examination of several Java-based agent environments and applications. These include IBM’s ABLE, Reticular Systems Inc.’s AgentBuilder, IBM’s Aglets, FIPA-OS, Tryllian Systems’ Gossip, CSELT’s JADE, Stanford University’s JATLite, Sandia Lab’s Jess, ObjectSpace’s Voyager, and British Telecom’s ZEUS. We close with a discussion of the state of the art of Java intelligent agents and expected future developments.

Appendix A provides the source code for several of the example rule-bases used in Chapter 4. Appendix B contains the data sets used in the Learn application in Chapter 5. Appendix C contains information about the code on the CD-ROM. The Bibliography is a resource list of artificial intelligence, intelligent agent, and Java papers, articles, and books.