Columnist: October 13, 1994

David Brubaker
fuzzy-logic contributing editor
The time was late summer, 1991. The company had flown me halfway across the country to teach an introductory fuzzy-logic seminar, to discuss possible applications of fuzzy logic with its engineers, and to work with one group to implement a fuzzy solution to a problem they faced. We had just started the seminar.
His hand was still in the air, waving with patient persistence mixed with a touch of annoyance. I was discussing the basic structure of a fuzzy-rule-based system, describing how inputs are "fuzzified" and applied as inputs to the rules, with rule actions then combined and "defuzzified" to form the system output. We could consider, I said, the system to be a three-step process: a crisp-to-fuzzy transform on the input, the rules, and a fuzzy-to-crisp transform on the output (Fig 1). He cleared his throat, hand still in the air. Everyone was aware both of his annoyance and of my ignoring him. He had won, but I had an idea. I turned in his direction, "discovered" his hand in the air, and said, "Yes?"
"Why would you ever want to do that? You have real inputs, and you need real outputs. Why do you need to take something that is real, make it fuzzy, and then make it real again? It doesn't make sense." He had equated "crisp" and "real," and in doing so implied that "fuzzy" was "unreal," but, other than that, it was a good question--one for which I had an answer.
But first, let's jump forward to this year. Before answering his question, I need to lay a groundwork by discussing how fuzzy rules work. This gets a little tedious and is not the typical approach to teaching fuzzy logic, but bear with me.
I employ a simple example from a recent project. In essence, it uses a fuzzy rule base as a single-input, single-output system to approximate the function in Fig 2.
The heart of a system is its rules, usually stated in an if-condition, then-action format, which maps the system's inputs to its outputs. Rules define the system's operation and which outputs emerge in response to a given set of inputs.
Think of a system as a response generator. Given inputs, it generates one or more outputs, each of which is a response, a function of the system inputs. The role of a system designer is to define the response function and to implement it. One not-at-all-realistic approach to defining the response is to identify all possible input combinations as precisely as possible and specify, again precisely, the required output. The magnitude of such a task is overwhelming. A two-input system, each input a 16-bit integer, would require uniquely identifying 2
Another approach would be to divide the inputs into regions. Rather than having 2unique integer values, we might have five regions, resulting for a two-input system in 25 rules. This approach is more manageable, but it won't do a good job because, although sampling theory can tell us how wide these regions must be, difficult functions require narrow regions, resulting in many rules. Better to make assumptions, such as linearity and time-invariance, and to create analytic models that are easy to analyze and work with.
But this may be throwing the baby out with the bath water. Before giving up, we should try harder to resolve the tradeoff between the number of rules and system quantization.
![]()
But first, you should resolve the tradeoff between number of rules and system quantization. This is where fuzzy logic enters the picture. But not yet. First, look at how a set of crisp rules defines system operation. The input in this example is x, which ranges from -1<=x<=1. Divide x into 16 equal regions, each 0.125 wide. The region xranges from 1 to 0.875, xfrom 0.875 to 0.75, and so forth (Fig 3). You can define the outputs in a similar manner, ex-cept emphasizing values rather than ranges (Fig 4).
Now, you can create a rule that has each of the input ranges as a condition and specifies an output value as its action. The first rule reads: IF x[=]xThe expression "x=xN8" is the same as stating "x 1.00 AND x 0.875." When x is in this region, we want "y=yN8" , or y1.00. The other seven rules for regions of x less than zero (those for positive x are symmetric about the origin) are:
Fig 5 shows the implemented function after you apply all 16 rules, one for each of the defined regions of x. Not very close. Now I am not saying this is the only nonfuzzy approach to achieving the desired function. A hyperbolic tangent does the job. Even if you constrain yourself to using rules, you could narrow the width of the x regions; that is, you could decrease the sampling interval. You would then achieve a much better approximation but at the expense of more rules.
![]()
In a fuzzy system, you could replace the crisp set, nonoverlapping input regions, with overlapping fuzzy sets (Fig 6). You do not need to change rules and output values. Fig 7 shows the response function. Although not perfect, this function is much closer to the original than is the crisp version because the fuzzy input sets are overlapping. For almost all applied inputs x, two rules fire. You can then calculate the actual output y by combining the actions of both fired rules. The strength of a fired rule's action depends on the strength of its firing, that is, the strength of its condition. If multiple fuzzy rules fire, the result is an interpolated value between the actions that each rule specifies. This interpolating action results in the smoothness of the fuzzy-system-generated function as compared with the crisp-system-generated function.
Although I have omitted a lot, I have presented enough material to get back to our well-meaning heckler's question: "Why do you need to take something that is real, make it fuzzy, and then make it real again? It doesn't make sense."
As stated, I had an idea. My idea was praise "That's a good question. I appreciate your understanding of fuzzy systems and the thought that goes into your questions. You are very perceptive."
My answer? "There is no one overriding reason for using a fuzzy approach, but the combination of several reasons is substantial. The first is representational. Fuzzy logic allows us to create word models of how we want a system to operate. When modeled as fuzzy sets, these words have "soft" edges, much as they do when we use them to communicate, and the subsequent system operation takes advantage of these soft edges.
"The second reason is that using fuzzy sets as overlapping input-membership functions allows smooth transitions from one operating region to the next. These transitions, resulting in an interpolated output, allow potentially complex system operation from a relatively small number of rules.
"Finally, using fuzzy logic allows a system to be precise when precision is needed, and imprecise when precision is not. An analogy is the use of the FFT and inverse FFT to convert time or spatial signals into the frequency domain. The power gained from doing so justifies the expense of the conversions. In our case, the added power in both representation and implementation justifies the translation to and from the fuzzy domain."
After my answer, the heckler stopped being belligerent and started being supportive. His questions and contributions became intelligent and well-thought-out. He even became excited when we successfully applied a fuzzy solution to a test problem. I appreciated his being there.
References