




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、模糊控制作業(yè)機(jī)研112 張營章 學(xué)號:201120122044題目:設(shè)計(jì)一個(gè)兩個(gè)輸入,單輸出的模糊控制器。設(shè)計(jì)的二維模糊控制器的結(jié)構(gòu)如圖1所示。在此控制器中兩個(gè)輸入為機(jī)器人與障礙的距離D和機(jī)器人所處的環(huán)境類型T,輸出為轉(zhuǎn)角B。1. 控制器結(jié)構(gòu)與障礙距離A 移動(dòng)機(jī)器人 輸出轉(zhuǎn)角B障礙物情況T圖1. 二維模糊控制器結(jié)構(gòu)2. 語言變量取A的模糊子集(5個(gè)): 很近 近 中 遠(yuǎn) 很遠(yuǎn)分別簡記為: VN N M F VF取T的模糊子集(8個(gè))為(以障礙物與機(jī)器人方向?yàn)闇?zhǔn)(如圖2所示) 右 左 右前 左前 前 左右 死胡同 無分別簡記為: T1 T2 T3 T4 T5 T6 T7 T8取B的模糊子集(9個(gè)
2、)為: 左快轉(zhuǎn) 左轉(zhuǎn) 直行 右轉(zhuǎn) 右快轉(zhuǎn)分別簡記為: 1L 2L 3L 4L 5S 6R 7R 8R 9R3. 計(jì)算論域確定A的計(jì)算論域:-2,+2 T的計(jì)算論域:1,8 B的計(jì)算論域:-4,+44. 確定隸屬函數(shù) 障礙距離A(in)隸屬函數(shù)為(高斯型):VN=equalzero(exp(-(in+2)*(in+2)/(0.5*0.5*2);N=equalzero(exp(-(in+1)*(in+1)/(0.45*0.45*2);M=equalzero(exp(-in*in/(0.4*0.4*2);F=equalzero(exp(-(in-1)*(in-1)/(0.45*0.45*2);VF=
3、equalzero(exp(-(in-2)*(in-2)/(0.5*0.5*2);轉(zhuǎn)角大小G(x)隸屬度函數(shù)為(三角形)障礙物情況T(y)的隸屬函數(shù)為: 1,85. 制定模糊控制規(guī)則并建立模糊控制表基于操作者手動(dòng)控制策略,得出如下表所示的40條控制規(guī)則。A/B/TT1T2T3T4T5T6T7T8VN1L9R1L9R2L5S5S5SN2L8R1L9R3L5S5S5SM3L7R2L8R4L5S5S5SF4L6R3L7R5S5S5S5SVF5S5S3L6R5S5S5S5S控制規(guī)則表將上表的40條控制規(guī)則用語言描述為:IF A is Vi and T is Ti then B is 例如控制規(guī)則的第一
4、條語句:If A is VN and T is T1 then B is S由這條語句所確定的模糊關(guān)系可用下式寫出:R=(VNA×SB)·(T1T×SB)如果實(shí)際距離為a,實(shí)際環(huán)境為t,則由上市可以算出控制量為B1=a·(VNA×SB)·t·(T1T×SB)則根據(jù)40條控制規(guī)則得到的控制量輸出為:B=B1+B2+B3+B4+B40對于上式,由于t與T1為量化向量,所以有:當(dāng)t=T1時(shí)上式等效于:B1=a·(VNA×SB)當(dāng)tT1時(shí):B1=0同時(shí)t=T1的式子等效于:B1=VN(a)×S
5、B故求解過程簡化為:已知障礙類型t后,每種類型t對應(yīng)五條控制規(guī)則,則分別求出B1B5:B=B1+B2+B3+B4+B5對應(yīng)取大即可得到控制向量,最后解模糊即可。基于C+所編寫的控制程序工程見附件。運(yùn)行示例如下:(距離-1.3,障礙類型:右邊有障礙物)顯示控制向量的輸出曲線(輸出曲線使用vc+的easyx開源庫)為:由上圖可知,輸出曲線為單峰,較陡,符合控制邏輯。附錄:程序#include <math.h>#include <stdio.h> #include <iostream.h>#include <graphics.h> / 就是需要引用這個(gè)
6、圖形庫#include <conio.h>double JJ21=-5,-4.5,-4,-3.5,-3,-2.5,-2,-1.5,-1,-0.5,0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5; void comparesmall(double a,double *p,int length) for(int i=0;i<length;i+) if(a<pi) pi=a; double equalzero(double x) if(x<0.1) return 0; else return x;void arrayAND(double *p1,doub
7、le *p2,int length) for(int i=0;i<length;i+) if(p1i<p2i) p1i=p2i; double* triangleout(double *outp,double *inp,int length,int mfn) int i=0; switch(mfn) case 1: for(i=0;i<length;i+) if(inpi<=-4 && inpi>=-5) outpi=inpi+5; else if(inpi<=-3 && inpi>=-4) outpi=-inpi-3;
8、 else outpi=0; break; case 2: for(i=0;i<length;i+) if(inpi<=-3 && inpi>=-4) outpi=inpi+4; else if(inpi<=-2 && inpi>=-3) outpi=-inpi-2; else outpi=0; break; case 3: for(i=0;i<length;i+) if(inpi<=-2 && inpi>=-3) outpi=inpi+3; else if(inpi<=-1 &&am
9、p; inpi>=-2) outpi=-inpi-1; else outpi=0; break; case 4: for(i=0;i<length;i+) if(inpi<=-1 && inpi>=-2) outpi=inpi+2; else if(inpi<=0 && inpi>=-1) outpi=-inpi; else outpi=0; break; case 5: for(i=0;i<length;i+) if(inpi<=0 && inpi>=-1) outpi=inpi+1; el
10、se if(inpi<=1 && inpi>=0) outpi=-inpi+1; else outpi=0; break; case 6: for(i=0;i<length;i+) if(inpi<=1 && inpi>=0) outpi=inpi; else if(inpi<=2 && inpi>=1) outpi=-inpi+2; else outpi=0; break; case 7: for(i=0;i<length;i+) if(inpi<=2 && inpi>
11、=1) outpi=inpi-1; else if(inpi<=3 && inpi>=2) outpi=-inpi+3; else outpi=0; break; case 8: for(i=0;i<length;i+) if(inpi<=3 && inpi>=2) outpi=inpi-2; else if(inpi<=4 && inpi>=3) outpi=-inpi+4; else outpi=0; break; case 9: for(i=0;i<length;i+) if(inpi<
12、=4 && inpi>=3) outpi=inpi-3; else if(inpi<=5 && inpi>=4) outpi=-inpi+5; else outpi=0; break; /switch return outp;double* gaussin(double *outp,double in) outp0=equalzero(exp(-(in+2)*(in+2)/(0.5*0.5*2); outp1=equalzero(exp(-(in+1)*(in+1)/(0.45*0.45*2); outp2=equalzero(exp(-in*
13、in/(0.4*0.4*2); outp3=equalzero(exp(-(in-1)*(in-1)/(0.45*0.45*2); outp4=equalzero(exp(-(in-2)*(in-2)/(0.5*0.5*2); return outp;void main() int i; int j; char huatu; int zhangai; double juli; double *c; double *co; double *co1; double sum; double sumout; double sumco; double outt40; char str10; co=new
14、 double21; co1=new double21; c=new double5; cout<<"請輸入障礙類型1,2,3,4,5,6,7,8"<<endl; cout<<"1:右邊有障礙物"<<endl; cout<<"2:左邊有障礙物"<<endl; cout<<"3:右邊前邊有障礙物"<<endl; cout<<"4:左邊前邊有障礙物"<<endl; cout<
15、<"5:前邊有障礙物"<<endl; cout<<"6:左右有障礙物"<<endl; cout<<"7:死胡同"<<endl; cout<<"8:沒有障礙物"<<endl; cout<<"障礙類型為:" cin>>zhangai; cout<<"請輸入距離-22(-2對應(yīng)距離最近)"<<endl; cout<<"距離為
16、:" cin>>juli; for(i=0;i<21;i+) coi=0; c=gaussin(c,juli); /cout<<*c<<endl<<*(c+1)<<endl<<*(c+2)<<endl<<*(c+3)<<endl<<*(c+4); if(zhangai=1) co=triangleout(co,JJ,21,1);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=triangleout(co1,JJ,21,2
17、);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,3); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,4); comparesmall(c3,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c4,co1,21); arrayAND(co,co1,21); if(zh
18、angai=2) co=triangleout(co,JJ,21,9);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=triangleout(co1,JJ,21,8);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,7); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,6); comparesmall(c3,co1,21);
19、 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c4,co1,21); arrayAND(co,co1,21); if(zhangai=3) co=triangleout(co,JJ,21,1);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=triangleout(co1,JJ,21,1);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,2
20、); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,3); comparesmall(c3,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,4); comparesmall(c4,co1,21); arrayAND(co,co1,21); if(zhangai=4) co=triangleout(co,JJ,21,9);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=triangleout(co
21、1,JJ,21,9);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,8); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,7); comparesmall(c3,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,6); comparesmall(c4,co1,21); arrayAND(co,co1,2
22、1); if(zhangai=5) co=triangleout(co,JJ,21,2);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=triangleout(co1,JJ,21,3);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,4); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c3
23、,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c4,co1,21); arrayAND(co,co1,21); if(zhangai=6) co=triangleout(co,JJ,21,5);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=triangleout(co1,JJ,21,5);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co
24、1,JJ,21,5); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c3,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c4,co1,21); arrayAND(co,co1,21); if(zhangai=7) co=triangleout(co,JJ,21,5);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=trian
25、gleout(co1,JJ,21,5);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c3,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c4,co1,21); arrayAND
26、(co,co1,21); if(zhangai=8) co=triangleout(co,JJ,21,5);/取輸出語言值 comparesmall(c0,co,21);/輸入與輸出取小 co1=triangleout(co1,JJ,21,5);/取下一個(gè)輸出語言值 comparesmall(c1,co1,21);/輸入與輸出取小 arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c2,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); compar
27、esmall(c3,co1,21); arrayAND(co,co1,21); co1=triangleout(co1,JJ,21,5); comparesmall(c4,co1,21); arrayAND(co,co1,21); / for(i=0;i<21;i+) / cout<<i<<" "<<co1i<<endl; sum=0; sumco=0; /for(i=0;i<5;i+) / cout<<ci<<endl; for(i=0;i<21;i+) sum+=coi*JJi;
28、sumco+=coi; /cout<<i<<" "<<coi<<endl; sum=sum/sumco; cout<<"輸出轉(zhuǎn)角為:"<<sum*15<<"度"<<endl;/畫圖cout<<"是否顯示輸出曲線(y/n)"<<endl;cin>>huatu;if(huatu='y')initgraph(640, 480); / 這里和 TC 略有區(qū)別line(255,0
29、,255,480);outtextxy(257,410,"0");line(55,380,55,420);outtextxy(57,410,"-4");line(105,390,105,410);outtextxy(107,410,"-3");line(155,390,155,410);outtextxy(157,410,"-2");line(205,390,205,410);outtextxy(207,410,"-1");line(305,390,305,410);outtextxy(307,410,"1");line(355,390,355,410);outtextxy(357,410,"2");line(405,390,405,410
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度商業(yè)秘密合作轉(zhuǎn)讓合同協(xié)議
- 二零二五年度豬肉市場風(fēng)險(xiǎn)預(yù)警與應(yīng)對合同
- 二零二五年度社區(qū)服務(wù)兼職志愿者服務(wù)協(xié)議
- 二零二五年度成人外語培訓(xùn)機(jī)構(gòu)報(bào)名服務(wù)協(xié)議
- 二零二五年度手貨車車輛轉(zhuǎn)讓與汽車金融服務(wù)及市場推廣合同
- 2025年度游學(xué)旅游線路研發(fā)與推廣協(xié)議
- 2025年度珠寶首飾返傭金代理合同
- 2025年度混凝土班組勞務(wù)合作施工進(jìn)度合同
- 二零二五年度精裝修房屋買賣合同違約賠償標(biāo)準(zhǔn)
- 二零二五年度房產(chǎn)交易全程服務(wù)協(xié)議范本
- 尺寸鏈的計(jì)算表格
- 夏玉米套種辣椒技術(shù)
- 學(xué)術(shù)規(guī)范與寫作課件
- 絕緣電阻測試儀安全操作規(guī)程
- DB6101T 197-2022 藤蔓類尾菜堆肥技術(shù)規(guī)程
- 西藏房屋建筑工程竣工材料全套表格
- 量子力學(xué)英文課件格里菲斯Chapter4
- 鍋爐節(jié)能管理制度
- 2023年道路交通安全法實(shí)施條例
- 鹽城市殘疾人康復(fù)機(jī)構(gòu)認(rèn)定暫行辦法
- 護(hù)理不良事件管理、上報(bào)制度及流程
評論
0/150
提交評論