📄 fuzzy.h
字号:
// Fuzzy.h: interface for the Fuzzy class.
//
//////////////////////////////////////////////////////////////////////
#include <math.h>
#include <memory.h>
#if !defined(AFX_FUZZY_H__46E55F21_6CA9_4125_ABCD_77F6A04ED01C__INCLUDED_)
#define AFX_FUZZY_H__46E55F21_6CA9_4125_ABCD_77F6A04ED01C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
/********************************************************************
created: 2007/02/08
created: 8:2:2007 21:21
Classname: FuzzyControl
InputFunc: FuzzyProcess(通信内容)
OutputVar: m_pObstacleList障碍物链表的头指针;
m_daBallPoleCord[2]球或目标的极坐标
author: 高扬
purpose: 获取仿真程序所需要的所有球场信息
*********************************************************************/
class FuzzyControl
{
public:
inline double trapmf(double inputx,double sig1,double c1,double sig2,double c2);//->梯形隶属函数
void ProcessFuzzyControl(double TargetAngle,double Danger);//->进行逻辑推理并反模糊化
FuzzyControl();
virtual ~FuzzyControl();
protected:
// double sigmf(double sig1,double c1,double sig2,double c2);
double m_aAngleMemberFunctionPar[8];//->角度隶属函数中用到的参数,0,1为ZERO;2,3为NS;4,5为NM,6,7为NB。每个函数有多个参数,分别按MATLAB中相应函数的格式顺序如:6为A,7为C,sigma为4,C为5
double m_aDangerMemberFunctionPar[12];//->危险隶属函数中用到的参数,0,1为ZERO;2,3,4,5为Near;6,7,8,9为Mid,10,11为far。每个函数有两个参数,分别按MATLAB中相应函数的格式顺序如:6为A,7为C,sigma为4,C为5
void FuzzyInput(double AngleInput,double DangerInput);//->模糊输入变量
double m_aAngleBelongDegree[4];//->角度的语言隶属度,0~3分别对应Zero,Ns,Nm,Nb
double m_aDangerBelongDegree[4];//->危险的语言隶属度,0~3分别对应Zero,NEAR,Mid,FAR
double m_aAngleMemberFunCenterValue[4];//->角度的语言隶属函数中心点值,顺序同上
double m_aDangerMemberFunCenterValue[4];//->危险的语言隶属函数中心点值,顺序同上
double m_aLineSpeedMemberFunCenterValue[4];//->线速度输出语言变量的中心值,依次为ZERO,SLOW,MID,FAST的中心
double m_aCornerSpeedMemberFunCenterValue[4];//->角速度输出语言变量的中心值,依次为ZERO,LESSSHARP,MIDSHARP,FASTSHARP的中心
double m_aFuzzyRuleActiveDegree[16];//->规则激活度,规则顺序按MATLAB中的顺序,具体参见ProcessFuzzyControl函数中推理时各激活度求解建立用到的顺序.
int m_anSingleRuleResultLineSpeedCenterValue[16];//->每条规则中的结果部分是第几个线速度语言变量,其中的内容为0~3的整数依次为ZERO,SLOW,Mid,FAST
int m_anSingleRuleResultCornerSpeedCenterValue[16];//->每条规则中的结果部分是第几个角速度语言变量,其中的内容为0~3的整数依次为ZERO,LESSSHARP,MidSHARP,SHARP
public:
double LineSpeedOutPut;//线速度输出结果
double CornerSpeedOutPut;//角速度输出结果
};
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#endif // !defined(AFX_FUZZY_H__46E55F21_6CA9_4125_ABCD_77F6A04ED01C__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -