## Documentation |

Fuzzy inference is the process of formulating the mapping from a given input to an output using fuzzy logic. The mapping then provides a basis from which decisions can be made, or patterns discerned. The process of fuzzy inference involves all of the pieces that are described in Membership Functions, Logical Operations, and If-Then Rules.

This section describes the fuzzy inference process and uses the example of the two-input, one-output, three-rule tipping problem The Basic Tipping Problem that you saw in the introduction in more detail. The basic structure of this example is shown in the following diagram:

Information flows from left to right, from two inputs to a single output. The parallel nature of the rules is one of the more important aspects of fuzzy logic systems. Instead of sharp switching between modes based on breakpoints, logic flows smoothly from regions where the system's behavior is dominated by either one rule or another.

Fuzzy inference process comprises of five parts:

A fuzzy inference diagram displays all parts of the fuzzy inference process — from fuzzification through defuzzification.

The first step is to take the inputs and determine the degree to which they belong to each of the appropriate fuzzy sets via membership functions. In Fuzzy Logic Toolbox™ software, the input is always a crisp numerical value limited to the universe of discourse of the input variable (in this case the interval between 0 and 10) and the output is a fuzzy degree of membership in the qualifying linguistic set (always the interval between 0 and 1). Fuzzification of the input amounts to either a table lookup or a function evaluation.

This example is built on three rules, and each of the rules depends on resolving the inputs into a number of different fuzzy linguistic sets: service is poor, service is good, food is rancid, food is delicious, and so on. Before the rules can be evaluated, the inputs must be fuzzified according to each of these linguistic sets. For example, to what extent is the food really delicious? The following figure shows how well the food at the hypothetical restaurant (rated on a scale of 0 to 10) qualifies, (via its membership function), as the linguistic variable delicious. In this case, we rated the food as an 8, which, given your graphical definition of delicious, corresponds to µ = 0.7 for the delicious membership function.

In this manner, each input is fuzzified over all the qualifying membership functions required by the rules.

After the inputs are fuzzified, you know the degree to which each part of the antecedent is satisfied for each rule. If the antecedent of a given rule has more than one part, the fuzzy operator is applied to obtain one number that represents the result of the antecedent for that rule. This number is then applied to the output function. The input to the fuzzy operator is two or more membership values from fuzzified input variables. The output is a single truth value.

As is described in Logical Operations section, any number of well-defined
methods can fill in for the AND operation or the OR operation. In
the toolbox, two built-in AND methods are supported: *min* (minimum)
and *prod* (product). Two built-in OR methods are
also supported: *max* (maximum), and the probabilistic
OR method *probor*. The probabilistic OR method (also known as the
algebraic sum) is calculated according to the equation

probor(a,b)
= a + b - ab |

In addition to these built-in methods, you can create your own methods for AND and OR by writing any function and setting that to be your method of choice.

The following figure shows the OR operator *max* at
work, evaluating the antecedent of the rule 3 for the tipping calculation.
The two different pieces of the antecedent (service is excellent and
food is delicious) yielded the fuzzy membership values 0.0 and 0.7
respectively. The fuzzy OR operator simply selects the maximum of
the two values, 0.7, and the fuzzy operation for rule 3 is complete.
The probabilistic OR method would still result in 0.7.

Before applying the implication method, you must determine the
rule's weight. Every rule has a *weight* (a number
between 0 and 1), which is applied to the number given by the antecedent.
Generally, this weight is 1 (as it is for this example) and thus has
no effect at all on the implication process. From time to time you
may want to weight one rule relative to the others by changing its
weight value to something other than 1.

After proper weighting has been assigned to each rule, the implication
method is implemented. A consequent is a fuzzy set represented by
a membership function, which weights appropriately the linguistic
characteristics that are attributed to it. The consequent is reshaped
using a function associated with the antecedent (a single number).
The input for the implication process is a single number given by
the antecedent, and the output is a fuzzy set. Implication is implemented
for each rule. Two built-in methods are supported, and they are the
same functions that are used by the AND method: *min* (minimum),
which truncates the output fuzzy set, and *prod* (product),
which scales the output fuzzy set.

Because decisions are based on the testing of all of the rules in a FIS, the rules must be combined in some manner in order to make a decision. Aggregation is the process by which the fuzzy sets that represent the outputs of each rule are combined into a single fuzzy set. Aggregation only occurs once for each output variable, just prior to the fifth and final step, defuzzification. The input of the aggregation process is the list of truncated output functions returned by the implication process for each rule. The output of the aggregation process is one fuzzy set for each output variable.

As long as the aggregation method is commutative (which it always should be), then the order in which the rules are executed is unimportant. Three built-in methods are supported:

`max`(maximum)`probor`(probabilistic OR)`sum`(simply the sum of each rule's output set)

In the following diagram, all three rules have been placed together to show how the output of each rule is combined, or aggregated, into a single fuzzy set whose membership function assigns a weighting for every output (tip) value.

The input for the defuzzification process is a fuzzy set (the aggregate output fuzzy set) and the output is a single number. As much as fuzziness helps the rule evaluation during the intermediate steps, the final desired output for each variable is generally a single number. However, the aggregate of a fuzzy set encompasses a range of output values, and so must be defuzzified in order to resolve a single output value from the set.

Perhaps the most popular defuzzification method is the centroid calculation, which returns the center of area under the curve. There are five built-in methods supported: centroid, bisector, middle of maximum (the average of the maximum value of the output set), largest of maximum, and smallest of maximum.

The fuzzy inference diagram is the composite of all the smaller diagrams presented so far in this section. It simultaneously displays all parts of the fuzzy inference process you have examined. Information flows through the fuzzy inference diagram as shown in the following figure.

In this figure, the flow proceeds up from the inputs in the lower left, then across each row, or rule, and then down the rule outputs to finish in the lower right. This compact flow shows everything at once, from linguistic variable fuzzification all the way through defuzzification of the aggregate output.

The following figure shows
the actual full-size fuzzy inference diagram. There is a lot to see
in a fuzzy inference diagram, but after you become accustomed to it,
you can learn a lot about a system very quickly. For instance, from
this diagram with these particular inputs, you can easily see that
the implication method is truncation with the *min* function. The *max* function
is being used for the fuzzy OR operation. Rule 3 (the bottom-most
row in the diagram shown previously) is having the strongest influence
on the output. and so on. The Rule Viewer described in The Rule Viewer is
a MATLAB^{®} implementation of the fuzzy inference diagram.

Was this topic helpful?