Newsgroups: comp.ai
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!newsfeed.pitt.edu!gatech!csulb.edu!news.sgi.com!www.nntp.primenet.com!nntp.primenet.com!uwm.edu!lll-winken.llnl.gov!fnnews.fnal.gov!cbgw1.lucent.com!nntphub.cb.lucent.com!bigtop!news
From: Lonnie VanZandt <lonniev@lucent.com>
Subject: Is this an Expert System problem?
Content-Type: text/plain; charset=us-ascii
Message-ID: <328BBD0D.E6A@lucent.com>
Sender: news@drnews.dr.lucent.com (Netnews Administration Login)
Nntp-Posting-Host: bluespruce
Reply-To: lonniev@lucent.com
Content-Transfer-Encoding: 7bit
Cc: Trisha Van Zandt <trish@maigret.psy.jhu.edu>, lonniev
Organization: Lucent Outpost in Scenic Evergreen
Mime-Version: 1.0
Date: Fri, 15 Nov 1996 00:45:01 GMT
X-Mailer: Mozilla 3.0Gold (WinNT; I)
Lines: 51

Hello,

	I'm researching a replacement for a telecom switch's
fault analysis and reporting system. Failures in equipment or
data traffic can cause cascading faults to appear in the system.
The role of this software module is to correlate the many fault
instances into specific alarms. (Eg. All hell is breaking loose
because someone just chopped the transatlantic cable in half.)

	In this domain, I have a set of binary-valued states
with one state for each unique type of fault. I also have a
set of rules. The rules are logical expressions with the states
as operands and they either set alarms or internal state values.

	Between the state and rule states are two relationships:
isOperatorOf and updatesState. isOperatorOf is many-to-many from
states to rules. updateState is one-to-one from rules to states.

	When an "event" occurs, many of the states will simultaneously
change value. The rules are then all reevaluated to determine what
alarm to raise.

	Because the rule set is quite large, this correlation takes
a significant amount of time (folks on the telephone start to go,
"Are you there? Mom? ..." and think about switching providers.)

	I'm attempting to implement an algorithm that evaluates
only the subset of rules necessary to incorporate the newly
changed states rather than reevaluating all the rules. Because the
rules change internal states that are used as operands in other rules,
it is necessary to assure that rules are reevaluated in topologic
order.

	My question is: has this problem already been optimally
solved and, by reviewing the field of Expert Systems and Rule-Based
systems, am I likely to find a good solution.

	If you can point me to a good text or to a ready-made
solution, I would appreciate hearing from you.

Lonnie.

PS: I solved an easier problem similar to this. The easier problem
allowed an external event to change only a single state. I built a
directed, acyclic graph containing the rules as the vertices and the
operand states as edges. Then, for each state change, I topologically
sorted the graph vertices for all the rules in which that state
was an operand and includes the rules operating on any states changed
by the original state's rules. But then my colleagues informed me
that my approach was too simple because many states are changed
as a result of an external event. So now I'm starting afresh...
