Определение пользовательской функции принадлежности с использованием библиотеки Python skfuzzy

Я пытаюсь создать модуль принятия нечетких решений в python, используя библиотеку skfuzzy ctrl. Я определяю один антецедент и 5 следствий. Но дело в том, что я не могу определить свою собственную треугольную функцию принадлежности для антецедента. Код приведен ниже.

# Import libraries
import math as M
import numpy as np
import matplotlib.pyplot as plt
import serial
import time
import skfuzzy as fuzz
x_pos = ctrl.Antecedent(np.arange(-0.25, 0.25, 0.001),'x_pos')

# x_serv = np.arange(0, 11, 1)
L1 = ctrl.Consequent(np.arange(0, 100, 0.001),'L1')
L2 = ctrl.Consequent(np.arange(0, 100, 0.001),'L2')
R1 = ctrl.Consequent(np.arange(0, 100, 0.001),'R1')
R2 = ctrl.Consequent(np.arange(0, 100, 0.001),'R2')
T = ctrl.Consequent(np.arange(0, 100, 0.001),'T')

Я пробовал это так, но, как и ожидалось, он показывает ошибки.

x_pos['left']=fuzz.trimf(x_pos,[-0.25,-0.25,0])
x_pos['center']=fuzz.trimf(x_pos,[-0.1,0,0.1])
x_pos['right']=fuzz.trimf(x_pos,[0,0.25,0.25])

В любом случае я могу определить свой собственный антецедент без использования функции automf. Функция automf не дает мне возможности определить собственный антецедент. Спасибо.


person CR7    schedule 13.04.2018    source источник


Ответы (1)


Я не уверен в том, что вы хотите, однако вы можете определить метки в своем антецеденте, используя automf, например:

names = ['nb', 'ns', 'ze', 'ps', 'pb']
x_pos.automf(names=names)
person omar    schedule 07.07.2018