Fuzzy logic, in comparison with binary logic, provides a mathematical way to understand uncertain and ambiguous data. Unlike binary logic where the truth values are '0' (False) or '1' (True), fuzzy logic allows values anywhere between 0 and 1, representing degrees of truth. This key difference makes it a considerable choice in artificial intelligence (AI) systems specifically for decision-making processes across a wide range of applications from home appliances and cars to the stock market.
In traditional Boolean logic, the truth value of a proposition may just be True (1) or False (0). In contrast, fuzzy logic extends the binary (dual) set of truth values with a continuum extending between the dichotomous values True and False. This gives us a richer language to express and manipulate logical thoughts.
Fuzzy logic provides a simple way to draw definite conclusions from vague, ambiguous or imprecise information. It helps facilitate the decision-making process in AI by bringing an intuitive approach to solve the problem. It tries to emulate the way human beings make decisions, only faster.
We will use the skfuzzy
library in Python for demonstrating a simple implementation of Fuzzy Logic.
Near the starting point of your script, make sure to import the necessary libraries:
import numpy as np import skfuzzy as fuzz from skfuzzy import control as ctrl
Now let's create a simple fuzzy logic system to determine the speed of a car based on the distance and angle to the next turn. We'll create Antecedent/Consequent objects holding universe variables and membership functions. Then we will create the fuzzy rules.
# New Antecedent/Consequent objects hold universe variables and membership # functions distance = ctrl.Antecedent(np.arange(0, 101, 1), 'distance') angle = ctrl.Antecedent(np.arange(-90, 91, 1), 'angle') speed = ctrl.Consequent(np.arange(0, 121, 1), 'speed') # Auto-membership function population is possible with .automf(3, 5, or 7) distance.automf(3) angle.automf(3) # Custom membership functions can be built interactively speed['low'] = fuzz.trimf(speed.universe, [0, 0, 60]) speed['medium'] = fuzz.trimf(speed.universe, [0, 60, 120]) speed['high'] = fuzz.trimf(speed.universe, [60, 120, 120]) # You can see how these look with .view() distance.view() angle.view() speed.view() # Let's create the fuzzy rules rule1 = ctrl.Rule(distance['poor'] | angle['poor'], speed['low']) rule2 = ctrl.Rule(angle['average'], speed['medium']) rule3 = ctrl.Rule(distance['good'] | angle['good'], speed['high']) speed_ctrl = ctrl.ControlSystem([rule1, rule2, rule3]) speeding = ctrl.ControlSystemSimulation(speed_ctrl) # Pass inputs to the ControlSystem using Antecedent labels speeding.input['distance'] = 10.0 speeding.input['angle'] = -15.0 # Crunch the numbers speeding.compute() print(speeding.output['speed'])
In this simple example, we analyse the angles and distances to determine the speed of the car. The code uses fuzzy set operations and fuzzy rules to determine the output. Now you can explore more complex systems and dive deeper into fuzzy logic in AI.