⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fuzzy.h

📁 InnovLabSimu在vc++下实现
💻 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 + -