如何正确设置 scikit-fuzzy trimf 函数的参数

问题描述 投票:0回答:1

当我尝试手动设置使用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],它将运行而不会抛出错误,但我想知道为什么会发生这种情况

python scikit-learn fuzzy-logic
1个回答
0
投票

因为在使用Skfuzzy库的trimf函数时,使用[0,0.2,1]会抛出不满足三角隶属函数参数的错误。 改成[0, 0, 1]就可以操作了,可以满足其特殊的有效情况。

© www.soinside.com 2019 - 2024. All rights reserved.