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

📄 tempctrl.h

📁 基于人工智能中模糊集理论的模拟温控程序
💻 H
字号:
// TempCtrl.h: interface for the TempCtrl class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TEMPCTRL_H__FA8E4AA5_A78A_45FA_8B05_9B845E72E7B6__INCLUDED_)
#define AFX_TEMPCTRL_H__FA8E4AA5_A78A_45FA_8B05_9B845E72E7B6__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

float Min(float x,float y);
float Max(float x,float y);

struct MalphaW		//用于存储W的membership function的结构,包含一个alpha值,一个相应W所属的隶属函数号
{
	float alpha;
	int FunctionNumber;
};

class TempCtrl
{
public:
	int dx;			//绘图计数器,用于给横坐标象素计数
	int dtime;		//时间轴刻度计数器
	float T;		//当前温度
	float T0;		//目标温度
	float T_Start;	//系统的初始温度,根据初始的E得出
	float T_Curr;	//系统的当前温度,根据当前的E得出
	float E;		//当前温差,标准化后,最小为-4,最大为4
	float DE;		//温差变化率,最小为-4,最大为4
	float K;		//比例因子,温度收敛速率,最小为0,最大为1
	float W;		//热源个数,需要根据E,DE计算
	float mFE[5];	//用于存储E的5个隶属度
	float mFDE[5];	//用于存储DE的5个隶属度
	float mTW;		//用于存储最终W的membership
	MalphaW malphaW[4];

	TempCtrl();
    
	//五个隶属度计算函数
	float NB(float x);
	float NS(float x);
	float ZO(float x);
	float PS(float x);
	float PB(float x);
	int JudgeW(int e,int de);	//根据E和DE所属的隶属度函数以及相应的规则求W所属的隶属度函数,返回隶属度函数编号,同时将判断过程中使用的规则数组中相应元素置1
								//隶属度函数编号NB--0,NS--1,ZO--2,PS--3,PB--4;若W无匹配的隶属函数,则返回5
	void W_Member_Function();	//用于对每一条可匹配的规则求相应W的member function
	float MW(float x,int y);			//根据产生W的隶属函数编号确定调用相应的隶属函数,返回隶属度
	float ComputW();				//计算每一次的W值,返回计算结果,即W的值,采用分段求和法求积分
	void ComputNext();				//根据W计算下一个E和DE
	virtual ~TempCtrl();

};

#endif // !defined(AFX_TEMPCTRL_H__FA8E4AA5_A78A_45FA_8B05_9B845E72E7B6__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -