我正在尝试使用skfuzzy ctrl库在python中构建一个模糊的decsion制作模块。我定义了一个前因和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功能并没有为我提供定义自己前提的灵活性。 谢谢。
答案 0 :(得分:0)
我不确定您想要什么,但是,您可以使用automf在“前提”中定义标签,例如:
names = ['nb', 'ns', 'ze', 'ps', 'pb']
x_pos.automf(names=names)