版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言实现模糊控制算法C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设模糊控制器结构泥污的模糊集表示为:SD(泥污少)、MD(泥污中)、LD(泥污多);油污的模糊集表示为:NG(油污少)、MG(油污中)、LG(油污多);洗涤时间的模糊集为:VS(很短)、S(短)、M(中)、L(长)、VL(很长)。选用两输入单输出模糊控制器。控制器的输入为衣物的泥污和油污,输出为洗涤时间。定义输入、输出模糊集说明:PPT中,文字前加的部分为C语言程序,按顺序粘贴在一起即是完整的程序,申明该函数后调用即可C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设定义隶属函数选用三角形隶属函数实现泥污和油污的模糊化C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设定义隶属函数选用三角形隶属函数实现洗涤时间的模糊化C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设建立模糊规则根据人的操作经验设计模糊规则,模糊规则设计的标准:“泥污多,油污多,洗涤时间长;泥污中,油污中,洗涤时间中;泥污少,油污少,洗涤时间短”。根据模糊规则的设计标准建立模糊规则表。洗涤时间Z泥污XSDMDLD油污YNGVSMLMGSMLLGMLVLC语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设变量定义float
XF[3]={0,50,100};//污泥X隶属函数划分区间float
YF[3]={0,50,100};//油脂Y隶属函数划分区间float
ZF[5]={0,10,25,40,60};//洗涤时长Z隶属函数划分区间//污泥X0,1,2//油脂YintRule[3][3]={{0,2,3},//0
{1,2,3},//1
{2,3,4}};//2floatFuzzy(floatXIN,floatYIN)//污泥输入X,油脂输入Y{floatXU[2],YU[2],ZU[4];//隶属度
int
Xn,Yn;//隶属度对应的下标intZn[4];//4条有效推理结果floatTemp[4];inti,j,iu;floatZij,ZUmax[4];//输出隶属度最大值洗涤时间Z泥污XSDMDLD油污YNGVSMLMGSMLLGMLVLC语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设计算污泥X的隶属度if(XIN<=XF[1])//0<=XIN<=50{Xn=0;//隶属度对应的下标XU[0]=(XF[1]-XIN)/(XF[1]-XF[0]);XU[1]=1-XU[0];}elseif(XIN<=XF[2])//50<XIN<=100{Xn=1;//隶属度对应的下标XU[0]=(XF[2]-XIN)/(XF[2]-XF[1]);XU[1]=1-XU[0];//XU[1]=(XIN-XF[1])/(XF[2]-XF[1]);}Rule[3][3]={{0,2,3},
{1,2,3},
{2,3,4}};C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设计算油脂Y的隶属度if(YIN<=YF[1])//0<=YIN<=50{Yn=0;//隶属度对应的下标YU[0]=(YF[1]-YIN)/(YF[1]-YF[0]);YU[1]=1-YU[0];}elseif(YIN<=YF[2])//50<YIN<=100{Yn=1;//隶属度对应的下标YU[0]=(YF[2]-YIN)/(YF[2]-YF[1]);YU[1]=1-YU[0];}Rule[3][3]={{0,2,3},
{1,2,3},
{2,3,4}};C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)标题文本预设模糊推理假定传感器测得信息:X(泥污)=60,Y(油污)=70,那么求得其隶属度为:μSD(60)=0,μMD(60)=4/5,μLD(60)=1/5μNG(70)=0,μMG(70)=3/5,μLG(70)=2/5可以得到四条相匹配的模糊规则
//根据Rule[3][3]规则表得出4条有效推理结果
Zn[0]=Rule[Xn][Yn];Zn[1]=Rule[Xn+1][Yn];Zn[2]=Rule[Xn][Yn+1];Zn[3]=Rule[Xn+1][Yn+1];洗涤时间Z泥污XSDMDLD油污YNG000MG0μM(z)μL(z)LG0μL(z)μVL(z)C语言实现模糊控制算法--以洗衣机的模糊控制为例标题文本预设模糊推理
在同一条规则内,先通过取小运算得到每一条规则前提的可信度,可得每条规则总的可信度分别为:min(4/5,3/5)=3/5、min(4/5,2/5)=2/5、min(1/5,3/5)=1/5、min(1/5,2/5)=1/5。
if(XU[0]<=YU[0])//规则前提的可信度取小运算ZU[0]=XU[0];elseZU[0]=YU[0];if(XU[1]<=YU[0])//规则前提的可信度取小运算ZU[1]=XU[1];elseZU[1]=YU[0];if(XU[0]<=YU[1])//规则前提的可信度取小运算ZU[2]=XU[0];elseZU[2]=YU[1];if(XU[1]<=YU[1])//规则前提的可信度取小运算ZU[3]=XU[1];elseZU[3]=YU[1];μMD(60)=4/5,μLD(60)=1/5μMG(70)=3/5,μLG(70)=2/5C语言实现模糊控制算法--以洗衣机的模糊控制为例标题文本预设模糊推理可得到洗衣机的规则前提可信度表规则前提泥污XSDMDLD油污YNG000MG0min(3/5,μM(z))min(1/5,μL(z))LG0min(2/5,μL(z))min(1/5,μVL(z))模糊系统总的可信度μ(z)为各条规则可信度的并集,即μ(z)=max{min(3/5,μM(z)),min(2/5,μL(z)),min(1/5,μL(z)),min(1/5,μVL(z))}=max{min(3/5,μM(z)),min(2/5,μL(z)),min(1/5,μVL(z))}C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)模糊推理
//同隶属函数总规则的可信度取大运算
if(Zn[0]==Zn[1]
{if(ZU[0]>ZU[1])ZU[1]=0;else ZU[0]=0;
}
if(Zn[0]==Zn[2])
{if(ZU[0]>ZU[2])ZU[2]=0;elseZU[0]=0;
}
if(Zn[0]==Zn[3])
{if(ZU[0]>ZU[3])ZU[3]=0;elseZU[0]=0;
}
if(Zn[1]==Zn[2])
{if(ZU[1]>ZU[2])ZU[2]=0;elseZU[1]=0;
}
if(Zn[1]==Zn[3]
{if(ZU[1]>ZU[3])ZU[3]=0;elseZU[1]=0;
}
if(Zn[2]==Zn[3])
{if(ZU[2]>ZU[3])ZU[3]=0;elseZU[2]=0;
}C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)重心法反模糊
模糊系统的总输出实际是3个规则推理结果的并集,需要进行反模糊化,才能得到精确的结果。采用最大隶属度平均法进行反模糊化。由上述推理过程可得洗涤时间隶属度最大值为μ=3/5。将其代入到洗涤时间隶属度函数中的μM(z),得μM(z)=(z-10)/15=3/5,μM(z)=(40-z)/15=3/5,得z1=19,z2=31。采用最大平均法可得z=(z1+z2)/2=25。即洗涤时间为25分钟。洗涤时间Z泥污XSDMDLD油污YNG000MG0μM(z)ZU[0]μL(z)ZU[1]LG0μL(z)ZU[2]μVL(z)ZU[3]C语言实现模糊控制算法--以洗衣机的模糊控制为例重心法反模糊for(i=0;i<4;i++)ZUmax[i]=ZU[i];for(j=0;j<3;j++)//冒泡法排序从小到大排for(i=0;i<3-j;i++)if(ZUmax[i]>=ZUmax[i+1]){Zij=ZUmax[i];ZUmax[i]=ZUmax[i+1];ZUmax[i+1]=Zij;}if(ZUmax[3]>ZUmax[2])//最大隶属度只有一个
{ //找最大隶属度对应的隶属函数
for(i=0;i<4;i++)if(ZUmax[3]==ZU[i])
{iu=i;break;}C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)重心法反模糊if(Zn[iu]==0)//VS
{Temp[0]=ZF[0];Temp[1]=ZF[1]-(ZU[iu]*(ZF[1]-ZF[0]));
}elseif(Zn[iu]==1)//S
{Temp[0]=ZU[iu]*(ZF[1]-ZF[0]);Temp[1]=ZF[2]-(ZU[iu]*(ZF[2]-ZF[1]));
}elseif(Zn[iu]==2)//M
{Temp[0]=ZU[iu]*(ZF[2]-ZF[1])+ZF[1];Temp[1]=ZF[3]-(ZU[iu]*(ZF[3]-ZF[2]));
}elseif(Zn[iu]==3)//L{Temp[0]=ZU[iu]*(ZF[3]-ZF[2])+ZF[2];Temp[1]=ZF[4]-(ZU[iu]*(ZF[4]-ZF[3]));}elseif(Zn[iu]==4)//VL
{Temp[0]=ZU[iu]*(ZF[4]-ZF[3])+ZF[3];Temp[1]=ZF[4];}return(Temp[0]+Temp[1])/2;}
C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容作为文字排版占位显示
(建议使用主题字体)重心法反模糊if(ZUmax[3]==ZUmax[2])//最大隶属度有2个{//找最大隶属度对应的隶属函数for(i=0;i<4;i++)if(ZUmax[3]==ZU[i]){iu=i;break;}if(Zn[iu]==0)//VS+S{Temp[0]=ZF[0];Temp[1]=ZF[1]-(ZU[iu]*(ZF[1]-ZF[0]));Temp[2]=ZU[iu]*(ZF[1]-ZF[0]);Temp[3]=ZF[2]-(ZU[iu]*(ZF[2]-ZF[1]));}elseif(Zn[iu]==1)//S+M{Temp[0]=ZU[iu]*(ZF[1]-ZF[0]);Temp[1]=ZF[2]-(ZU[iu]*(ZF[2]-ZF[1]));Temp[2]=ZU[iu]*(ZF[2]-ZF[1])+ZF[1];Temp[3]=ZF[3]-(ZU[iu]*(ZF[3]-ZF[2]));}C语言实现模糊控制算法--以洗衣机的模糊控制为例此部分内容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训招募主播
- 2026年中煤科工(西安)智能成套装备科技有限公司招聘备考题库及答案详解1套
- 2026年国投生物能源(海伦)有限公司招聘备考题库及答案详解1套
- 2025年派潭镇中心卫生院招聘乡村医生备考题库及答案详解参考
- 2026年广东创新科技职业学院招聘备考题库及完整答案详解一套
- 2026年内江鑫永凌建设开发有限公司招聘工作人员备考题库有答案详解
- 2026年中建四局广西建设投资有限公司备考题库及1套参考答案详解
- 2026年国药西安惠安医院招聘备考题库参考答案详解
- 2026年北京辰安备考题库科技有限公司招聘备考题库及一套答案详解
- 2026年中国三峡集团劳务外包制科研助理岗位招聘备考题库参考答案详解
- 空间计算发展报告(2024年)-元宇宙标准化工作组
- 2025《混凝土搅拌站劳动合同》
- 售楼部装饰设计合同协议
- 煤矿皮带输送机跑偏原因和处理方法
- 创伤后应激障碍的心理护理
- 血管紧张素转换酶抑制剂在心血管疾病防治中应用的专家共识解读
- 医疗项目年度总结模板
- 武器装备科研生产单位保密自检报告
- 2025中级消防设施操作员作业考试题及答案(1000题)
- 人教版小学科学六年级上册全册教案
- 2024-2025学年上学期上海六年级英语期末复习卷3
评论
0/150
提交评论