Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import numpy as np
- import random
- import skfuzzy as fuzz
- from skfuzzy import control as ctrl
- file1 = open("s1.txt")
- x=[]
- y=[]
- lines1 = file1.readlines()
- for i in range(int(len(lines1))):
- line = lines1[i].split()
- x.append((int)(line[0])/1000000)
- y.append((int)(line[1])/1000000)
- xx = ctrl.Antecedent(np.arange(0, 1, 0.1), 'xx')
- yy = ctrl.Antecedent(np.arange(0, 1, 0.1), 'yy')
- klas = ctrl.Consequent(np.arange(0, 15, 1), 'klas')
- # Auto-membership function population is possible with .automf(3, 5, or 7)
- xx['a'] = fuzz.trimf(xx.universe, [0, 0.1, 0.2])
- xx['b'] = fuzz.trimf(xx.universe, [0.15, 0.25, 0.35])
- xx['c'] = fuzz.trimf(xx.universe, [0.3, 0.4, 0.5])
- xx['d'] = fuzz.trimf(xx.universe, [0.45, 0.55, 0.65])
- xx['e'] = fuzz.trimf(xx.universe, [0.6, 0.7, 0.8])
- xx['f'] = fuzz.trimf(xx.universe, [0.75, 0.85, 1])
- yy['A'] = fuzz.trimf(yy.universe, [0, 0.1, 0.2])
- yy['B'] = fuzz.trimf(yy.universe, [0.15, 0.25, 0.35])
- yy['C'] = fuzz.trimf(yy.universe, [0.3, 0.4, 0.5])
- yy['D'] = fuzz.trimf(yy.universe, [0.45, 0.55, 0.65])
- yy['E'] = fuzz.trimf(yy.universe, [0.6, 0.7, 0.8])
- yy['F'] = fuzz.trimf(yy.universe, [0.75, 0.85, 1])
- # Custom membership functions can be built interactively with a familiar,
- # Pythonic API
- klas['0'] = fuzz.trimf(klas.universe, [0, 0, 0])
- klas['1'] = fuzz.trimf(klas.universe, [1, 1, 1])
- klas['2'] = fuzz.trimf(klas.universe, [2, 2, 2])
- klas['3'] = fuzz.trimf(klas.universe, [3, 3, 3])
- klas['4'] = fuzz.trimf(klas.universe, [4, 4, 4])
- klas['5'] = fuzz.trimf(klas.universe, [5, 5, 5])
- klas['6'] = fuzz.trimf(klas.universe, [6, 6, 6])
- klas['7'] = fuzz.trimf(klas.universe, [7, 7, 7])
- klas['8'] = fuzz.trimf(klas.universe, [8, 8, 8])
- klas['9'] = fuzz.trimf(klas.universe, [9, 9, 9])
- klas['10'] = fuzz.trimf(klas.universe, [10, 10, 10])
- klas['11'] = fuzz.trimf(klas.universe, [11, 11, 11])
- klas['12'] = fuzz.trimf(klas.universe, [12, 12, 12])
- klas['13'] = fuzz.trimf(klas.universe, [13, 13, 13])
- klas['14'] = fuzz.trimf(klas.universe, [14, 14, 14])
- rule1 = ctrl.Rule(xx['b'] & yy['F'], klas['0'])
- rule2 = ctrl.Rule(xx['c'] & yy['F'], klas['1'])
- rule3 = ctrl.Rule(xx['d'] & yy['F'], klas['2'])
- rule4 = ctrl.Rule(xx['e'] & yy['E'], klas['3'])
- rule5 = ctrl.Rule(xx['f'] & yy['D'], klas['4'])
- rule6 = ctrl.Rule(xx['d'] & yy['D'], klas['5'])
- rule7 = ctrl.Rule(xx['b'] & yy['D'], klas['6'])
- rule8 = ctrl.Rule(xx['a'] & yy['D'], klas['7'])
- rule9 = ctrl.Rule(xx['a'] & yy['B'], klas['8'])
- rule10 = ctrl.Rule(xx['c'] & yy['C'], klas['9'])
- rule11 = ctrl.Rule(xx['d'] & yy['C'], klas['10'])
- rule12 = ctrl.Rule(xx['e'] & yy['B'], klas['11'])
- rule13 = ctrl.Rule(xx['b'] & yy['A'], klas['12'])
- rule14 = ctrl.Rule(xx['c'] & yy['A'], klas['13'])
- rule15 = ctrl.Rule(xx['f'] & yy['A'], klas['14'])
- tipping_ctrl = ctrl.ControlSystem([rule1, rule2, rule3,rule4, rule5, rule6,rule7, rule8, rule9,rule10, rule11, rule12, rule13, rule14, rule15])
- tipping = ctrl.ControlSystemSimulation(tipping_ctrl)
- tipping.input['xx'] = 0.0
- tipping.input['yy'] = 0.0
- tipping.compute()
- print (tipping.output['klas'])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement