问题描述
类别停权: def init (自己): #输入变量 self._def_vel = ctrl.Antecedent(np.arange(-1,1.25,0.25),'_def_vel')
self._body_vel = ctrl.Antecedent(np.arange(-1,1.25,0.25),"_body_vel")
self._body_acc = ctrl.Antecedent([-2,-1.5,1.5,2],"_body_acc")
#ouput variable
self._actuator_force = ctrl.Consequent(np.arange(-4000,4250,250),"_actuator_force")
#fuzzification
self._def_vel.automf(5)
self._body_vel.automf(5)
self._body_acc.automf(7)
self._actuator_force.automf(5)
self._def_vel["NM"] = fuzzy.zmf(self._def_vel.universe,-0.50,-0.25)
self._def_vel["NS"] = fuzzy.trimf(self._def_vel.universe,[-0.50,-0.25,0])
self._def_vel["ZE"] = fuzzy.trimf(self._def_vel.universe,[-0.25,0.25])
self._def_vel["PS"] = fuzzy.trimf(self._def_vel.universe,[0,0.25,0.50])
self._def_vel["PM"] = fuzzy.smf(self._def_vel.universe,0.50)
self._def_vel.view()
self._body_vel["NM"] = fuzzy.zmf(self._body_vel.universe,-0.25)
self._body_vel["NS"] = fuzzy.trimf(self._body_vel.universe,0])
self._body_vel["ZE"] = fuzzy.trimf(self._body_vel.universe,0.25])
self._body_vel["PS"] = fuzzy.trimf(self._body_vel.universe,0.50])
self._body_vel["PM"] = fuzzy.smf(self._body_vel.universe,0.50)
self._body_vel.view()
self._body_acc["N"] = fuzzy.zmf(self._body_acc.universe,0)
self._body_acc["ZE"] = fuzzy.trimf(self._body_acc.universe,[-1.5,1.5])
self._body_acc["P"] = fuzzy.smf(self._body_acc.universe,1.5)
self._body_acc.view()
self._actuator_force["ZE"] = fuzzy.trimf(self._actuator_force.universe,[-500,500])
self._actuator_force["NS"] = fuzzy.trimf(self._actuator_force.universe,[-1000,-500,0])
self._actuator_force["PS"] = fuzzy.trimf(self._actuator_force.universe,500,1000])
self._actuator_force["PM"] = fuzzy.trimf(self._actuator_force.universe,[500,1250,1750])
self._actuator_force["NM"] = fuzzy.trimf(self._actuator_force.universe,[-2250,-1250,-500])
self._actuator_force["PB"] = fuzzy.trimf(self._actuator_force.universe,[1000,2000,3500])
self._actuator_force["NB"] = fuzzy.trimf(self._actuator_force.universe,[-3500,-2000,-1000])
self._actuator_force["PV"] = fuzzy.smf(self._actuator_force.universe,2250,3750)
self._actuator_force["NV"] = fuzzy.zmf(self._actuator_force.universe,-3250,-1750)
self._actuator_force.view()
#Rules
self.rule1 = ctrl.Rule(self._def_vel["PM"] and self._body_vel["PM"] and self._body_acc["ZE"],self._actuator_force["ZE"])
self.rule2 = ctrl.Rule(self._def_vel["PS"] and self._body_vel["PM"] and self._body_acc["ZE"],self._actuator_force["NS"])
self.rule3 = ctrl.Rule(self._def_vel["ZE"] and self._body_vel["PM"] and self._body_acc["ZE"],self._actuator_force["NM"])
self.rule48 = ctrl.Rule(self._def_vel [“ NS”]和self._body_vel [“ NM”]和(self._body_acc [“ P”]或self._body_acc [“ N”]),self ._actuator_force [“ PM”]) self.rule49 = ctrl.Rule(self._def_vel [“ NM”]和self._body_vel [“ NM”]和(self._body_acc [“ P”]或self._body_acc [“ N”]),self._actuator_force [ “ PS”])
#Fuzzy Interference
self._res = ctrl.ControlSystem([self.rule1,self.rule2,self.rule3,self.rule4,self.rule5,self.rule6,self.rule7,self.rule8,self.rule9,self.rule10,self.rule11,self.rule12,self.rule13,self.rule14,self.rule15,self.rule16,self.rule17,self.rule18,self.rule19,self.rule20,self.rule21,self.rule22,self.rule23,self.rule24,self.rule25,self.rule26,self.rule27,self.rule28,self.rule29,self.rule30,self.rule31,self.rule32,self.rule33,self.rule34,self.rule35,self.rule36,self.rule37,self.rule38,self.rule39,self.rule40,self.rule41,self.rule42,self.rule43,self.rule44,self.rule45,self.rule46,self.rule47,self.rule48,self.rule49,self.rule50])
self._res.view()
result = ctrl.ControlSystemSimulation(self._res)
result.input["_def_vel"] = 0
result.input["_body_vel"] = 0
result.input["_body_acc"] = 1
print(result.output["_actuator_force"])
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)