When COBOL appeared in the programming scene (that is, more than half a century ago), one of the design goals was that it could be understood also by non-computer professionals. This is why COBOL had more than 400 reserved words (to make a comparison, C has 32 and Java has about 50). It used English words to form instructions, instead of mathematical symbols and operators, attempting to emulate natural language descriptions.
Almost contemporary with COBOL language, fuzzy logic has gained a worldwide popularity only in the last two decades, after the opening of the first fuzzy logic-controlled subway in Sendai, northern Japan in 1987. It seems we have returned to the “understandable” languages, but this time the reason is not that the non-programmers be able to understand the instructions, but a much noble one: the goal is to try and emulate the human reasoning. Natural languages the humans use to communicate are fuzzy, while formal languages like programming languages invented so far are not. Humans can give accurate answers to problems with inaccurate or approximate input.
The fuzzy technique resembles human decision making, it generates precise solutions from information most of the times approximate and incomplete. In our aim to model complex non-linear systems, the fuzzy technique may play an important part in the approaches of the future, providing exactly what the classical approaches are missing: the ability to accommodate ambiguousness and to generate precision.
Unlike the classical logic, that stated that every proposition must be either true of false, black of white, fuzzy logic accepts the shades of gray in between. This means fuzzy logic is able to model degrees of truth like: “far” -> “not so far” -> “a bit close” -> “almost close” -> “close”. The membership function – which in the bi-valued theory is either 0 or 1 – operates over the range of real numbers [0.0, 1.0]. If we consider the example in the figure, and agree that 0.0 defines “far”, than “close” would be 1.0 and “almost close” would be 0.75.
Humans make decisions based on rules, for example “if it rains outside, I’m taking the umbrella”, or “if something heavy falls from above, I move away”. All the same, the fuzzy technique uses “if-then” rules to control the system: if A then B, if (A and C) than D etc., that can be defined using the Fuzzy Control Language (FCL). For example, if the membership function is equal to 0.75 (denotes “almost close”), then an output variable will denote the action “move away”.
All in all, the fuzzy technique provides both an intuitive method to describe systems, and an automatic conversion of those systems into strong models. If we agree that the human brain can solve problems from any domain, than we can actually state that an intelligent technique like fuzzy is applicable to any kind of system. So why and when would you want to use the fuzzy technique, and where to stop? Well, very harshly said, fuzzy is to be used every time the bivalent logic seems insufficient.
The fuzzy technique has proved quite efficient in the automatic control and artificial intelligence applications, and it seems that the only big argument against it is the fear of not creating something so close to human reasoning that it could not be controlled.
In a next article I will cover some of the applications of the fuzzy technique including a personal experience with the Fuzzy Logic Toolbox for Matlab.