1、什麼是模糊、模糊性和隨機性的區別?
【答:】
- 模糊:從屬於該概念到不屬於該概念之間無明顯分界線。
- 隨機性:是指實驗之前不能確定實驗的結果
- 模糊性:是指實驗之後依然不能確定實驗的結果。
2、傳統反饋控制系統的模型
【答:】
傳統反饋控制系統由三部分組成:
- 被控對象;
- 產生作用於被控對象輸入的控制器;
- 測量被控對象輸出的敏感元件;
系統框圖如下:
3、設計水位的模糊控制器。
設有一貯水容器,具有可變的水位,另有一調節閥門可以向內注水和向外抽水,試設計一個模糊控制器,並通過調節閥將水位穩定在固定點(設爲o點)附近。
“若水位高於o點,則排水;差值越大,排水越快。”
“若水位低於o點,則向內注水;差值越大,注水越快。”
題目要求:①具體要求:要求寫出具體步驟和過程並編程實現。
②用模糊工具箱設計此水箱的模糊控制器,每一步的結果都要求編號並截圖顯示、說明,截圖除每一步的結果圖外,還有模糊控制器模型設計圖、模糊控制變量設計圖,surface圖。
【答:】
1、
- 觀測量與控制量
觀測量是水位對於o點的偏差e,它可以分爲五級:負大(NB)、負小(NS)、零(O)、正小(PS)、正大(PB)。並將誤差分爲7檔,即7個等級並以-3,-2,-1,0,+1,+2,+3來表示之,它們是將水位變化範圍適當劃分而得。此處論域:U = { -3,-2,-1,0,+1,+2,+3 },由此得到水位誤差劃分表(隸屬度表示 ):
|
-3 |
-2 |
-1 |
0 |
+1 |
+2 |
+3 |
PBe |
0 |
0 |
0 |
0 |
0 |
0.5 |
1 |
PSe |
0 |
0 |
0 |
0 |
1 |
0.5 |
0 |
Oe |
0 |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
NSe |
0 |
0.5 |
1 |
0 |
0 |
0 |
0 |
NBe |
1 |
0.5 |
0 |
0 |
0 |
0 |
0 |
控制量是閥門轉盤的角度變化u,逆時針旋轉爲正(注水),順時針旋轉爲負(排水)。 設閥門角度變化分爲9檔。此處論域爲:V = { -4,-3,-2,-1,0,+1,+2,+3,+4 },正爲注水,負爲排水,閥門角度變化劃分表(隸屬度表示):
|
-4 |
-3 |
-2 |
-1 |
0 |
+1 |
+2 |
+3 |
+4 |
PBu |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0.5 |
1 |
PSu |
0 |
0 |
0 |
0 |
0 |
0.5 |
1 |
0.5 |
0 |
Ou |
0 |
0 |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
0 |
NSu |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
0 |
0 |
0 |
NBu |
1 |
0.5 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- 語言控制規則
按照人的控制經驗,給出下列控制規則:
“若e負大,則u正大”;if e=NB then u=PB
“若e負小,則u正小” if e=NS then u=PS
“若e爲0,則u爲0” if e=0 then u=0
“若e正小,則u負小” if e=PS then u=NS
“若e正大,則u負大” ife=PB then u=NB
If |
NBe |
NSe |
Oe |
PSe |
PBe |
Then |
PBu |
PSu |
Ou |
NSu |
NBu |
語言控制規則是一個多級條件語句,它可以表示爲U×V的一個模糊子集,即模糊關係Ψ: Ψ = ( NBe×PBu )∪( NSe×PSu )∪( Oe×Ou )∪( PSe×NSu )∪( PBe×NBu )
- 響應動作(輸出)
任意給出一個觀測結果 X 作爲輸入,則把 Ψ 作爲模糊控制器,則得輸出(並稱之模糊響應):
Y =X ο Ψ
matlab實現:
%水位模糊控制算法
clear all;
close all;
a = newfis('fuzzy tank');
a = addvar(a,'input','e',[-3,3]);
a = addmf(a,'input',1,'NB','zmf',[-3,-1]);
a =addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
a =addmf(a,'input',1,'ZO','trimf',[-2,0,2]);
a =addmf(a,'input',1,'PS','trimf',[-1,1,3]);
a = addmf(a,'input',1,'PB','smf',[1,3]);
a = addvar(a,'output','u',[-4,4]);
a = addmf(a,'output',1,'NB','zmf',[-4,-2]);
a =addmf(a,'output',1,'NS','trimf',[-4,-2,0]);
a =addmf(a,'output',1,'ZO','trimf',[-2,0,2]);
a =addmf(a,'output',1,'PS','trimf',[0,2,4]);
a = addmf(a,'output',1,'PB','smf',[2,4]);
%建立模糊規則
rulelist=[1 5 1 1;
2 4 1 1;
3 3 1 1;
4 2 1 1;
5 1 1 1];
a = addrule(a,rulelist);
%設置反模糊化算法
a1 = setfis(a,'DefuzzMethod','mom');
writefis(a1,'tank');
a2 = readfis('tank');
figure(1);
plotfis(a2);
figure(2);
plotmf(a,'input',1);
figure(3);
plotmf(a,'output',1);
showrule(a);
ruleview('tank');
for i=1:1:7
e(i)=i-4;
Ulist(i)=evalfis([e(i)],a2);
end
Ulist = round(Ulist); %對決策結果四捨五入取整
disp('------------------------------------------------------');
disp('----------模糊控制表:e =[-3,3], u = [-4,4]-----------');
disp('------------------------------------------------------');
fprintf('| a |');
fprintf(' %d |',e);
fprintf('\n');
fprintf('| u |');
fprintf(' %d |',Ulist);
fprintf('\n');
2、
①打開模糊推理系統Fuzzy,設置輸入輸出以及系統名
②設置輸入輸出論域,編輯隸屬度函數
③啓動模糊規則編輯器,添加規則
④啓動規則觀察器
⑤模糊推理輸入輸出曲面視圖,surface圖