当我尝试手动设置使用trimf函数的参数时,当我尝试输入0时,它会抛出错误。这是重现问题的最小代码
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
universe = np.linspace(0,1,100)
test_input = ctrl.Antecedent(universe,'test_input')
test_output = ctrl.Consequent(np.linspace(0,1,100), 'test_output')
test_input['poor'] = fuzz.trimf(universe, [0 , 0.2, 1])
test_output.automf(3)
rule1 = ctrl.Rule(test_input['poor'], test_output['poor'])
test_ctrl = ctrl.ControlSystem([rule1])
test_sim = ctrl.ControlSystemSimulation(test_ctrl)
test_sim.input['test_input'] = 0
test_sim.compute()
print(test_sim.output['test_output'])
我知道如果我将trimf参数更改为[0, 0, 1],它将运行而不会抛出错误,但我想知道为什么会发生这种情况
因为在使用Skfuzzy库的trimf函数时,使用[0,0.2,1]会抛出不满足三角隶属函数参数的错误。 改成[0, 0, 1]就可以操作了,可以满足其特殊的有效情况。