A Large-Scale Expert System Shell using Fuzzy Logic for Uncertainty Reasoning
FuzzyShell from Purdue Robot Vision Lab is a fuzzy expert system shell for large-scale general-purpose applications. This project was motivated by the observation that all the currently available (either through commercial channels or as free-ware over the internet) fuzzy expert system shells work correctly for only one-shot inference. In other words, when rules are allowed to trigger other rules, these system violate some basic tenets of fuzzy logic. We must hasten to add that, as opposed to shells, there do exist many domain-specific fuzzy expert systems that carry out a correct implementation of fuzzy logic. However, besides being domain specific, these systems tend to be small, often involving only tens of rules, as opposed to hundreds or even thousands.
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:
    •    FuzzyShell for SGI-IRIX
    •    FuzzyShell for HP-UX
    •    FuzzyShell for SunOs
    •    FuzzyShell for Solaris
    •    FuzzyShell for Linux
Any of these can be downloaded from an ftp directory. Clicking at this link will reveal four files for the above four items. Click with the right button of your mouse on any of these files for a pop down menu to download the clicked file into your local directory.
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.
    •    architecture.ps: This is our manuscript explaining the architecture of FuzzyShell. This document also contains many implementation details. This document has been published in the IEEE Transactions on Fuzzy Systems, pp. 563-581, November 1998. If at all possible, the reader should try to acquire the published copy as it is free of typographical and other such kinds of errors.
    •    manual.ps: FuzzyShell manual
    •    ScreenShot 1
    •    ScreenShot 2
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.
J. Pan, G. N. DeSouza, and A. C. Kak, "FuzzyShell: A Large-Scale Expert System Shell using Fuzzy Logic for Uncertainty Reasoning," IEEE Transactions on Fuzzy Systems, pp. 563-581, November 1998.  [ps, 1.0MB]
J. Pan and A. C. Kak, "Design of a Large-Scale Expert System using Fuzzy Logic for Uncertainty Reasoning," Proceedings of the World Congress on Neural Networks, Vol. 2, pp. 703-708, July 17-21, Washington DC, 1995.  [ps, 0.2MB]
    •    FUZZY-NAV: A Vision-based Robot Navigation Architecture using Fuzzy Inference for Uncertainty-Reasoning