This example is taken from the second edition of the "Artificial Intelligence: A Guide to Intelligent Systems" book by Michael Negnevistky.

The problem is to estimate the level of risk involved in a software engineering project. For the sake of simplicity we will arrive at our conclusion based on two inputs: project funding and project staffing.

The first step to convert the crisp input into a fuzzy one. Since we have two inputs we will have 2 crisp values to convert. The first value the level of project staffing. The second value is the level of project funding.

Suppose our our inputs are *project_funding = 35%* and *project_staffing* =
60%. We can an get the fuzzy values for these crisp values by using the
membership functions of the appropriate sets. The sets defined for
*project_funding* are **inadequate**, **marginal** and **adequate**.
The sets defined for *project_staffing* are **small** and **large**.

Thus we have the following
fuzzy values for *project_funding*:

$$ \mu_{\text{funding}=\text{inadequate}}(35) = 0.5 $$

$$\mu_{\text{funding}=\text{marginal}}(35) = 0.2$$

$$\mu_{\text{funding}=\text{adequate}}(35) = 0.0$$

The following a visual representation of this procedure:

The fuzzy values for *project_staffing* are shown below.

$$\mu_{\text{staffing}=\text{small}}(60) = 0.1$$

$$\mu_{\text{staffing}=\text{large}}(60) = 0.7$$

The following is a visual representation of this procedure:

Now that we have the fuzzy values we can use the fuzzy rules to arrive at the final fuzzy value. The rules are as follows:

- If
*project_funding*is**adequate**or*project_staffing*is small then risk is**low**. - If
*project_funding*is**marginal**and*project_staffing*is large then risk is**normal**. - If
*project_funding*is**inadequate**then risk is**high**.

Rules containing disjunctions, *OR*, are evaluated using the *UNION* operator.

$$\mu_{A \cup B}(x) = max[\mu_A(x), \mu_B(x)]$$

$$\mu_{\text{risk} = \text{low}} = max[\mu_{\text{funding}=\text{adequate}}(35), \mu_{\text{staffing}=\text{small}}(60)] = max[0.0, 0.1] = 0.1$$

And alternative way of computing the disjunction is via the algebraic sum as shown below:

$$\mu_{A \cup B}(x) = \mu_A(x) + \mu_B(x) - \mu_A(x) * \mu_B(x)$$

$$\mu_{\text{risk} = \text{low}} = 0.0 + 0.1 - 0.0 * 0.1 = 0.1$$

Conjunctions in fuzzy rules are evaluated using the *INTERSECTION* operator.

$$\mu_{A \cap B}(x) = min[\mu_A(x), \mu_B(x)]$$

$$\mu_{\text{risk} = \text{normal}} = max[\mu_{\text{funding}=\text{marginal}}(35), \mu_{\text{staffing}=\text{large}}(60)] = max[0.2, 0.7] = 0.2$$

Alternatively the same rule can be evaluated using multiplication, as shown below:

$$\mu_{A \cap B}(x) = \mu_A(x) * \mu_B(x)$$ $$\mu_{\text{risk} = \text{normal}} = 0.2 * 0.7 = 0.14$$

$$\mu_{\text{risk} = \text{normal}} = 0.2 * 0.7 = 0.14$$

The result of evaluating the rules is shown below:

$$\mu_{\text{risk}=\text{low}}(z) = 0.1$$ $$\mu_{\text{risk}=\text{normal}}(z) = 0.2$$ $$\mu_{\text{risk}=\text{high}}(z) = 0.5$$

We now use the results to *scale* or *clip* the consequent membership functions.
Once again for the sake of simplicity we will clip each of the functions.

$$\mu_{\text{risk}=\text{low}}(z) = 0.1$$

$$\mu_{\text{risk}=\text{normal}}(z) = 0.2$$

$$\mu_{\text{risk}=\text{high}}(z) = 0.5$$

We perform a union on all of the scaled functions to obtain the final result. The result is again shown in green.

The defuzzification can be performed in several different ways. The most popular method is
the *centroid method*.

- Centroid method
- Calculates the center of gravity for the area under the curve.

$$COG = \frac{\sum_{x=a}^b \mu_A(\chi)x}{\sum_{x=a}^b \mu_A(\chi)}$$

- Bisector
- Vertical line that divides the region into two sub-regions of equal area. It is sometimes, but not always, coincident with the centroid line.
- Mean of maximum
- Assuming there is a plateau at the maximum value of the final function take the mean of the values it spans.
- Smallest value of maximum
- Assuming there is a plateau at the maximum value of the final function take the smallest of the values it spans.
- Largest value of maximum
- Assuming there is a plateau at the maximum value of the final function take the largest of the values it spans.

We chose the *centroid method* to find the final non-fuzzy risk value
associated with our project. This is shown below.

$$COG= \frac{(0 + 10 + 20)*0.1 + (30 + 40 + 50 + 60)*0.2 + (70 + 80 + 90 + 100)*0.5}{0.1*3 + 0.2*4 + 0.5*4} = 67.4$$

The result is that this project has 67.4% risk associated with it given the definitions above.