# Fuzzy Logic Example#

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.

## Step 1#

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: ## The Rules#

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.

### Rule 1 - If project_funding is adequate or project_staffing is small then risk is low#

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$$

### Rule 2 - If project_funding is marginal and project_staffing is large then risk is normal#

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$$

### Rule 3 - If project_funding is inadequate then risk is high#

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

## Rule Evaluation Results#

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. ## Defuzzification#

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.