The main reason why the commercially available and other fuzzy expert system shells fail to work correctly for multi-step inference are laid out in our paper that was published in the November 1998 issue of the journal IEEE Transactions on Fuzzy Systems, pp. 563-581.
Our fuzzy expert system shell, called FuzzyShell, has been designed by generalizing Rete networks -- the soul of traditional non-fuzzy large-scale expert systems -- to the case of fuzzy logic. Explicitly or implicitly, all well-known shells for non-fuzzy reasoning (e.g., CLIPS, OPS5, OPS83, ART, etc.) are founded on the notion of Rete Networks. A Rete Network basically ameliorates the computational complexity that would otherwise be associated if all the rule-antecedents had to be matched with all the facts for every cycle of the inference engine in order to determine what rules to fire.
FuzzyShell is an extension of CLIPS5.1. As documented here, the modifications made to CLIPS5.1 are extensive. Unlike CLIPS, FuzzyShell allows the rules and facts to be represented by fuzzy terms characterized by membership functions. The inference engine of FuzzyShell performs fuzzy pattern matching between the rule-antecedents and the facts, and allows fuzzy evidence to be aggregated when fuzzy inferences are made about the same linguistic variable by different rules. To be specific, in FuzzyShell a fact like (robot (speed fast)) will match a rule-antecedent like (robot (speed slow)) if there exists an overlap between the membership functions associated with the terms fast and slow.
FuzzyShell will also correctly fire all the relevant rules and aggregate all the evidence about a linguistic variable before allowing that linguistic variable to trigger further rules in chained inference. Except for the newly created commands that are related to fuzzy reasoning, the syntax of FuzzyShell commands is the same as for CLIPS5.1. This we have done for the convenience of the user. (However, it hides the fact that the internal workings of the two systems are radically different.)
Like CLIPS, FuzzyShell is designed to be highly portable. FuzzyShell is completely written in C Language and can be run under SGI's IRIX, HP's HP-UX and Sun machines using both SunOS and Solaris. FuzzyShell can also be run on PC (Linux) and with slight modification it could also run on Mac machines. FuzzyShell also provides some useful graphical tools to display intermediate results, such as the membership functions of fuzzy terms and defuzzification results; this is to facilitate program development and troubleshooting.
The FuzzyShell Executables, Manual and Manuscript:
Listed below are the FuzzyShell executables, the manual, and the manuscript that presents the implementation details of the FuzzyShell architecture. The source code is also available upon request and with prior arrangement with Purdue Robot Vision Lab.
• Currently available are five different versions of the FuzzyShell executable code, all for the X windows environment:
As mentioned above, FuzzyShell is an extension of CLIPS. So before you download our software, make sure you have the license to run CLIPS on your machine. This license can be obtained with a nominal fee from COSMIC, the NASA software distribution center. You currently do not need a license to run our extensions to CLIPS as long as you are only downloading the executables.
G. N. DeSouza, A. C. Kak , Reply to "Comments on 'FuzzyShell: a large-scale expert system shell using fuzzy logic for uncertainty reasoning," IEEE Transactions on Fuzzy Systems, vol. 8, no. 6, pp. 817-21, Dec. 2000.
• FUZZY-NAV: A Vision-based Robot Navigation Architecture using Fuzzy Inference for Uncertainty-Reasoning