Java in Soft Computing
Fuzzy Logic and Expert Systems
Expert Systems is a computer program that uses expert knowledge to attain high levels of performance in a narrow problem area. It is an imitation of a human expert in the sense that it knows almost everything about almost nothing.
Expert systems have facilities for representing existing expert knowledge, accommodate existing databases, learn and accumulate knowledge during an operation, learn new pieces of knowledge from existing databases, make logical inferences, make decisions and give recommendations, and communicate with users in a friendly way (often in a restricted natural language), explaining their decisions and behavior. The explanation facility often helps users to understand and trust the decisions made by an expert system. Learning for expert systems can be achieved by using machine learning and soft computing. Expert systems have been used successfully in almost every human activity, such as education and training, manufacturing, medicine, science, engineering, agriculture, business, and finance. In using existing information technologies, expert systems for performing difficult and important tasks can be deployed quickly, maintained cheaply, improved easily, and refined during operation to accommodate new situations and facts.
Mycin was developed partly in order to explore how human experts make these rough (but important) guesses based on partial information. There are lots of junior or non-specialized doctors who sometimes have to make such a rough diagnosis, and if there were an expert tool available to help them, then this might allow more effective treatment. In fact, Mycin was never actually used in practice. This wasn't because of any weakness in its performance -- in tests it outperformed members of the Stanford medical school. It was more because of ethical and legal issues related to the use of computers in medicine (if it gives the wrong diagnosis, whom do you sue?).
Fuzzy systems have been accommodated into building expert systems, so that they can perform approximate reasoning and represent incomplete, ambiguous, corrupted, or contradictory data and knowledge. Fuzzy systems are rule-based expert systems based on fuzzy rules and fuzzy inference. Fuzzy rules represent, in a straightforward way, commonsense knowledge and skills, or knowledge that is subjective, ambiguous, vague or contradictory. Common-sense knowledge is usually acquired from long-term experience over many years. Fuzzy expert systems have found their way into database queries (the fuzzy-query). A SQL database query is only efficient when the information to store and retrieve is exact. When the information for one attribute is fuzzy, vague, or missing, the whole data item (record) is usually not stored, and the information is lost.
There have been a number of Java-based commercial tools available for building knowledge-based (rule-based) and expert systems. IBM has released Common Rules available for free-download, including source code. Jrules from ILOG is a commercial tool for building a business-rule engine in Java. J.E.S.S. (the Java Expert Systems Shell) from Sandia National Laboratory is the most popular Java tool for building rule-engine and expert systems, commercially. J.E.S.S. is the Java version of CLIPS (C Language Integrated Production System), which is written in C and originated from NASA in 1985.
Sun Microsystems' jumped into rule-engines with a draft specification request (JSR-94) for an API, which is still in the Java Community Process. The author of J.E.S.S. is part of this expert group, and he has announced at the jess-user group that J.E.S.S. will support the upcoming Java rule-engine API. The proposed name for this is javax.rules -- although it is not finalized yet.
Road Ahead for Java
As the debate heats up between J2EE and .NET for writing enterprisewide applications, in my opinion, these two computing platforms will probably do the job for most business requirements. However, I can see that J2EE will have an edge, because of its multiple vendor support, portability across platforms, security, and scalability, etc. One of the next battles between these competing platforms will be centered around which one has a rich set of APIs for writing applications that use machine intelligence. In this regard, Java and J2EE should be hundreds of miles ahead of .NET.
I believe that the buzzword that captures the imaginations of IT managers and developers now is "Web services". They can link, locate, and speak to other entities outside your own system by exploring every linked Internet application. A Web service with no machine intelligence will be inferior to one that accommodates computational intelligence. It is quite easy to train Java developers in a fairly short period of time to understand the .NET platform, but it will take longer to train them in the computational intelligence paradigm.
As Sun is drafting APIs that use machine learning and computational intelligence, I predict that when the next version of J2EE fully supports Web services, all level of Java developers will be able to develop intelligent Web services applications without having to be formally trained in machine intelligence. Java's upcoming sets of APIs that use computational intelligence will have documentation on how to call these class methods without needing to know how the underlying algorithm is implemented.
Software developers are very good in understanding of how to pass parameters to a method of a class and get a return object, but it is always hard to comprehend how it was implemented, especially if the class is from a library written by someone else. These upcoming Java APIs will remove that worry. JSR-87 will be available for public review on May 19, 2002. This is an API for distributed autonomous Java Multi-Agent Systems.
What is an autonomous agent? It is a software agent that can be viewed as perceiving its environment through sensors and acting upon that environment through effectors. The sensors for Java agents are in the Agent Communication Language. If the software agent's knowledge is based solely on built-in knowledge, such that it need pay no attention to its percepts, then the agent lacks autonomy. This is the equivalent of a .NET application that seems intelligent, but the software does what the designer has programmed it to do. It cannot act according to its own experience.
Agent behavior can be based on both its own experience and the built-in knowledge used in constructing the agent for the particular environment in which it operates. If the agent's behavior is determined by its own experience, then the agent is said to be autonomous. This Java agent API is designed to be FIPA (Foundations of Intelligent Physical Agent) compliant. FIPA is a non-profit organization formed by different companies drafting an agreed protocol for multi-agent software systems. This Java agent framework will have an impact in developing intelligent Web services, mobile Java devices (mobile agents), and e-commerce.
There are currently some GPL-licensed FIPA-compliant Java agent, particularly J.A.D.E. (Java Agent Development Framework), L.E.A.P. (Lightweight Extensible Agent Platform), and proprietary ones such as O.A.A. (Open Agent Architecture) from SRI International and AGLET from IBM. It is very important for IT managers to make their decisions on future projects based what advantage the computing platform brings in the long run. Java will unleash some APIs that use machine learning and symbolic AI, which will enhance and elevate the promise of Web services many fold from its current level.
An example is an intelligent software agent that bids on an online auction. You can create an agent and give instructions to it as to the type of item to look for and bid on, the highest price it can bid, etc. You then leave the agent to the task of bidding, while you go to town to see your bank manager or do personal stuff. You do not need to sit at your machine all the time during the online auction. The agent will mimic a real human bidder and act according to its built-in knowledge of the auction. A human bidder from the other side of the world would not know that he/she is bidding against a machine.
IBM demonstrated this at the end of 2001, where the agent system was not an online auction but a trading system. There were six humans and six software agents trading against each other. The humans were not told there were machines involved in trading. At the end of the session, the machine agents had all out-traded the humans.
Overall, the road ahead for Java looks brighter than ever, especially in soft computing. As it stands now, Java is a full and complete general-purpose scientific language.
FuzzyJ is the API for fuzzy logic that I use in my articles. It is a commercial tool from the National Research Council of Canada. The library binary code is downloadable.
FuzzyJ supports J.E.S.S., which can be downloaded.
- Welcome to BISC
- Online Workshop on Soft Computing
- Soft Computing Home Page
- World Federation on Soft Computing
- Internet's Resources for Neuro-Fuzzy and Soft Computing
- Centre for Quantum Computation
- Quantum Computing with Molecules
- Quantum Computation/Cryptography at Los Alamos
- The Quantum Computer
Fuzzy Expert Systems:
- Fuzzy Sets and Systems
- General sources of fuzzy information and research groups
- Fuzzy Logic Research and Life
- Expert Systems for Lithic Analysis
- What Is Fuzzy Logic?
- Introduction to Fuzzy Logic Course
- FANGroup Fuzzy Logic Resources
- Expert Systems Principles and Programming (Third Edition), by J. Giarratano , PWS Publishing Co.
- Intelligent Java Applications for the Internet and Intranets (Java-based book) by Mark Watson, Morgan Kaufman.
- Intelligent Systems and Soft Computing: Prospects, Tools and Applications (Java-based book) by Behnam Azvine, Nader Azarmi, and Detlef D. Nauck, Springer Lecture Notes in Artificial Intelligence.
- Intelligent Control Systems Using Soft-Computing Methodologies by Ali Zilouchian and Mo Jamshidi, CRC Press.
- Uncertain Rule-Based Fuzzy Logic Systems: Introduction and New Directions by Jerry M. Mendel , Prentice Hall.
- Computer Vision and Fuzzy-Neural Systems by Arun D. Kulkarni , Prentice Hall.
- Fuzzy Logic: Intelligence, Control, and Information by John Yen & Reza Langari, Prentice Hall.
- Fuzzy and Neural Approaches in Engineering by Leften H. Tsoukalas, and Robert E. Uhrig, John Wiley & Sons.
- Soft Computing for Knowledge Discovery: Introducing Cartesian Granule Features by James G. Shanahan, Kluwer International Series in Engineering and Computer Science (Volume 570).
- Soft Computing and Its Application by Rafik Aliev and Rashad Aliev, USA World Scientific Publishing Co.
About the AuthorSione Palu has developed software for Publishing Systems, Imaging, and Web Applications. Currently, Palu develops (in Swing) his own software application for Symbolic and Visualization Mathematics for high-school students. Palu graduated from the University of Auckland, New Zealand, with a science degree in mathematics and computing. He has a personal interest in applying Java and mathematics in the fields of mathematical modeling and simulations, expert systems, symbolic AI and soft computing, wavelets, digital signal processing, and control systems.
Page 2 of 2