0% found this document useful (0 votes)
5 views7 pages

Assignment AI

This document outlines the implementation of a fuzzy logic system to determine tipping amounts based on service and quality ratings. It defines fuzzy variables and their membership functions, creates a rule base for tipping decisions, and tests the system with various input cases. The results can be visualized using membership plots for service, quality, and tip.

Uploaded by

shakibtuhin8
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views7 pages

Assignment AI

This document outlines the implementation of a fuzzy logic system to determine tipping amounts based on service and quality ratings. It defines fuzzy variables and their membership functions, creates a rule base for tipping decisions, and tests the system with various input cases. The results can be visualized using membership plots for service, quality, and tip.

Uploaded by

shakibtuhin8
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

import numpy as np

import skfuzzy as fuzz


from skfuzzy import control as ctrl
import matplotlib.pyplot as plt

# Step 1: Define fuzzy variables


service = ctrl.Antecedent(np.arange(0, 11, 1), 'service')
quality = ctrl.Antecedent(np.arange(0, 11, 1), 'quality')
tip = ctrl.Consequent(np.arange(0, 26, 1), 'tip')

# Membership functions
service['poor'] = fuzz.trimf(service.universe, [0, 0, 5])
service['average'] = fuzz.trimf(service.universe, [0, 5, 10])
service['good'] = fuzz.trimf(service.universe, [5, 10, 10])

quality['bad'] = fuzz.trimf(quality.universe, [0, 0, 5])


quality['okay'] = fuzz.trimf(quality.universe, [0, 5, 10])
quality['delicious'] = fuzz.trimf(quality.universe, [5, 10, 10])

tip['low'] = fuzz.trimf(tip.universe, [0, 0, 13])


tip['medium'] = fuzz.trimf(tip.universe, [0, 13, 25])
tip['high'] = fuzz.trimf(tip.universe, [13, 25, 25])

# View membership functions


# service.view(), quality.view(), tip.view()

# Step 2: Create Fuzzy Rule Base


rule1 = ctrl.Rule(service['poor'] & quality['bad'], tip['low'])
rule2 = ctrl.Rule(service['poor'] & quality['okay'], tip['low'])
rule3 = ctrl.Rule(service['poor'] & quality['delicious'],
tip['medium'])

rule4 = ctrl.Rule(service['average'] & quality['bad'], tip['low'])


rule5 = ctrl.Rule(service['average'] & quality['okay'], tip['medium'])
rule6 = ctrl.Rule(service['average'] & quality['delicious'],
tip['high'])

rule7 = ctrl.Rule(service['good'] & quality['bad'], tip['medium'])


rule8 = ctrl.Rule(service['good'] & quality['okay'], tip['high'])
rule9 = ctrl.Rule(service['good'] & quality['delicious'], tip['high'])

# Step 3: Implement the system


tipping_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5,
rule6, rule7, rule8, rule9])
tipping = ctrl.ControlSystemSimulation(tipping_ctrl)

# Step 4: Test with 5 inputs


test_cases = [
(2.0, 3.0),
(5.0, 5.0),
(8.0, 2.0),
(6.0, 9.0),
(9.0, 9.0)
]

# Case 1
tipping.input['service'] = 2.0
tipping.input['quality'] = 3.0
tipping.compute()

tip.view(sim=tipping)

# Case 2
tipping.input['service'] = 5.0
tipping.input['quality'] = 5.0
tipping.compute()

tip.view(sim=tipping)

# Case 3
tipping.input['service'] = 8.0
tipping.input['quality'] = 2.0
tipping.compute()

tip.view(sim=tipping)

# Case 4
tipping.input['service'] = 6.0
tipping.input['quality'] = 9.0
tipping.compute()

tip.view(sim=tipping)

# Case 5
tipping.input['service'] = 9.0
tipping.input['quality'] = 9.0
tipping.compute()

tip.view(sim=tipping)

# Optional: Show membership plots

service.view()
quality.view()
tip.view()

You might also like