From: tanaka@til.til.com (Yokichi Tanaka)
Subject: Re: Fuzzy Control
Keywords: fuzzy
Organization: Togai InfraLogic, Inc.
Date: Wed, 22 Jul 1992 01:47:06 GMT


In article <1992Jul9.141506.9440@tamsun.tamu.edu>, glass@eemips.tamu.edu
(Emily Glass) writes:
 
|> 1)  Appropriateness of the fuzzy OR defined as MAX:
 
|> variable, speed.  Suppose in our fuzzy control rules we have need for the
|> following membership sets:  VERY_FAST, FAST, MEDIUM, and SLOW. 
|> 
|>    ___________    ___________    ___________    ___________________
|>   |           \  /           \  /           \  /
|>   |   SLOW     \/ MEDIUM      \/  FAST       \/   VERY_FAST
|>   |            /\             /\             /\  
|> __|___________/__\___________/__\___________/__\___________________
|> 
|>  Now also consider that one rule will be testing if the speed is 
|> `fast or very fast.'  We could design a membership function called
|>  FAST_OR_VERY_FAST that looks like:
|>                                 __________________________________
|>                                /
|>                               /
|>                              /     FAST_OR_VERY_FAST
|> ____________________________/_____________________________________
|> 
|> But since we already have FAST and VERY_FAST, one would think that we
|> could just use these with an `OR' in the rule:

Potentially dangerous assumption.

|>        if FAST   OR   VERY_FAST,  then ...
|>  as opposed to
|>        if  FAST_OR_VERY_FAST,     then ...
|> 
|> Conceptually these should be the same thing.

Maybe, maybe not ... depends on your system.

|>                                     FAST    OR    VERY_FAST
|>                                 ___________    ___________________
|>                                /           \  /
|>                               /             \/
|>                              /    
|> ____________________________/_____________________________________
|> 
|> I realize that one way to get around this would be to redefine
|> the overlap between FAST and VERY_FAST as follows:
|>
|>                                      FAST         VERY_FAST
|>                                 __________________________________
|>                                /             /\
|>                               /             /  \
|>                              /             /    \
|> ____________________________/_____________/______\________________
|>
|> But then, this removes some of much flexibility for adjusting
|> the FAST and VERY_FAST membership functions to improve control.

Right.  The better way (assuming your FAST and VERY_FAST are working well)
would be your original idea of defining a fifth membership function
FAST_OR_VERY_FAST, IMO.

|> Has anyone addressed this issue?  What is physically happening in the
|> fuzzy-OR case?

You came up with a very specific case.  In your specific case, it would
seem like FAST "OR" VERY_FAST should yield max(1, FAST + VERY_FAST).
(... which does result in a "clean" MBF with no dips.)
However, in many other cases, you want the fuzzy-OR to behave as a max
function and not an additive function.  One such case might be if you
substituted FAST with "AROUND_6_FEET_TALL" and VERY_FAST with
"AROUND_7_FEET_TALL".  In such a case a 6-footer will have degree of 
membership of 1 for "AROUND_6_FEET_TALL" OR "AROUND_7_FEET_TALL", as 
would a 7-footer.  But do you want to assign someone 6'6" a degree of
membership of 1?  I think 0.5 would be more appropriate.
I don't think one specific case should necessitate a change in how
fuzzy logic works.

In English, we tend to view FAST and VERY_FAST as quite similar,
and as being continuous.  If your example was modified to only have 2 input
MBFs (membership functions), SLOW and FAST, as drawn below:

     SLOW   FAST
     ___    ___  
        \  /
         \/
         /\
     ___/__\___

with the cross-over at 40 mph, then you might agree "SLOW" OR "FAST" should
yield 0.5 and not 1.0 for 40 mph.  (But 1.0 for 0mph or 100mph.)
Or, better yet, replace SLOW with FAST_DESCENT and FAST with FAST_ASCENT.

|> 2) Splitting compound rules into multiple rules.
|> 
|> Now consider the Fuzzy System which includes the two rules
|> 
|>        If  A  and  C,  then  D.
|>        If  B  and  C,  then  D.
|> 
|> Can we simplify this fam system by making the rule:
|> 
|>        If (A or B) and C, then D?
|> 
|> It turns out that the answer is `No' when one uses the additive 
|> combination technique and `Yes' when one uses the maximum membership 
|> combination technique.

Right.

|> In some applications this accumulation
|> of weights with multiple rules is desirable (for example, in the case of
|> medical fuzzy experts), because one wants more weight for each
|> conditional that supports a decision.

Right.  I think in almost all cases accumulation is more desirable.

|>    Kosko showed that a FAM system using the maximum combination technique 
|> loses sensitivity as the number of FAM rules increases (NEURAL NETWORKS
|> AND FUZZY SYSTEMS, Prentice Hall, 1992). For this reason, in many cases,
|> one would want to use the additive combination technique.  However, if one
|> also wanted a true fuzzy OR between rules, one is in a dilemma.

Fuzzy-OR'ing rule outputs doesn't make sense to me.  It might be just a
matter of lingo, but I tend to use the term "fuzzy-OR" for premises (or
antecedents or left-hand-side) only.  Outputs are "accumulated" or
"max'ed/union'ed"; the latter being the fuzzy-OR equivalent, I suppose.
In any case, I have yet to see an application in which "max'ing" is
preferred over "accumulating".

|> One solution (although a complicated one) would be to use the maximum
|> combination technique between rules with identical control membership
|> functions, and then use additive combination technique to combine these
|> results with the rest. 

I don't know if this has much advantage over a straight "accumulation".
If output MBF (membership function) D fires 5 times (with values 0.5,
0.8, 0.8, 0.6, 0.7) and output MBF E fires once with value 0.8.  I
would like my output to be much closer to the center of D than with E.
By max'ing for each output (or control) MBF, you would end up with
D 0.8 and E 0.8.  Assuming D and E are weighted equally, the output will
end up exactly between the centers of D and E.

As a side note, I am really curious to find out if there is enough interest
to merit a newsgroup "comp.ai.fuzzy".  If you want, send me e-mail so I
can get a feel for the level of interest.

Yoke

------------------------------------------------------------------------------
Yokichi (Yoke) Tanaka      Togai InfraLogic, Inc.    "fuzzy"
tanaka@til.com             Irvine, California, USA
uunet!til!tanaka           714-975-8522
"The more you drive, the less intelligent you are."
Newsgroups: comp.ai