Home/Blog/Programming/Basics of Fuzzy Logic
Home/Blog/Programming/Basics of Fuzzy Logic

Basics of Fuzzy Logic

Malik Jahan
Oct 05, 2023
6 min read

Become a Software Engineer in Months, Not Years

From your first line of code, to your first day on the job — Educative has you covered. Join 2M+ developers learning in-demand programming skills.

In the 1960s, Lotfi Zadeh introduced the science of fuzzy logic to analyze the systems where Boolean logic was not good enough. To capture the (lack of) precision, Boolean logic improvises only two options: true or false.

There are different scenarios in the real world that can be clearly marked as true or false. For example:

  • 1+1=21+1=2
  • 5>105>10
  • ChatGPT generates correct responses

The truthfulness of the first two statements can be captured by Boolean logic because the possible answer is either true or false. However, the truthfulness of the third statement is relatively harder to capture using Boolean logic. Labelling it as a true or false statement won’t capture the ground reality. The actual answer lies somewhere between true and false. Fuzzy logic takes care of such situations. Let’s first understand the basics of fuzzy logic.

Basics of fuzzy logic#

Fuzzy logic improvises a continuous line to represent the magnitude of the truthfulness of a given statement. For completely true or false statements, it will take the extreme points of the line: 1 or 0. However, the magnitude of truthfulness of a statement or concept can be represented using any appropriate membership value between 0 and 1, as shown in the following figure:

Boolean vs fuzzy truth values
Boolean vs fuzzy truth values

There are certain situations where we need to capture the notion of partial truth. For example, “Sara is a tall person.” It depends on how we define the concept of someone’s height. If we define a strict threshold like anyone having a height of more than 5 feet is tall, then this point can serve as the cutoff to categorize someone as tall or not tall. If Alice has a height less than 5 feet (say 4.9 feet), then we’ll say that Alice is not tall. We’ll output the same answer for any smaller number. If Bob has a height greater than 5 feet (say 5.1 feet), then we’ll treat Bob as a tall person. We’ll do the same for a person whose height is significantly higher than 5 feet. The absolute difference between the heights of Alice and Bob is 0.2 feet, but we’re classifying them into two mutually exclusive categories because of the strict cutoff. This is what a Boolean decision is. The same phenomenon has been shown in the following figure:

Boolean representation of the variable "isTall"
Boolean representation of the variable "isTall"

Fuzzy logic is the superset of Boolean logic. It captures the notion of partial truthfulness beyond capturing absolute true or false answers. Each linguistic concept is modeled as a fuzzy variable. Values of fuzzy variables are represented as membership functions. Fuzzy membership functions capture the notion of continuity and partial truthfulness. Moreover, they can overlap with each other. For example, the concept of tallness has been modeled as a fuzzy variable in the following figure. The variable can have three possible values: short, medium and tall. Each fuzzy value is modeled as a membership function. The membership value μ\mu for each membership function is computed based on the actual height. These fuzzy membership functions representing their respective linguistic values can overlap with each other as shown below:

Fuzzy representation of the variable "height"
Fuzzy representation of the variable "height"

Let’s compute the membership values μ\mu for the height of Alice as shown in the following figure:

Membership of Alice in the membership functions
Membership of Alice in the membership functions

The figure above shows:

  • μshort(Alice)=0.09\mu_{short}(Alice) = 0.09
  • μmedium(Alice)=0.16\mu_{medium}(Alice) = 0.16
  • μtall(Alice)=1.0\mu_{tall}(Alice) = 1.0

Let’s repeat the same experiment for the height of Bob as shown in the following figure:

Membership of Bob in the membership functions
Membership of Bob in the membership functions

The figure above shows:

  • μshort(Bob)=0\mu_{short}(Bob) = 0
  • μmedium(Bob)=0.33\mu_{medium}(Bob) = 0.33
  • μtall(Bob)=0.98\mu_{tall}(Bob) = 0.98

In both figures, the coloured lines show membership of the heights of Alice and Bob in each of the membership functions. For instance, the height of Alice has a membership value of 1.0 in the membership function mediummedium and Bob has a membership value of 0.98 in the same function. Comparing both of them reveals that they’re quite close to each other. The same is true for the other two membership functions. The membership value in a particular membership function represents the degree of truthfulness of belonging to that particular concept or fuzzy value.

Fuzzy sets#

In conventional sets, the membership of each element to a set is either 0 or 1. We interpret it as an element belonging to a set or not. For example, the following set

can be represented as follows:

In this notation, each element of the set is notated as xy\frac{x}{y} where xx is an element and yy is the membership value μ\mu of that element in the set. If μ\mu is 1 then the element is present in the set. If μ\mu is 0 then the element is not present in the set. For conventional sets, we may omit writing the explicit value of μ\mu, as shown above.

Fuzzy sets capture the partial membership of an element to a set too. For example, if we have to create a set named mediummedium to notate the membership of Alice and Bob, we can write it as follows:

The fundamental principles of set theory remain the same. Let’s take an example of two fuzzy sets AA and BB, as shown below, and exercise the fundamental properties of sets:

Union of two fuzzy sets#

The union of the two fuzzy sets is computed by taking the maximum of the two membership values of an element in both sets. For example,

Intersection of two fuzzy sets#

The intersection of the two fuzzy sets is computed by taking the minimum of the two membership values of an element in both sets. For example,

Complement of a fuzzy set#

The complement of a fuzzy set is computed by subtracting the membership value of each element from 1. For example,

A = dict()
B = dict()
Union_of_A_B = dict()
Intersection_of_A_B = dict()
Complement_of_A = dict()
Complement_of_B = dict()
A = {"red":0.8, "green":0.5, "blue":0.2}
B = {"red":0.6, "green":0.9, "blue":0.7}
for a,b in zip(A,B):
Union_of_A_B[a] = max(A[a], B[a])
Intersection_of_A_B[a] = max(A[a], B[a])
Complement_of_A[a] = round(1 - A[a],1)
Complement_of_B[b] = round(1 - B[b],1)
print "Union of A and B = ", Union_of_A_B
print "Intersection of A and B = ", Intersection_of_A_B
print "Complement of A = ", Complement_of_A
print "Complement of B = ", Complement_of_B

De Morgan's law for fuzzy sets#

Let’s apply these basic operations to verify that De Morgan’s law holds for fuzzy sets:

Hence,

Similarly,

Hence,

Let’s verify these results:

def intersection(A, B):
Intersection_of_A_B = dict()
for a,b in zip(A,B):
Intersection_of_A_B[a] = min(A[a], B[a])
return Intersection_of_A_B
def union(A, B):
Union_of_A_B = dict()
for a,b in zip(A,B):
Union_of_A_B[a] = max(A[a], B[b])
return Union_of_A_B
def complement(A):
Complement_of_A = dict()
for a in A:
Complement_of_A[a] = round(1 - A[a],1)
return Complement_of_A
A = dict()
B = dict()
A = {"red":0.8, "green":0.5, "blue":0.2}
B = {"red":0.6, "green":0.9, "blue":0.7}
print "Union of A and B = ", union(A, B)
print "Intersection of A and B = ", intersection(A, B)
print "Complement of A = ", complement(A)
print "Complement of B = ", complement(B)
print "Rule-1: ", complement(intersection(A, B)), " = ", union(complement(A), complement(B))
print "Rule-2: ", complement(union(A, B)), " = ", intersection(complement(A), complement(B))

Application areas of fuzzy logic#

Example application domains of fuzzy logic are listed below:

  • Automatic speed control system of vehicles
  • Altitude control of spacecrafts
  • Intelligent decision support system in business intelligence
  • Evaluation system to grant financial support and loan in financial organizations
  • Optimization in manufacturing industry
  • Medical diagnostic support systems
  • Handwriting recognition systems

For a deeper dive into the relevant subject areas and applications, you may explore:

Getting Started with Image Classification with PyTorch

Cover
Getting Started with Image Classification with PyTorch

PyTorch is a machine learning framework used in a wide array of popular applications, including Tesla’s Autopilot and Pyro, Uber’s probabilistic modeling engine. This course is an introduction to image classification using PyTorch’s computer vision models for training and tuning your own model. You’ll start with the fundamental concepts of applying machine learning and its applications to image classification before exploring the process of training your AI model. You’ll prepare data for intake by the computer vision model with image pre-processing, set up pipelines for training your model, and fine-tune the variables to improve predictive performance. You’ll finish by deploying the image classification model by converting to ONNX format and serving it via REST API. By the end of this course, you’ll be able to build and deploy your own image classification models from scratch.

6hrs
Beginner
110 Playgrounds
6 Quizzes

Performing Modern Statistical Analysis with R

Cover
Performing Modern Statistical Analysis with R

R is a widely used programming language for statistical computing. It features robust libraries that cover everything from basic data analytics to visualization functions for presentation. R is used by professional data scientists, researchers, and marketers. This course is a comprehensive introduction to modern statistical analysis using R, particularly for researchers in life and environmental sciences. You’ll review R and cover its functionality with its various packages. You'll review essential statistical functions including data description, linear modeling, regression analysis, and more. You’ll also cover advanced analytical techniques looking at analysis of variance, factorial designs, and non-normal data distributions. You’ll also discuss generalized linear models, including binomial GLMs and GLMs for binary data. By the end of this course, you’ll be prepared to apply statistical methods to real-world problems and interpret and analyze various models in an effective contemporary manner.

29hrs 55mins
Intermediate
229 Playgrounds
15 Quizzes

Game Data Science Using R

Cover
Game Data Science Using R

Game data science is emerging as a significant field of study due to the emergence of social games embedded in online social networks. The ubiquity of social games gives access to new data sources and impacts essential business decisions, given the introduction of freemium business models. Game data science covers collecting, storing, analyzing data, and communicating insights. This course will teach you game data extraction, processing, data abstraction, data analysis through visualization, data clustering, supervised learning, neural networks, and advanced sequence analysis using a case study and many examples in the R programming language.

45hrs
Intermediate
283 Playgrounds
11 Quizzes


  

Free Resources