Fuzzy control system

A fuzzy control system is a control system based on fuzzy logic—a mathematical system that analyzes analog input values in terms of logical variables that take on continuous values between 0 and 1, in contrast to classical or digital logic, which operates on discrete values of either 1 or 0 (true or false, respectively).
Overview.
Fuzzy logic is widely used in machine control. The term "fuzzy" refers to the fact that the logic involved can deal with concepts that cannot be expressed as the "true" or "false" but rather as "partially true". Although alternative approaches such as genetic algorithms and neural networks can perform just as well as fuzzy logic in many cases, fuzzy logic has the advantage that the solution to the problem can be cast in terms that human operators can understand, so that their experience can be used in the design of the controller. This makes it easier to mechanize tasks that are already successfully performed by humans.
History and applications.
Fuzzy logic was proposed by Lotfi A. Zadeh of the University of California at Berkeley in a 1965 paper. He elaborated on his ideas in a 1973 paper that introduced the concept of "linguistic variables", which in this article equates to a variable defined as a fuzzy set. Other research followed, with the first industrial application, a cement kiln built in Denmark, coming on line in 1975.
Fuzzy systems were initially implemented in Japan.
Work on fuzzy systems is also proceeding in the North America and Europe, although on a less extensive scale than in Japan.
Research and development is also continuing on fuzzy applications in software, as opposed to firmware, design, including fuzzy expert systems and integration of fuzzy logic with neural-network and so-called adaptive "genetic" software systems, with the ultimate goal of building "self-learning" fuzzy-control systems. These systems can be employed to control complex, nonlinear dynamic plants, for example, human body.
Fuzzy sets.
The input variables in a fuzzy control system are in general mapped by sets of membership functions similar to this, known as "fuzzy sets". The process of converting a crisp input value to a fuzzy value is called "fuzzification". The fuzzy logic based approach had been considered by designing two fuzzy systems, one for error heading angle and the other for velocity control.
A control system may also have various types of switch, or "ON-OFF", inputs along with its analog inputs, and such switch inputs of course will always have a truth value equal to either 1 or 0, but the scheme can deal with them as simplified fuzzy functions that happen to be either one value or another.
Given "mappings" of input variables into membership functions and truth values, the microcontroller then makes decisions for what action to take, based on a set of "rules", each of the form:
 IF brake temperature IS warm AND speed IS not very fast 
 THEN brake pressure IS slightly decreased.
In this example, the two input variables are "brake temperature" and "speed" that have values defined as fuzzy sets. The output variable, "brake pressure" is also defined by a fuzzy set that can have values like "static" or "slightly increased" or "slightly decreased" etc.
Fuzzy control in detail.
Fuzzy controllers are very simple conceptually. They consist of an input stage, a processing stage, and an output stage. The input stage maps sensor or other inputs, such as switches, thumbwheels, and so on, to the appropriate membership functions and truth values. The processing stage invokes each appropriate rule and generates a result for each, then combines the results of the rules. Finally, the output stage converts the combined result back into a specific control output value.
The most common shape of membership functions is triangular, although trapezoidal and bell curves are also used, but the shape is generally less important than the number of curves and their placement. From three to seven curves are generally appropriate to cover the required range of an input value, or the "universe of discourse" in fuzzy jargon.
As discussed earlier, the processing stage is based on a collection of logic rules in the form of IF-THEN statements, where the IF part is called the "antecedent" and the THEN part is called the "consequent". Typical fuzzy control systems have dozens of rules.
Consider a rule for a thermostat:
 IF (temperature is "cold") THEN turn (heater is "high")
This rule uses the truth value of the "temperature" input, which is some truth value of "cold", to generate a result in the fuzzy set for the "heater" output, which is some value of "high". This result is used with the results of other rules to finally generate the crisp composite output. Obviously, the greater the truth value of "cold", the higher the truth value of "high", though this does not necessarily mean that the output itself will be set to "high" since this is only one rule among many. 
In some cases, the membership functions can be modified by "hedges" that are equivalent to adverbs. Common hedges include "about", "near", "close to", "approximately", "very", "slightly", "too", "extremely", and "somewhat". These operations may have precise definitions, though the definitions can vary considerably between different implementations. "Very", for one example, squares membership functions; since the membership values are always less than 1, this narrows the membership function. "Extremely" cubes the values to give greater narrowing, while "somewhat" broadens the function by taking the square root.
In practice, the fuzzy rule sets usually have several antecedents that are combined using fuzzy operators, such as AND, OR, and NOT, though again the definitions tend to vary: AND, in one popular definition, simply uses the minimum weight of all the antecedents, while OR uses the maximum value. There is also a NOT operator that subtracts a membership function from 1 to give the "complementary" function.
There are several ways to define the result of a rule, but one of the most common and simplest is the "max-min" inference method, in which the output membership function is given the truth value generated by the premise.
Rules can be solved in parallel in hardware, or sequentially in software. The results of all the rules that have fired are "defuzzified" to a crisp value by one of several methods. There are dozens, in theory, each with various advantages or drawbacks.
The "centroid" method is very popular, in which the "center of mass" of the result provides the crisp value. Another approach is the "height" method, which takes the value of the biggest contributor. The centroid method favors the rule with the output of greatest area, while the height method obviously favors the rule with the greatest output value.
The diagram below demonstrates max-min inferencing and centroid defuzzification for a system with input variables "x", "y", and "z" and an output variable "n". Note that "mu" is standard fuzzy-logic nomenclature for "truth value":
Notice how each rule provides a result as a truth value of a particular membership function for the output variable. In centroid defuzzification the values are OR'd, that is, the maximum value is used and values are not added, and the results are then combined using a centroid calculation.
Fuzzy control system design is based on empirical methods, basically a methodical approach to trial-and-error. The general process is as follows:
As a general example, consider the design of a fuzzy controller for a steam turbine. The block diagram of this control system appears as follows:
The input and output variables map into the following fuzzy set:
—where:
 N3: Large negative.
 N2: Medium negative.
 N1: Small negative.
 Z: Zero.
 P1: Small positive.
 P2: Medium positive.
 P3: Large positive.
The rule set includes such rules as:
 rule 1: IF temperature IS cool AND pressure IS weak, 
 THEN throttle is P3.
 rule 2: IF temperature IS cool AND pressure IS low, 
 THEN throttle is P2.
 rule 3: IF temperature IS cool AND pressure IS ok, 
 THEN throttle is Z.
 rule 4: IF temperature IS cool AND pressure IS strong, 
 THEN throttle is N2.
In practice, the controller accepts the inputs and maps them into their membership functions and truth values. These mappings are then fed into the rules. If the rule specifies an AND relationship between the mappings of the two input variables, as the examples above do, the minimum of the two is used as the combined truth value; if an OR is specified, the maximum is used. The appropriate output state is selected and assigned a membership value at the truth level of the premise. The truth values are then defuzzified. 
For example, assume the temperature is in the "cool" state, and the pressure is in the "low" and "ok" states. The pressure values ensure that only rules 2 and 3 fire:
The two outputs are then defuzzified through centroid defuzzification: 
The output value will adjust the throttle and then the control cycle will begin again to generate the next value .
Building a fuzzy controller.
Consider implementing with a microcontroller chip a simple feedback controller:
A fuzzy set is defined for the input error variable "e", and the derived change in error, "delta", as well as the "output", as follows:
 LP: large positive
 SP: small positive
 ZE: zero
 SN: small negative
 LN: large negative
If the error ranges from -1 to +1, with the analog-to-digital converter used having a resolution of 0.25, then the input variable's fuzzy set (which, in this case, also applies to the output variable) can be described very simply as a table, with the error / delta / output values in the top row and the truth values for each membership function arranged in rows beneath:
 _______________________________________________________________________
 -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 1
 _______________________________________________________________________
 mu(LP) 0 0 0 0 0 0 0.3 0.7 1
 mu(SP) 0 0 0 0 0.3 0.7 1 0.7 0.3
 mu(ZE) 0 0 0.3 0.7 1 0.7 0.3 0 0
 mu(SN) 0.3 0.7 1 0.7 0.3 0 0 0 0
 mu(LN) 1 0.7 0.3 0 0 0 0 0 0
 _______________________________________________________________________ —or, in graphical form (where each "X" has a value of 0.1):
 LN SN ZE SP LP
 | |
 -1.0 | XXXXXXXXXX XXX : : : |
 -0.75 | XXXXXXX XXXXXXX : : : |
 -0.5 | XXX XXXXXXXXXX XXX : : |
 -0.25 | : XXXXXXX XXXXXXX : : |
 0.0 | : XXX XXXXXXXXXX XXX : |
 0.25 | : : XXXXXXX XXXXXXX : |
 0.5 | : : XXX XXXXXXXXXX XXX |
 0.75 | : : : XXXXXXX XXXXXXX |
 1.0 | : : : XXX XXXXXXXXXX |
 +------------------------------------------------------------------+
Suppose this fuzzy system has the following rule base:
 rule 1: IF e = ZE AND delta = ZE THEN output = ZE
 rule 2: IF e = ZE AND delta = SP THEN output = SN
 rule 3: IF e = SN AND delta = SN THEN output = LP
 rule 4: IF e = LP OR delta = LP THEN output = LN
These rules are typical for control applications in that the antecedents consist of the logical combination of the error and error-delta signals, while the consequent is a control command output. 
The rule outputs can be defuzzified using a discrete centroid computation:
 SUM( I = 1 TO 4 OF ( mu(I) * output(I) ) ) / SUM( I = 1 TO 4 OF mu(I) )
Now, suppose that at a given time: 
 e = 0.25
 delta = 0.5
Then this gives:
 ________________________
 e delta
 ________________________
 mu(LP) 0 0.3
 mu(SP) 0.7 1
 mu(ZE) 0.7 0.3
 mu(SN) 0 0
 mu(LN) 0 0
 ________________________
Plugging this into rule 1 gives:
 rule 1: IF e = ZE AND delta = ZE THEN output = ZE
 mu(1) = MIN( 0.7, 0.3 ) = 0.3
 output(1) = 0
-- where:
The other rules give:
 rule 2: IF e = ZE AND delta = SP THEN output = SN
 mu(2) = MIN( 0.7, 1 ) = 0.7 
 output(2) = -0.5
 rule 3: IF e = SN AND delta = SN THEN output = LP
 mu(3) = MIN( 0.0, 0.0 ) = 0
 output(3) = 1
 rule 4: IF e = LP OR delta = LP THEN output = LN
 mu(4) = MAX( 0.0, 0.3 ) = 0.3
 output(4) = -1
The centroid computation yields:
 formula_1
 formula_2
 formula_3—for the final control output. Simple. Of course the hard part is figuring out what rules actually work correctly in practice.
If you have problems figuring out the centroid equation, remember that a centroid is defined by summing all the moments (location times mass) around the center of gravity and equating the sum to zero. So if formula_4 is the center of gravity, formula_5 is the location of each mass, and formula_6 is each mass, this gives:
 formula_7
 formula_8
 formula_9
 formula_10
In our example, the values of mu correspond to the masses, and the values of X to location of the masses 
(mu, however, only 'corresponds to the masses' if the initial 'mass' of the output functions are all the same/equivalent. If they are not the same, i.e. some are narrow triangles, while others maybe wide trapezoids or shouldered triangles, then the mass or area of the output function must be known or calculated. It is this mass that is then scaled by mu and multiplied by its location X_i).
This system can be implemented on a standard microprocessor, but dedicated fuzzy chips are now available. For example, Adaptive Logic INC of San Jose, California, sells a "fuzzy chip", the AL220, that can accept four analog inputs and generate four analog outputs. A block diagram of the chip is shown below:
Antilock brakes.
As an example, consider an anti-lock braking system, directed by a microcontroller chip. The microcontroller has to make decisions based on brake temperature, speed, and other variables in the system.
The variable "temperature" in this system can be subdivided into a range of "states": "cold", "cool", "moderate", "warm", "hot", "very hot". The transition from one state to the next is hard to define.
An arbitrary static threshold might be set to divide "warm" from "hot". For example, at exactly 90 degrees, warm ends and hot begins. But this would result in a discontinuous change when the input value passed over that threshold. The transition wouldn't be smooth, as would be required in braking situations.
The way around this is to make the states "fuzzy". That is, allow them to change gradually from one state to the next. In order to do this, there must be a dynamic relationship established between different factors.
Start by defining the input temperature states using "membership functions":
With this scheme, the input variable's state no longer jumps abruptly from one state to the next. Instead, as the temperature changes, it loses value in one membership function while gaining value in the next. In other words, its ranking in the category of cold decreases as it becomes more highly ranked in the warmer category.
At any sampled timeframe, the "truth value" of the brake temperature will almost always be in some degree part of two membership functions: i.e.: '0.6 nominal and 0.4 warm', or '0.7 nominal and 0.3 cool', and so on.
The above example demonstrates a simple application, using the abstraction of values from multiple values. This only represents one kind of data, however, in this case, temperature.
Adding additional sophistication to this braking system, could be done by additional factors such as traction, speed, inertia, set up in dynamic functions, according to the designed fuzzy system.
Logical interpretation of fuzzy control.
In spite of the appearance there are several difficulties to give a rigorous logical interpretation of the "IF-THEN" rules. As an example, interpret a rule as "IF (temperature is "cold") THEN (heater is "high")" by the first order formula "Cold(x)→High(y)" and assume that r is an input such that "Cold(r)" is false. Then the formula "Cold(r)→High(t)" is true for any "t" and therefore any "t" gives a correct control given "r". A rigorous logical justification of fuzzy control is given in Hájek's book (see Chapter 7) where fuzzy control is represented as a theory of Hájek's basic logic.
In Gerla 2005 another logical approach to fuzzy control is proposed based on fuzzy logic programming: Denote by "f" the fuzzy function arising of an IF-THEN systems of rules. Then this system can be translated into a fuzzy program P containing a series of rules whose head is "Good(x,y)". The interpretation of this predicate in the least fuzzy Herbrand model of P coincides with f. This gives further useful tools to fuzzy control.
Fuzzy qualitative simulation.
Before an Artificial Intelligence system is able to plan the action sequence, some kind of model is needed. For video games, the model is equal to the game rules. From the programming perspective, the game rules are implemented as a Physics engine which accepts an action from a player and calculates, if the action is valid. After the action was executed, the game is in follow up state. If the aim isn't only to play mathematical games but determine the actions for real world applications, the most obvious bottleneck is, that no game rules are available. The first step is to model the domain. System identification can be realized with precise mathematical equations or with Fuzzy rules.
Using Fuzzy logic and ANFIS systems (Adaptive network based fuzzy inference system) for creating the forward model for a domain has many disadvantages. A qualitative simulation isn't able to determine the correct follow up state, but the system will only guess what will happen if the action was taken. The Fuzzy qualitative simulation can't predict the exact numerical values, but it's using imprecise natural language to speculate about the future. It takes the current situation plus the actions from the past and generates the expected follow up state of the game.
The output of the ANFIS system isn't providing correct information, but only a Fuzzy set notation, for example [0,0.2,0.4,0]. After converting the set notation back into numerical values the accuracy get worse. This makes Fuzzy qualitative simulation a bad choice for practical applications.
Applications.
Fuzzy control systems are suitable when the process complexity is high including uncertainty and nonlinear behavior, and there are no precise mathematical models available. Successful applications of fuzzy control systems have been reported worldwide mainly in Japan with pioneering solutions since 80’s. 
Some applications reported in the literature are: