Sunday, October 15, 2006

Open Thread: Fuzzy Backward Chaining Rules

Jess programmers know that Jess is, by design, a forward-chaining rule engine that makes deductive inferences. However, it is also quite capable of making inductive inferences by backward chaining. Additionally, I think that it's safe to say that most Jess programmers primarily work with bivalent or "crisp" logic wherein all expressions can be evaluated as TRUE or FALSE and variables have a definite value.

Some years ago, Bob Orchard created the FuzzyJ toolkit featuring FuzzyJess, which added fuzzy logic capabilities to Jess proper. Fuzzy logic allows one to reason with imprecise quantities where boundaries between TRUE and FALSE are blurred and variables can have "membership" in more than one set at a time. Real-world applications include substitutions for traditional feedback-control systems (heavy equipment stability, camera and video autofocus, video "jiggle" correction) and numerous process control examples. An example of a forward-chaining, fuzzy logic control applications can be found in Part 5, Chapter 14 of Ernest Friedman-Hill's Jess In Action (Manning, 2003).

Of the Top Ten Uses for rule-based expert systems commonly mentioned in the literature (interpretation, prediction, diagnosis, design, planning, monitoring, debugging, repair, and instruction, it is the last -- control -- which indeed seems to favor fuzzy, forward chaining applications.

Now, I have coded a good number of crisp, forward chaining systems, and I have experimented with fuzzy forward-chaining systems. I have also coded crisp, backward-chaining apps. However, I have yet to see any example of a fuzzy, backward-chaining expert system.

In fact, in my quick lit search, I was only able to find two papers in the last twelve years:

[1] Amould, Thierry , Tano, Shun'ichi; "Definition and Formulation of Backward-reasoning with Fuzzy If... Then... Rules", Fuzzy Systems, IEEE World Congress on Computational Intelligence, Proceedings of the Third IEEE Conference on, 864-869 vol.2, June 1994.

[2] Kashiwagi, D., Moor, W.; APPLICATION OF BACKWARD CHAINING, "FUZZY LOGIC," AND THE MANAGEMENT OF INFORMATION TO PROCUREMENT OF FACILITY SYSTEMS/SERVICES, Proceedings of the 17th International Conference on Computers and Industrial Engineering, pp. 399 - 403, 1995.

I have already identified where backward chaining would be useful in my research, and I suspect that fuzzy rules might perform better than crisp ones for my intended application. I was wondering if anyone out there has significant experience in coding fuzzy, backward-chaining expert systems; and, if so, would you please recommend some current literature?

Any thoughts or anecdotes about the topic are welcome!

No comments: