有位朋友咨詢了一個問題,想要通過粒子群優化模糊控制的論域範圍,在這種情況下,就無法直接通過matlab的fuzzy工具箱來自動生成fis模糊檔案,需要通過M檔案生成模糊控制器,并寫成函數友善調用,
前期模糊控制和粒子群傳送門:
matlab模糊控制工具箱使用和模糊控制pid執行個體參考(一)
matlab模糊控制工具箱使用和模糊控制pid執行個體參考(二)
粒子群優化算法(PSO)
粒子群優化算法-Python版本和Matlab函數調用
給出一個樣例如下:
%%
clc
close all
clear
FIS = newfis('FIS','sugeno');
%%
% 定義輸入E:
FIS = addvar(FIS,'input','E',[-10 10]);
FIS = addmf(FIS,'input',1,'Negative','gaussmf',[7 -10]);
FIS = addmf(FIS,'input',1,'Positive','gaussmf',[7 10]);
%%
% 定義輸入CE:
FIS = addvar(FIS,'input','CE',[-10 10]);
FIS = addmf(FIS,'input',2,'Negative','gaussmf',[7 -10]);
FIS = addmf(FIS,'input',2,'Positive','gaussmf',[7 10]);
%%
% 定義輸出u:
FIS = addvar(FIS,'output','u',[-20 20]);
FIS = addmf(FIS,'output',1,'Min','constant',-20);
FIS = addmf(FIS,'output',1,'Zero','constant',0);
FIS = addmf(FIS,'output',1,'Max','constant',20);
%%
% 定義規則:
% 格式:輸入1~ 輸入2~ 輸出~ 權重(預設為:1)邏輯關系(1=and;2=or)
ruleList = [1 1 1 1 1;... % Rule 1
1 2 2 1 1;... % Rule 2
2 1 2 1 1;... % Rule 3
2 2 3 1 1];
FIS = addrule(FIS,ruleList);
複制
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcugjYyUzY1UWZiR2YkdDMmNjZyMjNjhDZyUmZzAzYlFTMvwFN2gTNykTOtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)