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!

Monday, October 09, 2006


In my long ago undergrad days at Michigan State, we had a local radio station, Q-106, that was notorious for its riske' adverts and great tunes during a period when "alternative rock" was emerging and "grunge" was in its infancy in Seattle. In one 15 second spot, the Announcer cheekily quipped in his best lounge-lizard voice:

Hey... it's not the size [of your antenna] ... it's the frequency [of your signal] Q-106!

Fast-forward twenty years as I sit thinking about how often I should blog and is less really more.

For the political bloggers and other professional pundits, it is not uncommon to post multiple times during the day, especially on busy news days. For the "tweens" on myspace and such, once a day might suffice. Professional columnists who need to fact-check, to compile references, and to build convincing arguments need to take a bit longer -- perhaps more like a weekly or bi-weekly column. That said, being a blogging newbie, there did seem to me to be an inordinate pressure to crank out posts. The more that I thought about it, the more it seemed that posting for posting sake would just lead to lots of posts like... well... like this one!

Then I read this little
blog by Eric Kintz at Hewlett-Packard. It made a lot of practical sense, and (ribbing Mr. Kintz) I would so not want Jess to be "Web 1.0", too. I concluded that ..."it's the frequency!" just might not hold anymore.

This then is my initial goal:

  • At the very least I will aim to post one in-depth blog per week, often contributed by a Guest Blogger TBA. The topic will always be strongly Jess-related and more like an essay or article of hopefully useful information. More formal and less prosy in style. Quality over quantity.
  • I will abstain from consuming bandwidth daily unless a useful subtopic materializes. Expect it to be at least tangentially related to Jess (i.e., my research, other folks research, my consulting, business rules, rule-engines, or rule-based expert systems, etc.). Here, I'll relax a bit, sip a coffee, and chat with you about the field.
  • I will post any important breaking news as soon as I know about it.

Extrapolating my opening metaphor, a friend innocently suggested that I only post "at noon" so as to "...quickly disseminate" my information and get on with my day...

Oh dear!! I shall henceforth check all loaded metaphors at the door. -JM

Saturday, October 07, 2006

Let The Zen Begin

I am starting a new blog that has a main focus on Jess, the Java Expert Systems Shell, as it relates to my Ph.D. research into Intelligent Tutoring Systems at Worcester Polytechnic Institute .

My hope is that by writing down my thoughts, ideas, discoveries, false starts, and outright blunders that I'll eventually have some mad Jess skillz.

Perhaps these insights will help you in your academics or professional work, too.

If so, please drop me an email!