Skfuzzy,断言错误

2024-09-30 01:34:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我为一个机器人做了一个模糊控制系统,我得到了“断言不为零的真实度,'反模糊的总面积为零!” 断言者错误:反模糊化中的总面积为零! “,我或多或少知道错误是什么,但不知道错误是什么,我知道用户不喜欢这种问题,但我已经尝试解决了2天,所以如果有人能说出代码的哪里和哪里出了问题,我会非常高兴, 守则:

     uS1 = ctrl.Antecedent(np.arange(0, 2, 0.001), 'uS1')
     uS5 = ctrl.Antecedent(np.arange(0, 2, 0.001), 'uS5')
     uS8 = ctrl.Antecedent(np.arange(0, 2, 0.001), 'uS8')

     velocidadeL = ctrl.Consequent(np.arange(-1.0, 1.0, 0.01), 'velocidadeL')
     velocidadeR = ctrl.Consequent(np.arange(-1.0, 1.0, 0.01), 'velocidadeR')
     
     uS1['perto'] = fuzzy.trimf(uS1.universe, [0.01, 0.1, 0.3])
     uS1['media'] = fuzzy.trimf(uS1.universe, [0.2, 0.6, 1])
     uS1['longe'] = fuzzy.trimf(uS1.universe, [0.8, 1.5, 2])

     uS5['perto'] = fuzzy.trimf(uS5.universe, [0.01, 0.1, 0.3])
     uS5['media'] = fuzzy.trimf(uS5.universe, [0.2, 0.6, 1])
     uS5['longe'] = fuzzy.trimf(uS5.universe, [0.8, 1.5, 2])

     uS8['perto'] = fuzzy.trimf(uS8.universe, [0.01, 0.1, 0.3])
     uS8['media'] = fuzzy.trimf(uS8.universe, [0.2, 0.6, 1])
     uS8['longe'] = fuzzy.trimf(uS8.universe, [0.8, 1.5, 2])

     velocidadeL['para_trás'] = fuzzy.trimf(velocidadeL.universe, [-1.0, -0.5, 0.0])
     velocidadeL['para_frente'] = fuzzy.trimf(velocidadeL.universe, [0.0, 0.5, 1.0])

     velocidadeR['para_trás'] = fuzzy.trimf(velocidadeR.universe, [-1.0, -0.5, 0.0])
     velocidadeR['para_frente'] = fuzzy.trimf(velocidadeR.universe, [0.0, 0.5, 1.0])

     regra_1 = ctrl.Rule(uS1['perto'] & uS5['perto'] & uS8['perto'],
                            (velocidadeL['para_trás'], velocidadeR['para_trás']))
     regra_2 = ctrl.Rule(uS1['perto'] & uS5['longe'] & uS8['perto'],
                            (velocidadeL['para_frente'], velocidadeR['para_frente']))
     regra_3 = ctrl.Rule(uS1['perto'] & uS5['longe'] & uS8['longe'],
                            (velocidadeL['para_frente'], velocidadeR['para_trás']))
     regra_4 = ctrl.Rule(uS1['longe'] & uS5['longe'] & uS8['perto'],
                            (velocidadeL['para_trás'], velocidadeR['para_frente']))
     regra_5 = ctrl.Rule(uS1['longe'] & uS5['perto'] & uS8['longe'],
                            (velocidadeL['para_trás'], velocidadeR['para_trás']))
     regra_6 = ctrl.Rule(uS1['longe'] & uS5['longe'] & uS8['longe'],
                            (velocidadeL['para_frente'], velocidadeR['para_frente']))

     regra_7 = ctrl.Rule(uS1['media'] & uS5['media'] & uS8['media'],
                            (velocidadeL['para_frente'], velocidadeR['para_frente']))
     regra_8 = ctrl.Rule(uS1['media'] & uS5['perto'] & uS8['perto'],
                            (velocidadeL['para_trás'], velocidadeR['para_frente']))
     regra_9 = ctrl.Rule(uS1['media'] & uS5['longe'] & uS8['longe'],
                            (velocidadeL['para_frente'], velocidadeR['para_trás']))
     regra_10 = ctrl.Rule(uS1['perto'] & uS5['perto'] & uS8['media'],
                             (velocidadeL['para_frente'], velocidadeR['para_trás']))
     regra_11 = ctrl.Rule(uS1['longe'] & uS5['longe'] & uS8['media'],
                             (velocidadeL['para_trás'], velocidadeR['para_trás']))

     s_fuzzy_ctrl = ctrl.ControlSystem(
            [regra_1, regra_2, regra_3, regra_4, regra_5, regra_6, regra_7, regra_8, regra_9, regra_10,
             regra_11])
     s_fuzzy = ctrl.ControlSystemSimulation(s_fuzzy_ctrl)
       
     s_fuzzy.input['uS1'] = sensor1
     s_fuzzy.input['uS5'] = sensor5
     s_fuzzy.input['uS8'] = sensor8

     s_fuzzy.compute() 

我用一个先行词就完成了这项工作

distancia = ctrl.Antecedent(np.arange(0, 2, 0.001), 'Distância')
            
velocidadeL = ctrl.Consequent(np.arange(-1.0, 1.0, 0.01), 'velocidadeL')
velocidadeR = ctrl.Consequent(np.arange(-1.0, 1.0, 0.01), 'velocidadeR')
                
distancia['perto'] = fuzzy.trimf(distancia.universe,[0, 0.1, 0.3])
distancia['media'] = fuzzy.trimf(distancia.universe,[0.2, 0.6, 1])
distancia['longe'] = fuzzy.trimf(distancia.universe,[0.8, 1.5, 2])
                
            
velocidadeL['para_trás'] = fuzzy.trimf(velocidadeL.universe, [-1.0, -0.5, 0.0])
velocidadeL['para_frente'] = fuzzy.trimf(velocidadeL.universe, [0.0, 0.5, 1.0])
                
velocidadeR['para_trás'] = fuzzy.trimf(velocidadeR.universe, [-1.0, -0.5, 0.0])
velocidadeR['para_frente'] = fuzzy.trimf(velocidadeR.universe, [0.0, 0.5, 1.0])    
                
regra_1 = ctrl.Rule(distancia['perto'], (velocidadeL['para_trás'], velocidadeR['para_frente']))
regra_2 = ctrl.Rule(distancia['media'], (velocidadeL['para_frente'], velocidadeR['para_frente']))
regra_3 = ctrl.Rule(distancia['longe'], (velocidadeL['para_frente'], velocidadeR['para_frente']))

s_fuzzy_ctrl = ctrl.ControlSystem([regra_1, regra_2, regra_3])
s_fuzzy = ctrl.ControlSystemSimulation(s_fuzzy_ctrl)

s_fuzzy.input['Distância'] = sensor_sq[min_ind]
s_fuzzy.compute()

Tags: trfuzzyctrlparauniversepertous1regra

热门问题