📄 tempctrl.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 + -