Outline
Automated Braking System
Automated Braking System
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
#function
distance = ctrl.Antecedent(np.arange(0,200,1),'distance')
velocity = ctrl.Antecedent(np.arange(0,40,1),'velocity')
brak = ctrl.Consequent(np.arange(0,9,1),'brak')
###input:distance
distance['veryclose'] = fuzz.trimf(distance.universe,[-12,0,12])
distance['close'] = fuzz.trimf(distance.universe,[5,28,50])
distance['near'] = fuzz.trimf(distance.universe,[20,60,100])
distance['far'] = fuzz.trimf(distance.universe,[60,120,120])
distance['veryfar'] = fuzz.trimf(distance.universe,[100,200,200])
distance.view()
velocity['stop'] = fuzz.trimf(velocity.universe,[0,0,3])
velocity['veryslow'] = fuzz.trimf(velocity.universe,[0,5,10])
velocity['slow'] = fuzz.trimf(velocity.universe,[5,13,20])
velocity['medium'] = fuzz.trimf(velocity.universe,[10,15,20])
velocity['fast'] = fuzz.trimf(velocity.universe,[15,25,35])
velocity['veryfast'] = fuzz.trimf(velocity.universe,[25,32,40])
velocity.view()
brak['none'] = fuzz.trimf(brak.universe,[0,0,0])
brak['light'] = fuzz.trimf(brak.universe,[0,1,3])
brak['medium'] = fuzz.trimf(brak.universe,[1,3,5])
brak['heavy'] = fuzz.trimf(brak.universe,[3,4,6])
brak['veryheavy'] = fuzz.trimf(brak.universe,[5,6,8])
brak.view()
rule1 = ctrl.Rule(distance['veryclose'] & velocity['stop'], brak['light'])
rule2 = ctrl.Rule(distance['veryclose'] & velocity['veryslow'], brak['medium'])
rule3 = ctrl.Rule(distance['veryclose'] & velocity['slow'], brak['heavy'])
rule4 = ctrl.Rule(distance['veryclose'] & velocity['medium'], brak['heavy'])
rule5 = ctrl.Rule(distance['veryclose'] & velocity['fast'], brak['veryheavy'])
rule6 = ctrl.Rule(distance['veryclose'] & velocity['veryfast'], brak['veryheavy'])
rule7 = ctrl.Rule(distance['close'] & velocity['stop'], brak['light'])
rule8 = ctrl.Rule(distance['close'] & velocity['veryslow'], brak['medium'])
rule9 = ctrl.Rule(distance['close'] & velocity['slow'], brak['medium'])
rule10 = ctrl.Rule(distance['close'] & velocity['medium'], brak['heavy'])
rule11 = ctrl.Rule(distance['close'] & velocity['fast'], brak['veryheavy'])
rule12 = ctrl.Rule(distance['close'] & velocity['veryfast'], brak['veryheavy'])
rule13 = ctrl.Rule(distance['near'] & velocity['stop'], brak['light'])
rule14 = ctrl.Rule(distance['near'] & velocity['veryslow'], brak['light'])
rule15 = ctrl.Rule(distance['near'] & velocity['slow'], brak['light'])
rule16 = ctrl.Rule(distance['near'] & velocity['medium'], brak['medium'])
rule17 = ctrl.Rule(distance['near'] & velocity['fast'], brak['medium'])
rule18 = ctrl.Rule(distance['near'] & velocity['veryfast'], brak['heavy'])
rule19 = ctrl.Rule(distance['far'] & velocity['stop'], brak['none'])
rule20 = ctrl.Rule(distance['far'] & velocity['veryslow'], brak['none'])
rule21 = ctrl.Rule(distance['far'] & velocity['slow'], brak['light'])
rule22 = ctrl.Rule(distance['far'] & velocity['medium'], brak['light'])
rule23 = ctrl.Rule(distance['far'] & velocity['fast'], brak['medium'])
rule24 = ctrl.Rule(distance['far'] & velocity['veryfast'], brak['heavy'])
rule25 = ctrl.Rule(distance['veryfar'] & velocity['stop'], brak['none'])
rule26 = ctrl.Rule(distance['veryfar'] & velocity['veryslow'], brak['none'])
rule27 = ctrl.Rule(distance['veryfar'] & velocity['slow'], brak['none'])
rule28 = ctrl.Rule(distance['veryfar'] & velocity['medium'], brak['none'])
rule29 = ctrl.Rule(distance['veryfar'] & velocity['fast'], brak['light'])
rule30 = ctrl.Rule(distance['veryfar'] & velocity['veryfast'], brak['light'])
rules = [rule1,
rule2,
rule3,
rule4,
rule5,
rule6,
rule7,
rule8,
rule9,
rule10,
rule11,
rule12,
rule13,
rule14,
rule15,
rule16,
rule17,
rule18,
rule19,
rule20,
rule21,
rule22,
rule23,
rule24,
rule25,
rule26,
rule27,
rule28,
rule29,
rule30]
breaking_ctrl = ctrl.ControlSystem(rules)
breaking = ctrl.ControlSystemSimulation(breaking_ctrl)
breaking.input['distance'] = 100
breaking.input['velocity'] = 35
# Crunch the numbers
breaking.compute()
print(breaking.output['brak'])
brak.view(sim= breaking)
if __name__ == "__main__":
speed = int(input("Enter Speed : "))
distance = int(input("Enter distance : "))
breaking.input['distance'] = distance
breaking.input['velocity'] = speed
breaking.compute()
print("Output for breaking pressure : " + str(breaking.output['brak']))
brak.view(sim = breaking)