我为一个机器人做了一个模糊控制系统,我得到了“断言不为零的真实度,'反模糊的总面积为零!” 断言者错误:反模糊化中的总面积为零! “,我或多或少知道错误是什么,但不知道错误是什么,我知道用户不喜欢这种问题,但我已经尝试解决了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()
目前没有回答
相关问题 更多 >
编程相关推荐