the fuzzy set member. (There are cases when a discrete fuzzy set may be a member

of a higher level fuzzy set and its truth value may not be 1, but these are not dis-

cussed in this book.)

3.5.2 Comparing Fuzzy Numbers

Comparing fuzzy numbers involves data with multiple values and truth values; the

members of a fuzzy number are numbers from the real line. This comparison may be

carried out using the extension principle:

tv(A ¼ B) ¼ max(min(A(x), B(x) over all x

Let us compare the fuzzy numbers A and B, shown in Figure 3.8, for equality;

that is, we will evaluate the truth value of the proposition (A ¼ B), where ¼

stands for “approximately equals”.

A and B intersect at grades of membership 0 and 0.5. The greatest of these

is 0.5; that is, the truth value of the approximate comparison (A ¼ B).

Extension of this method to cover other fuzzy comparisons between fuzzy

numbers, such as (A , B), requires additional mathematics, and will be taken

up in Section 4.6.

TEAM LinG - Live, Informative, Non-cost and Genuine !

49

3.6 FUZZIFICATION AND DEFUZZIFICATION

Comparing two fuzzy numbers A and B for equality.

Figure 3.8

3.6 FUZZIFICATION AND DEFUZZIFICATION

3.6.1 Fuzzi¬cation

The verb “to fuzzify” has two meanings: (1) to ¬nd the fuzzy version of a crisp

concept, and (2) to ¬nd grades of membership of linguistic values of a linguistic

variable corresponding to an input number, scalar or fuzzy. Usually, the term fuzzi-

¬cation is used in the second sense, and it is that sense that we now explore.

Suppose we have a fuzzy number t whose truth values are de¬ned from 0

to 1008C. To fuzzify t means to ¬nd grades of membership of linguistic values in

a linguistic variable (say Temperature), which are the linguistic equivalent of

the number t, over the interval t [0, 100]. The name of the fuzzy set could be

Temp with members flow, medium, highg, all de¬ned by membership functions

in [0, 100].

The fuzzi¬cation operation is quite simple. The grade of membership of each

linguistic value is the truth value of the fuzzy propositions

m(low) ¼ tv(t ¼ low)

m(medium) ¼ tv(t ¼ medium) (3:37)

m(high) ¼ tv(t ¼ high)

in which (e.g.) m(low) is the grade of membership of low in linguistic variable

Temp, and the operator symbol ¼ indicates an approximate comparisons

between the operands, de¬ned in Section 3.5.2.

We illustrate fuzzi¬cation by showing the membership functions for Temp

together with a fuzzy number for t, to be fuzzi¬ed into Temp in Figure 3.9.

The input fuzzy number t crosses the membership function of low at a member-

ship value of 0.42; crosses the membership function for medium at two non-zero

TEAM LinG - Live, Informative, Non-cost and Genuine !

50 FUZZY LOGIC, FUZZY SETS, AND FUZZY NUMBERS: I

Figure 3.9 Membership functions of a linguistic variable temperature, with an input fuzzy

number t to be fuzzi¬ed. Grade of membership of low is approximately 0.43; of medium,

0.89; and of high, 0.15.

points, of which the greater is 0.88; and the crosses membership for high at 0.14.

The fuzzi¬ed membership value of low is 0.42; of medium, 0.88; and of high,

0.14. The fuzzi¬cation process is now complete, and Temperature is now this

fuzzy set:

0:42 0:88 0:14

, , (3:38)

Temperature ¼

low medium high

Exercise Fuzzify.par. Program Fuzzify.par illustrates converting a number, the

weight of a dog, into a fuzzy set of word descriptors. Membership functions are

de¬ned and plotted to represent the validity of the descriptors Small, Medium, or

Large as applied to your dog. The input number will be the weight of your dog,

real or imagined; the output will be the grades of membership (truth values) of

the descriptive terms derived from your input number. Simply invoke TFLOPS,

load program Fuzzify.par from the Examples folder and run it. The truth values

are given on a zero-1000 scale, rather than 0 to 1.

The critical command, fuzzify, is in rule r2:

:rule r2

rule (goal Fuzzifies DogWt into fuzzy set size)

IF (in Data DogWt = <X> AND DogWt > 0)

THEN

message ™Fuzzifying <X>\n™,

fuzzify 1 size <X>,

fire block 0 off,

fire block 1 on;

TEAM LinG - Live, Informative, Non-cost and Genuine !

51

3.6 FUZZIFICATION AND DEFUZZIFICATION

Fuzzify.par uses two rule blocks, and activates and deactivates them with the

“¬re” command.

3.6.2 Defuzzi¬cation

At the end of a sequence of rule ¬rings in a fuzzy expert system we may end up with

a fuzzy conclusion C that is a linguistic variable, whose values have been assigned

grades of membership. Quite often we want to compute a single scalar, which cor-

responds to these grades of membership. The process of computing a scalar from

C is called defuzzi¬cation. This is especially needed in fuzzy control because the

¬nal conclusion must be communicated to the process, and the defuzzi¬ed value

is the signal sent to the process.

Defuzzi¬cation is a much more complex process than fuzzi¬cation; there are

several choices to be made, and many different methods have been proposed. We

will not attempt to explore the entire array of possibilities; instead, we will lay

out the areas where choices must be made, and indicate which choices are most com-

monly used.

We will assume that at the start of the defuzzi¬cation process, the grades of mem-

bership of the fuzzy set to be defuzzi¬ed are known.

First, we must decide how to modify the membership functions for the linguistic

values to re¬‚ect the fact that each value probably has a different grade of member-

ship, some of which may be 0, and some of which will in all likelihood not be 1, but

somewhere between 0 and 1. Let us call a general linguistic value “value”, and the

linguistic variable of which value is a member “Lvariable”. We will call the mem-

bership of real number x in “value” m(x, value) and the membership of value in lvar

m(value, Lvariable). We now wish to modify the membership function for value

to re¬‚ect the fact that the membership of value in Lvariable is not necessarily

1. Let us call the modi¬ed membership function m0 (x, value). We usually modify

the m(x, value) by ANDing the membership function m(x, value) with m(value,

lvar). This yields