利用模糊數(shù)學(xué)的基本思想和理論的控制方法。在傳統(tǒng)的控制領(lǐng)域里,控制系統(tǒng)動(dòng)態(tài)模式的精確與否是影響控制優(yōu)劣的最主要關(guān)鍵,系統(tǒng)動(dòng)態(tài)的信息越詳細(xì),則越能達(dá)到精確控制的目的。然而,對(duì)于復(fù)雜的系統(tǒng),由于變量太多,往往難以正確的描述系統(tǒng)的動(dòng)態(tài),于是工程師便利用各種方法來(lái)簡(jiǎn)化系統(tǒng)動(dòng)態(tài),以達(dá)成控制的目的,但卻不盡理想。換言之,傳統(tǒng)的控制理論對(duì)于明確系統(tǒng)有強(qiáng)而有力的控制能力,但對(duì)于過(guò)于復(fù)雜或難以精確描述的系統(tǒng),則顯得無(wú)能為力了。因此便嘗試著以模糊數(shù)學(xué)來(lái)處理這些控制問(wèn)題。
創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為溫江企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),溫江網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
“模糊”是人類感知萬(wàn)物,獲取知識(shí),思維推理,決策實(shí)施的重要特征?!澳:北取扒逦彼鶕碛械男畔⑷萘扛?,內(nèi)涵更豐富,更符合客觀世界。
function [center, U, obj_fcn] = FCMClust(data, cluster_n, options)
% FCMClust.m 采用模糊C均值對(duì)數(shù)據(jù)集data聚為cluster_n類
%
% 用法:
% 1. [center,U,obj_fcn] = FCMClust(Data,N_cluster,options);
% 2. [center,U,obj_fcn] = FCMClust(Data,N_cluster);
%
% 輸入:
% data ---- nxm矩陣,表示n個(gè)樣本,每個(gè)樣本具有m的維特征值
% N_cluster ---- 標(biāo)量,表示聚合中心數(shù)目,即類別數(shù)
% options ---- 4x1矩陣,其中
% options(1): 隸屬度矩陣U的指數(shù),1 (缺省值: 2.0)
% options(2): 最大迭代次數(shù) (缺省值: 100)
% options(3): 隸屬度最小變化量,迭代終止條件 (缺省值: 1e-5)
% options(4): 每次迭代是否輸出信息標(biāo)志 (缺省值: 1)
% 輸出:
% center ---- 聚類中心
% U ---- 隸屬度矩陣
% obj_fcn ---- 目標(biāo)函數(shù)值
% Example:
% data = rand(100,2);
% [center,U,obj_fcn] = FCMClust(data,2);
% plot(data(:,1), data(:,2),'o');
% hold on;
% maxU = max(U);
% index1 = find(U(1,:) == maxU);
% index2 = find(U(2,:) == maxU);
% line(data(index1,1),data(index1,2),'marker','*','color','g');
% line(data(index2,1),data(index2,2),'marker','*','color','r');
% plot([center([1 2],1)],[center([1 2],2)],'*','color','k')
% hold off;
if nargin ~= 2 nargin ~= 3, %判斷輸入?yún)?shù)個(gè)數(shù)只能是2個(gè)或3個(gè)
error('Too many or too few input arguments!');
end
data_n = size(data, 1); % 求出data的第一維(rows)數(shù),即樣本個(gè)數(shù)
in_n = size(data, 2); % 求出data的第二維(columns)數(shù),即特征值長(zhǎng)度
% 默認(rèn)操作參數(shù)
default_options = [2; % 隸屬度矩陣U的指數(shù)
100; % 最大迭代次數(shù)
1e-5; % 隸屬度最小變化量,迭代終止條件
1]; % 每次迭代是否輸出信息標(biāo)志
if nargin == 2,
options = default_options;
else %分析有options做參數(shù)時(shí)候的情況
% 如果輸入?yún)?shù)個(gè)數(shù)是二那么就調(diào)用默認(rèn)的option;
if length(options) 4, %如果用戶給的opition數(shù)少于4個(gè)那么其他用默認(rèn)值;
tmp = default_options;
tmp(1:length(options)) = options;
options = tmp;
end
% 返回options中是數(shù)的值為0(如NaN),不是數(shù)時(shí)為1
nan_index = find(isnan(options)==1);
%將denfault_options中對(duì)應(yīng)位置的參數(shù)賦值給options中不是數(shù)的位置.
options(nan_index) = default_options(nan_index);
if options(1) = 1, %如果模糊矩陣的指數(shù)小于等于1
error('The exponent should be greater than 1!');
end
end
%將options 中的分量分別賦值給四個(gè)變量;
expo = options(1); % 隸屬度矩陣U的指數(shù)
max_iter = options(2); % 最大迭代次數(shù)
min_impro = options(3); % 隸屬度最小變化量,迭代終止條件
display = options(4); % 每次迭代是否輸出信息標(biāo)志
obj_fcn = zeros(max_iter, 1); % 初始化輸出參數(shù)obj_fcn
U = initfcm(cluster_n, data_n); % 初始化模糊分配矩陣,使U滿足列上相加為1,
% Main loop 主要循環(huán)
for i = 1:max_iter,
%在第k步循環(huán)中改變聚類中心ceneter,和分配函數(shù)U的隸屬度值;
[U, center, obj_fcn(i)] = stepfcm(data, U, cluster_n, expo);
if display,
fprintf('FCM:Iteration count = %d, obj. fcn = %f\n', i, obj_fcn(i));
end
% 終止條件判別
if i 1,
if abs(obj_fcn(i) - obj_fcn(i-1)) min_impro,
break;
end,
end
end
iter_n = i; % 實(shí)際迭代次數(shù)
obj_fcn(iter_n+1:max_iter) = [];
% 子函數(shù)
function U = initfcm(cluster_n, data_n)
% 初始化fcm的隸屬度函數(shù)矩陣
% 輸入:
% cluster_n ---- 聚類中心個(gè)數(shù)
% data_n ---- 樣本點(diǎn)數(shù)
% 輸出:
% U ---- 初始化的隸屬度矩陣
U = rand(cluster_n, data_n);
col_sum = sum(U);
U = U./col_sum(ones(cluster_n, 1), :);
% 子函數(shù)
function [U_new, center, obj_fcn] = stepfcm(data, U, cluster_n, expo)
% 模糊C均值聚類時(shí)迭代的一步
% 輸入:
% data ---- nxm矩陣,表示n個(gè)樣本,每個(gè)樣本具有m的維特征值
% U ---- 隸屬度矩陣
% cluster_n ---- 標(biāo)量,表示聚合中心數(shù)目,即類別數(shù)
% expo ---- 隸屬度矩陣U的指數(shù)
% 輸出:
% U_new ---- 迭代計(jì)算出的新的隸屬度矩陣
% center ---- 迭代計(jì)算出的新的聚類中心
% obj_fcn ---- 目標(biāo)函數(shù)值
mf = U.^expo; % 隸屬度矩陣進(jìn)行指數(shù)運(yùn)算結(jié)果
center = mf*data./((ones(size(data, 2), 1)*sum(mf'))'); % 新聚類中心(5.4)式
dist = distfcm(center, data); % 計(jì)算距離矩陣
obj_fcn = sum(sum((dist.^2).*mf)); % 計(jì)算目標(biāo)函數(shù)值 (5.1)式
tmp = dist.^(-2/(expo-1));
U_new = tmp./(ones(cluster_n, 1)*sum(tmp)); % 計(jì)算新的隸屬度矩陣 (5.3)式
% 子函數(shù)
function out = distfcm(center, data)
% 計(jì)算樣本點(diǎn)距離聚類中心的距離
% 輸入:
% center ---- 聚類中心
% data ---- 樣本點(diǎn)
% 輸出:
% out ---- 距離
out = zeros(size(center, 1), size(data, 1));
for k = 1:size(center, 1), % 對(duì)每一個(gè)聚類中心
% 每一次循環(huán)求得所有樣本點(diǎn)到一個(gè)聚類中心的距離
out(k, :) = sqrt(sum(((data-ones(size(data,1),1)*center(k,:)).^2)',1));
end
【嵌牛導(dǎo)讀】FCM算法是一種基于劃分的聚類算法,它的思想就是使得被劃分到同一簇的對(duì)象之間相似度最大,而不同簇之間的相似度最小。模糊C均值算法是普通C均值算法的改進(jìn),普通C均值算法對(duì)于數(shù)據(jù)的劃分是硬性的,而FCM則是一種柔性的模糊劃分。
【嵌牛提問(wèn)】FCM有什么用?
【嵌牛鼻子】模糊C均值聚類算法
【嵌牛正文】
聚類分析是多元統(tǒng)計(jì)分析的一種,也是無(wú)監(jiān)督模式識(shí)別的一個(gè)重要分支,在模式分類、圖像處理和模糊規(guī)則處理等眾多領(lǐng)域中獲得最廣泛的應(yīng)用。它把一個(gè)沒(méi)有類別標(biāo)記的樣本按照某種準(zhǔn)則劃分為若干子集,使相似的樣本盡可能歸于一類,而把不相似的樣本劃分到不同的類中。硬聚類把每個(gè)待識(shí)別的對(duì)象嚴(yán)格的劃分某類中,具有非此即彼的性質(zhì),而模糊聚類建立了樣本對(duì)類別的不確定描述,更能客觀的反應(yīng)客觀世界,從而成為聚類分析的主流。
模糊聚類算法是一種基于函數(shù)最優(yōu)方法的聚類算法,使用微積分計(jì)算技術(shù)求最優(yōu)代價(jià)函數(shù),在基于概率算法的聚類方法中將使用概率密度函數(shù),為此要假定合適的模型,模糊聚類算法的向量可以同時(shí)屬于多個(gè)聚類,從而擺脫上述問(wèn)題。 模糊聚類分析算法大致可分為三類:
1)分類數(shù)不定,根據(jù)不同要求對(duì)事物進(jìn)行動(dòng)態(tài)聚類,此類方法是基于模糊等價(jià)矩陣聚類的,稱為模糊等價(jià)矩陣動(dòng)態(tài)聚類分析法。
2)分類數(shù)給定,尋找出對(duì)事物的最佳分析方案,此類方法是基于目標(biāo)函數(shù)聚類的,稱為模糊C 均值聚類。
3)在攝動(dòng)有意義的情況下,根據(jù)模糊相似矩陣聚類,此類方法稱為基于攝動(dòng)的模糊聚類分析法。
我所學(xué)習(xí)的是模糊C 均值聚類算法,要學(xué)習(xí)模糊C 均值聚類算法要先了解慮屬度的含義,隸屬度函數(shù)是表示一個(gè)對(duì)象x 隸屬于集合A 的程度的函數(shù),通常記做μA (x),其自變量范圍是所有可能屬于集合A 的對(duì)象(即集合A 所在空間中的所有點(diǎn)),取值范圍是[0,1],即0=μA (x)=1。μA (x)=1表示x 完全隸屬于集合A ,相當(dāng)于傳統(tǒng)集合概念上的x ∈A 。一個(gè)定義在空間X={x}上的隸屬度函數(shù)就定義了一個(gè)模糊集合A ,或者叫定義在論域X={x}上的模糊子集A 。對(duì)于有限個(gè)對(duì)象x 1,x 2,……,x n 模糊集合A 可以表示為:A ={(μA (x i ), x i ) |x i ∈X } (6.1)
有了模糊集合的概念,一個(gè)元素隸屬于模糊集合就不是硬性的了,在聚類的問(wèn)題中,可以把聚類生成的簇看成模糊集合,因此,每個(gè)樣本點(diǎn)隸屬于簇的隸屬度就是[0,1]區(qū)間里面的值。
FCM 算法需要兩個(gè)參數(shù)一個(gè)是聚類數(shù)目C ,另一個(gè)是參數(shù)m 。一般來(lái)講C 要遠(yuǎn)遠(yuǎn)小于聚類樣本的總個(gè)數(shù),同時(shí)要保證C1。對(duì)于m ,它是一個(gè)控制算法的柔性的參數(shù),如果m 過(guò)大,則聚類效果會(huì)很次,而如果m 過(guò)小則算法會(huì)接近HCM 聚類算法。算法的輸出是C 個(gè)聚類中心點(diǎn)向量和C*N的一個(gè)模糊劃分矩陣,這個(gè)矩陣表示的是每個(gè)樣本點(diǎn)屬于每個(gè)類的隸屬度。根據(jù)這個(gè)劃分矩陣按照模糊集合中的最大隸屬原則就能夠確定每個(gè)樣本點(diǎn)歸為哪個(gè)類。聚類中心表示的是每個(gè)類的平均特征,可以認(rèn)為是這個(gè)類的代表點(diǎn)。從算法的推導(dǎo)過(guò)程中我們不難看出,算法對(duì)于滿足正態(tài)分布的數(shù)據(jù)聚類效果會(huì)很好。
通過(guò)實(shí)驗(yàn)和算法的研究學(xué)習(xí),不難發(fā)現(xiàn)FCM算法的優(yōu)缺點(diǎn):
首先,模糊c 均值泛函Jm 仍是傳統(tǒng)的硬c 均值泛函J1 的自然推廣。J1 是一個(gè)應(yīng)用很廣泛的聚類準(zhǔn)則,對(duì)其在理論上的研究已經(jīng)相當(dāng)?shù)耐晟?,這就為Jm 的研究提供了良好的條件。
其次,從數(shù)學(xué)上看,Jm與Rs的希爾伯特空間結(jié)構(gòu)(正交投影和均方逼近理論) 有密切的關(guān)聯(lián),因此Jm 比其他泛函有更深厚的數(shù)學(xué)基礎(chǔ)。
最后,F(xiàn)CM 聚類算法不僅在許多鄰域獲得了非常成功的應(yīng)用,而且以該算法為基礎(chǔ),又提出基于其他原型的模糊聚類算法,形成了一大批FCM類型的算法,比如模糊c線( FCL) ,模糊c面(FCP) ,模糊c殼(FCS) 等聚類算法,分別實(shí)現(xiàn)了對(duì)呈線狀、超平面狀和“薄殼”狀結(jié)構(gòu)模式子集(或聚類) 的檢測(cè)。
模糊c均值算法因設(shè)計(jì)簡(jiǎn)單,解決問(wèn)題范圍廣,易于應(yīng)用計(jì)算機(jī)實(shí)現(xiàn)等特點(diǎn)受到了越來(lái)越多人的關(guān)注,并應(yīng)用于各個(gè)領(lǐng)域。但是,自身仍存在的諸多問(wèn)題,例如強(qiáng)烈依賴初始化數(shù)據(jù)的好壞和容易陷入局部鞍點(diǎn)等,仍然需要進(jìn)一步的研究。
evalfis函數(shù),模糊控制
%被控系統(tǒng)建模
num=20;
den=[1.6,4.4,1];
[a1,b,c,d]=tf2ss(num,den);
x=[0;0];
%
T=0.01;
h=T;
N=250;
R=1.5*ones(1,N);%參考輸入
%定義輸入和輸出變量及隸屬度函數(shù)
a=newfis('simple');
a=addvar(a,'input','e',[-6 6]);
a=addmf(a,'input',1,'NB','trapmf',[-6,-6,-5,-3]);
a=addmf(a,'input',1,'NS','trapmf',[-5,-3,-2,0]);
a=addmf(a,'input',1,'ZR','trimf',[-2,0,2]);
a=addmf(a,'input',1,'PS','trapmf',[0,2,3,5]);
a=addmf(a,'input',1,'PB','trapmf',[3,5,6,6]);
%
a=addvar(a,'input','de',[-6 6]);
a=addmf(a,'input',2,'NB','trapmf',[-6,-6,-5,-3]);
a=addmf(a,'input',2,'NS','trapmf',[-5,-3,-2,0]);
a=addmf(a,'input',2,'ZR','trimf',[-2,0,2]);
a=addmf(a,'input',2,'PS','trapmf',[0,2,3,5]);
a=addmf(a,'input',2,'PB','trapmf',[3,5,6,6]);
%