166 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
Phụ lục 1: Các chương trình về chia bó dữ liệu và tổng hợp mạng neuro-fuzzy
% *************************************
anfisProg1.m
% *************************************
% The Algorithm HLM1 [9], N01
% anfisProg1.m, duoc viet tren nen Matlab dua vao thuat toan HLM1 cua [9]. Chuong trinh co
% chuc nang xac lap he thong suy dien neuro-fuzzy thich nghi thong qua tap du lieu so.
% Chuong trinh gom:
% - Chuong trinh chinh anfisProg1.m
% - Cac chuong tring con:
% N1_clasifyInput_start_tam.m
% test_U.m
% HyperPlane.m
% N1_clasifyInput_repeat_tam.m
% hyperPlane_repeat.m
% cut_hydridHB_tam.m
% test_pHB.m
% fusion_tam2.m
% test_pHBfusion.m
% netoldProg2.m
%========================================================================
% 10.06.2009 18221543
% NGUYEN SY DUNG
% TRUONG DAI HOC CONG NGHIEP THANH PHO HO CHI MINH
% ĐT 0978690778
% Email
[email protected]
%========================================================================
% MA TRAN PHAN BO U{r,1}(i,j) dung de xac lap quy luat phan bo cac mau du lieu trong cac bo.
% Nhan cua cac mau xac dinh dua vao U{r,1}. Vd, neu U{r,1}(i,j)=1, suy ra mau thu j thuoc bo thu
% i, do do nhan cua phan tu thu j ( HANG j trong matran mau x1; hoac COT j trong U{r,1}= [M x
% P]) la i. (r: vong lap thu r)
%
% ma tran cac mau x1 = 1 2 3; y= 4
% 3 4 5 1
% 5 6 7 2
% 7 8 9 3
% 1 2 3 5
% 5 6 7 ; 2
%
167 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
% P=6;
% n=3
% [x1]=Pxn
%
% U{r,1}= [M x P] 1 1 0 0 1 0
% 0 0 1 1 0 1;
% M=2;P= 6
%
% O day, cac mau j=1;2;5 thuoc bo 1
% j=3;4;6 thuoc bo 2
%
%======================================================
clear all
disp('NHAP DU LIEU HUAN LUYEN:')
disp('==================================================')
disp('DATA=0, f3_100_2_C1, y(i,1)=1*((5-x1(i,2))^2)/(3*(5-x1(i,1))^2+(5-x1(i,2))^2)')
disp('DATA=3, f2_100_2_C10;')
disp('DATA=4, tapmau_15_3;')
disp('DATA=5, tapmau_100_10;')
disp('DATA=6, f4_50_2, y=(1+x1^-2+x2^-1.5)^2;')
disp('DATA=7, tapmau_100_10test')
disp('DATA=8, hs100 (100x20) ')
%I. NHAP DA TA:
D=[];
DATA=input(‘DATA=')
if DATA==6
f4_50_2
P=50;
n=2;
chophep=0.01;
M=input(' M=')
end
if DATA==0
f3_100_2_C1
P=100;
n=2;
chophep=0.01;
M=input('M=')
end
if DATA==1
f3_100_2
P=100;
n=2;
chophep=0.01;
M=input(' M=')
end
if DATA==2
n=input('So bien ung voi 1 mau, n=')
168 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
for i=1:P
for j=1:n
disp('MAU THU:')
i
x1(i,j)=input('Bien j cua mau i, x1(i,j)=')
end
y(i,1)=input('Bien y cua mau i, y(i,1)=')
end
M=input('NHAP SO LUAT MO, M=')
if MP-1
disp('NHAP KHONG THOA DANG (1<M<P & M THUOC TAP N). nhap lai!')
M=input('NHAP SO LUAT MO, M=')
end
end
if DATA==3
f2_100_2_C10
P=100;
n=2;
chophep=0.01;
M=input(' M=')
end
if DATA==4
P=15
n=3
tapmau_15_3
chophep=0.01;
M=input(' M=')
end
if DATA==5
P=100
n=10
tapmau_100_10
chophep=0.01;
M=input(' M=')
end
if DATA==7
P=100
n=10
tapmau_100_10test
chophep=0.01;
M=input(' M=')
end
if DATA==8
degree_damage=input('degree_damage =')
disp('….')
P=100
n=20
load('C:\PROGRA~1\MATLAB7.0\work\BO-SUN~2.200\730X6X~1\730X6-
~1.10\dlhs1hl.mat')
169 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
x1=hs100
y=ones(100,1)*degree_damage
chophep=0.01;
M=input(' M=')
end
if DATA==9
n=2
P=2841
Train_Beam29_In_output
chophep=0.01;
M=input('M=')
end
if DATA==10
n=2
P=4000
Train_Beam29_In_output
chophep=0.01;
M=input(' M=')
end
chophep=0.001;
%-------------------------------------------------
%xu ly so lieu: loai cac mau trung nhau
k=0;
testt=[];
dataa=zeros(P,1)
while k<P-1
k=k+1;
testt=x1(k,:)
for i=(k+1):P
if x1(i,:)==testt
dataa(i,1)=1
end
end
end
[ii,jj]=find(dataa==1)
P=P-length(ii);
tstart=clock;
% MO HOA TAP DATA
%=================
% Chia bo o input
U=cell(5*P,1);
r=1
N1_clasifyInput_start_tam
test_U
% Xay dung cac sieu phang o output
D=[];
170 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
teta=0.1;
hyperPlane
stopin_output=P;
kt=1;
while ((stopin_output>=0.2)|(kt>teta))&(r<=5)
r=r+1;
N1_clasifyInput_repeat_tam
hyperPlane_repeat
test_U
stopin_output=0;
for i=1:M
for j=1:P
stopin_output=stopin_output+abs(U{r,1}(i,j)-U{r-1,1}(i,j))/P;
end
end
if r>1
kt=abs(D(r,1)-D(r-1,1))/D(r-1,1)
end
end
%xay dung bo thuan chung, xac lap cac bo thuan chung lien ket pHB_fusion
test_U
cut_hydridHB_tam
test_pHB
fusion_tam2
test_pHBfusion
% test_pHBfusion% ket qua nhan duoc pHBoder_fusion sieu hop thuan chung pHB_fusion nhung
% thu tu cua pHB_fusion khong theo dung thu tu cua nhan.
%sap xep cac sieu hop thuan chung pHBoder_fusion theo so th. tu cua nhan:
tamluuf=cell(pHBoder_fusion,1);
dennf=M;
nhanbo=zeros(pHBoder_fusion,1)
for t0=1:pHBoder_fusion
%xac dinh nhan:
%--------------------------------------------
for k=1:M
k1=min(find(pHB_fusion{t0,1}(k,:)))
if k1>0
nhan=k;
nhanbo(t0,1)=k;
end
end
%--------------------------------------------
%sap xep
171 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
if length(tamluuf{nhan,1})==0
tamluuf{nhan,1}=pHB_fusion{t0,1};
elseif length(tamluuf{nhan,1})>0
dennf=dennf+1;
tamluuf{dennf,1}=pHB_fusion{t0,1};
end
end
pHB_fusion=tamluuf
% XAC LAP QUY TAC HOP THANH VA GIAI MO
%====================================
netoldProg2
tstop=clock;t= etime(tstop,tstart);
kmax=P
k=1:kmax
for i=1:P
h(1,i)=0
end
plot(k,hieu,'b',k,h,'--r')
xlabel('Data Set -----> ')
Ylabel('Error ----->')
grid off%on
hold on
% *************************************:
N1_clasifyInput_start_tam.m
% *************************************
% The Algorithm CBMM [9]
%========================================================================
% N1_classify_start_tam.m la chung trinh con, dùng de xay dung cac bo o khong gian vao, gian
% nhan cho tat ca các mau huan luyen o chu ky DAU TIEN:
% - Chon ngau nhien M tam;
% - Tinh khoang cach tu moi mau toi cac tam;
% - Bien che cac bo tuong ung cac tam, dua tren khoang cach MIN toi M tam va thuat toan
% C-mean;
% - Kiem tra dieu kien (*):
% tong cac bien che cua M bo = P?
% Moi cot cua matran phan bo U{r,1}(i,j)=1?
% So phan tu tren 1 bo phai thoa: 1<=mothang<=P-M+1?
% - Cap nhat lai matran phan bo U{r,1}(i,j)=1
%========================================================================
% 10.06.0918221543 NSD. N02 %
%========================================================================
172 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
tstart=clock;
kiemtra=0;
while kiemtra==0
t=[];
tambo_i=cell(M,1);
%1/ Bien che bo
d=[];
U{r,1} = random('Normal',0,300,M,P)
for i=1:M
t(i,1)= max(U{r,1}(i,:));
for j=1:P
if U{r,1}(i,j)-t(i,1)==0
U{r,1}(i,j)=1;
tambo_i{i,1}=x1(j,:)
else
U{r,1}(i,j)=0;
end
end
end
% cap nhat bien che cac bo o input
for k=1:M
for i=1:P
tam1=0;
for j=1:n
tam1=tam1+(x1(i,j)-tambo_i{k,1}(1,j))^2;
end
d(k,i)=(tam1)^0.5
end
end
% cap nhat matran U va bien che cac bo o input: Utam=U{r,1};
for i=1:P
dmin=min(d(:,i))
for k=1:M
if d(k,i)==dmin
Utam(k,i)=1
else
Utam(k,i)=0;
end
end
end
% Kiem tra
U{r,1}=Utam;
test_U'
173 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
end %of while
% cap nhat matran phan bo input U:
U{r,1}=Utam
% *************************************
% test_U.m
% *************************************:
% Kiem tra ma tran phan bo U{r,1} thoa dieu kien (*):
% 1/ Tong cac 'mot'=P
% 2/ Chi co duy nhat 1 phan tu 'mot' tren mot cot
% 3/ Tong so phan tu 'mot' tren mot hang T thoa man: 0<T<=P-M+1
%==================================================================
%==================================================================
% 10.06.0918221543 NSD. N03 %
%==================================================================
Utam=U{r,1};
mothang=zeros(M,1);
mottong=0;
for i=1:P
motcot(1,i)=0;
for k=1:M
if Utam(k,i)==1
motcot(1,i)=motcot(1,i)+1;
mothang(k,1)=mothang(k,1)+1;
mottong=mottong+1;
end
end
end
%Test va dieu chinh hang
for k=1:M
if mothang(k,1)==0
hmax=max(mothang);
[kk,hh]=find(mothang==hmax)
[kkk,jj]=find(Utam(kk,:)==1)
jj=min(jj)
Utam(kk,jj)=0;
Utam(k,jj)=1;
end
end
%test va dieu chinh cot
for i=1:P
174 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
for k=1:M
if (motcot(1,i)>1)&(mothang(k,1)>1)&(Utam(k,i)==1)
Utam(k,i)=0;
motcot(1,i)=motcot(1,i)-1;
mothang(k,1)=mothang(k,1)-1;
mottong=mottong-1;
end
end
end
%Kiem tra dieu kien (*)?
kiemtra=0;
cot=1;
hang=1;
tong=0;
for i=1:P
cot=cot*motcot(1,i)
for k=1:M
hang_k=0;
if (mothang(k,1)0)
hang_k=1;
end
hang=hang*hang_k;
end
end
if mottong==P
tong=1
end
kiemtra=cot*hang*tong
%=====================================================================
U{r,1}=Utam
%**********************************************************
% HyperPlane.m
%**********************************************************
% Function Hyperplane.m dung de xac dinh:
% - cac sieu phang o khong gian ra khi da biet bien che cac mau cua moi sieu phang;
% - thuc hien viec dan nhan lai cac mau huan luyen o khong gian vao dua vao bien che moi
% cua cac sieu phang o khong gian ra.
%=====================================================================
% 10.06.0918221543 NSD. N04 %
%=====================================================================
175 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
V=cell(M,1);%matran he so cua he phuong trinh (8) o noi dung bai bao
a=cell(M,1)%vector he so ah, h=0...n, cua M cac sieu phang o output
%1/ Tinh matran he so V cua he phuong trinh tinh ah, h=1,...,n+1
for k=1:M%cho tung sieu phang
for h=1:n+1 % hang cua V
for j=1:n+2 % cot cua V
V{k,1}(h,j)=0;
end
end
end
for k=1:M%cho tung sieu phang
for i=1:P
if U{r,1}(k,i)==1
for h=1:n+1 % hang cua V
for j=1:n+2 % cot cua V
if h==1&j==1%tinh cho hang dau tien, cot 1
V{k,1}(h,j)=V{k,1}(h,j)-y(i,1);
end
if h==1&j==2%tinh cho hang dau tien, cot 2
V{k,1}(h,j)=V{k,1}(h,j)+1;
end
if h==1&j>2 %tinh cho hang dau tien, cac cot con lai
V{k,1}(h,j)=V{k,1}(h,j)+x1(i,j-2)
end
if h>=2&j==1 %h=2...(n+1): tinh cho cac hang con lai cua matran V
V{k,1}(h,j)=V{k,1}(h,j)-y(i,1)*x1(i,h-1);
end
if h>=2&j==2
V{k,1}(h,j)=V{k,1}(h,j)+x1(i,h-1);
end
if h>=2&j>2%j=3...(n+2)
V{k,1}(h,j)=V{k,1}(h,j)+x1(i,j-2)*x1(i,h-1);
end
end
end
end
end
end
% Tinh vector he so ah, h=0...n, cua cac sieu phang
A=cell(M,1)
B=cell(M,1)
C=cell(M,1)
kt=[];
for k=1:M
A{k,1}=V{k,1};
A{k,1}(:,1)=[];
C{k,1}=-V{k,1}(:,1);
kt(k,1)=det(A{k,1})
muy=0.001
anp=1
while kt(k,1)==0
176 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
muy=anp*muy
A{k,1}=A{k,1}+muy*eye(n+1)
kt(k,1)=det(A{k,1})
anp=anp+1;
end
a{k,1}=A{k,1}\C{k,1}%cac he so ai, i=1...n+1, cua sieu phang thu k, k=1...M
end %a1=a{k,1}(1,1)
%a2=a{k,1}(2,1)
%.
%.
%.
%a(n+1)=a{k,1}(n+1,1)
% tinh Kh. C. toi sp
d_sieuphang=cell(P,1);
tam3=[];
for i=1:P
x0(i,1)=1
end
x=[x0 x1]
for k=1:M
tam3(k,1)=1+(a{k,1}')*a{k,1}
for i=1:P
tam02=x(i,:)*a{k,1}
d_sieuphang{r,1}(k,i)=abs((y(i,1)-tam02)/(tam3(k,1)^0.5))
end
end
%tinh MIN (Kh. C.)
tam4=0;
for i=1:P
kcmin{r,1}(1,i)= min(d_sieuphang{r,1}(:,i)) (o vong lap r)
tam4=tam4+kcmin{r,1}(1,i);
end
D(r,1)=tam4/P
% cap nhat U
for k=1:M
ktraMOT(k,1)=0;%dung tinh so phan tu cua bo k (tong so phan tu = 1 o hang k).
for i=1:P
if d_sieuphang{r,1}(k,i)-kcmin{r,1}(1,i)==0
U{r,1}(k,i)=1;
ktraMOT(k,1)=ktraMOT(k,1)+1;
else
U{r,1}(k,i)=0;
end
end
end
%kiem tra so p.tu trong mot bo de dieu chinh,sao cho 1<= so phan tu trong 1 bo <= P-1
for i=1:M
k=i;
j=1;
177 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
while ktraMOT(i,1)==0%bo i co tong so phan tu = 0
if k<M
k=k+1;
else
k=1;
end
if ktraMOT(k,1)>1 & (U{r,1}(k,j)==1)
U{r,1}(k,j)=0;
U{r,1}(i,j)=1;
ktraMOT(k,1)=ktra(k,1)-1;
ktraMOT(i,1)=ktra(i,1)+1;
end
if ktraMOT(k,1)>1 & (U{r,1}(k,j)==0)
while U{r,1}(k,j)==0
j=j+1;
end
U{r,1}(k,j)=0;
U{r,1}(i,j)=1;
ktraMOT(k,1)=ktraMOT(k,1)-1;
ktraMOT(i,1)=ktraMOT(i,1)+1;
end
end
end%for
for k=1:M
a{k,1}
end
%****************************************
N1_clasifyInput_repeat_tam.m
%****************************************
% Function N1_clasify_repeat.m dung de xây dung các bó o khong gian vao, sieu phang o
%không gian ra và gián nhan cho tat ca các mau huan luyen. Khac voi N1_clasify_start, function
%nay dung cho cac vong lap (tru vong khoi tao) de xac dinh lai bo o input va output khi da co cac
%bo o input va output.
% Muc tieu la tim lai cac bo o input va cac sieu phang o output sao cho ca 2, input va output
%cac mau huan luyen phan bo (dong thoi) gan cac bo o input va gan cac sieu phang o output.
%Ly do chinh o day la: Neu chi dung o ket qua cua N1_clasify_start, cac mau se chi moi gan cac
%sieu phang o output, chua chac da gan cac bo o output. Dong thoi, so vong lap khoi tao, cac
%tam bo duoc chon ngau nhien nen ket qua cua N1_clasify_start o output van chiu anh huong
%cua viec chon nay. Do do, ung voi moi gia tri cac bo ngau nhien ma ket qua cac sieu phang o
%output cung thay doi theo.
% De khac phuc:
% 1/ O tai lieu "...Synthesis of ANFIS Networks" (Massimo...2005 [93]), tac gia dung nhieu chon
%lua ngau nhien khi chon cac bo input (duoc the hien boi thong so T). Ket qua cac bo va cac sieu
%phang duoc chon ung voi T cho han danh gia F tot nhat;
% 2/ Trong luan an nay, tac gia su dung N1_clasify_repeat.
%========================================================================
% 10.06.0918221543 NSD. N05 %
%========================================================================
178 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
kiemtra=0;
U{r,1}=U{r-1,1}
while kiemtra==0
t=[];
tambo_i=cell(M,1);
%Xac dinh tam bo:
d=[];
dem=[];
for k=1:M
for j=1:n
tambo_i{k,1}(1,j)=0;
end
end
for k=1:M
dem(k,1)=0;
for i=1:P
if U{r,1}(k,i)==1
dem(k,1)=dem(k,1)+1;
for j=1:n
tambo_i{k,1}(1,j)=tambo_i{k,1}(1,j)+x1(i,j)%tong toa do tam cua
bo i, i=1...M, theo huong j, j=1...n.
end
end
end
end
for k=1:M
for j=1:n
tambo_i{k,1}(1,j)=tambo_i{k,1}(1,j)/dem(k,1);
end
end
%2/cap nhat bien che cac bo o input
%2.1/ tinh kh c
for k=1:M
for i=1:P
tam1=0;
for j=1:n
tam1=tam1+(x1(i,j)-tambo_i{k,1}(1,j))^2;
end
d(k,i)=(tam1)^0.5%khoang cach tu mau du lieu i, i=1...P, toi tam cua bo k, k=1...M.
end
end
%2.2/ cap nhat matran U va bien che cac bo o input:
for i=1:P
dmin=min(d(:,i))
for k=1:M
if d(k,i)==dmin
Utam(k,i)=1
else
Utam(k,i)=0;
179 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
end
end
%3/ Kiem tra
U{r,1}=Utam;
test_U%kiem tra dieu kien (*). Bien ra 'kiemtra=1 hoac kiemtra=0'
end%of while
%cap nhat matran phan bo input U:
U{r,1}=Utam
%*****************************************
hyperPlane_repeat.m
%*****************************************
% Function hyperPlane_repeat.m dung de xac dinh:
% - cac sieu phang o khong gian ra khi da biet bien che cac mau cua moi sieu phang;
% - thuc hien viec dan nhan lai cac mau huan luyen o khong gian vao dua vao bien che moi
% cua cac sieu phang o khong gian ra.
%==================================================================
% 10.06.0918221543 NSD. N06 %
%==================================================================
V=cell(M,1);%matran he so cua he phuong trinh LMS
a=cell(M,1)%vector he so ah, h=0...n, cua M cac sieu phang o output
%1/ Tinh matran he so V cua he phuong trinh tinh ah, h=1,...,n+1
U{r,1}%=nn;
for k=1:M%cho tung sieu phang
for h=1:n+1 % hang cua V
for j=1:n+2 % cot cua V
V{k,1}(h,j)=0;
end
end
end
for k=1:M%cho tung sieu phang
for i=1:P
if U{r,1}(k,i)==1
for h=1:n+1 % hang cua V
for j=1:n+2 % cot cua V
if h==1&j==1%tinh cho hang dau tien, cot 1
180 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
V{k,1}(h,j)=V{k,1}(h,j)-y(i,1);
end
if h==1&j==2%tinh cho hang dau tien, cot 2
V{k,1}(h,j)=V{k,1}(h,j)+1;
end
if h==1&j>2 %tinh cho hang dau tien, cac cot con lai
V{k,1}(h,j)=V{k,1}(h,j)+x1(i,j-2)
end
if h>=2&j==1 %h=2...(n+1): tinh cho cac hang
%con lai cua matran V
V{k,1}(h,j)=V{k,1}(h,j)-y(i,1)*x1(i,h-1);
end
if h>=2&j==2
V{k,1}(h,j)=V{k,1}(h,j)+x1(i,h-1);
end
if h>=2&j>2%j=3...(n+2)
V{k,1}(h,j)=V{k,1}(h,j)+x1(i,j-2)*x1(i,h-1);
end
end
end
end
end
end
%2/ Tinh vector he so ah, h=0...n, cua cac sieu phang
A=cell(M,1)
B=cell(M,1)
C=cell(M,1)
kt=[];
for k=1:M%sieu phang thu k
A{k,1}=V{k,1};
A{k,1}(:,1)=[];
C{k,1}=-V{k,1}(:,1);
kt(k,1)=det(A{k,1})
muy=0.001
anp=1
while kt(k,1)==0
muy=anp*muy
A{k,1}=A{k,1}+muy*eye(n+1)
kt(k,1)=det(A{k,1})
anp=anp+1;
end
a{k,1}=A{k,1}\C{k,1}%cac he so ai, i=1...n+1, cua sieu phang thu k, k=1...M
end %a1=a{k,1}(1,1)
%a2=a{k,1}(2,1)
%.
%.
%.
%a(n+1)=a{k,1}(n+1,1)
%3/ kh c moi
d_sieuphang=cell(P,1);
tam3=[];
181 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
for i=1:P
x0(i,1)=1
end
x=[x0 x1]
for k=1:M%sieu phang M
tam3(k,1)=1+(a{k,1}')*a{k,1}
for i=1:P%so mau
tam02=x(i,:)*a{k,1}
d_sieuphang{r,1}(k,i)=abs((y(i,1)-tam02)/(tam3(k,1)^0.5))
%tu mau i, i=1...P, toi
%sieu phang k, k=1...M, tai vong lap r.
end
end
% kh c MIN
tam4=0;
for i=1:P
kcmin{r,1}(1,i)= min(d_sieuphang{r,1}(:,i))
tam4=tam4+kcmin{r,1}(1,i);
end
D(r,1)=tam4/P
%4/ cap nhat lai ma tran phan bo, U,
for k=1:M
ktraMOT(k,1)=0;%dung tinh so phan tu cua bo k (tong so phan tu = 1 o hang k).
for i=1:P
if d_sieuphang{r,1}(k,i)-kcmin{r,1}(1,i)==0
U{r,1}(k,i)=1;
ktraMOT(k,1)=ktraMOT(k,1)+1;
else
U{r,1}(k,i)=0;
end
end
end
for k=1:M
a{k,1}
end
182 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
%*************************************
cut_hydridHB_tam.m
%*************************************
%The Algorithm CSHL [9]
%========================================================================
% Chuong trinh con dung cat cac sieu hop lai HYDRID hHB thanh mot tap gom tat ca cac sieu
%hop thuan chung pHB.
% Mot sieu hop lai duoc cat thanh 2 HB duoc to chuc duoi dang cac CELL. Moi CELL la mot
%matran boxx_number{Nocut,box}=[M,P];
% Nocut:la solan cat thu Nocut; box=1...,la so hop khong thuan chung hHB o lan cat Nocut
%dang xet. Matran boxx_number{Nocut,box}=[M,P] the hien mau xi,i=1...P, nhan k=1...M thuoc
%hay khong thuoc CELL nay:
% - Neu boxx_number{Nocut,box}(k,i)=1, i=1...P, xi thuoc CELL;
% - Neu boxx_number{Nocut,box}(k,i)=0, xi khong thuoc CELL.
% Cuoi chuong trinh la so luong hHB hien dang ton tai: boxmax
%========================================================================
%KET QUA NHAN DUOC: pHBoder cac sieu hop thuan chung, duoc sap xep theo thu tu cua
%nhan, tu 1...M.
%========================================================================
% 10.06.0918221543 NSD. N07 %
%========================================================================
boxmax=1;
boxx_number=cell(P,1);
boxx_number{boxmax,1}=U{r,1};
pHBoder=0;%bien sieu hop thuan chung.
pHB=cell(P,1);%luu lai cac sieu hop thuan chung
box_number=[];
dem=0;
while boxmax~=0&dem<P
dem=dem+1;
box_number=boxx_number{boxmax,1};
sizek=zeros(M,1);
for k=1:M
for i=1:P
if box_number(k,i)==1
sizek(k,1)=sizek(k,1)+1;
end
end
end
max1=max(sizek(:,1));
[i0,j1]=find(sizek==max1);
183 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
if length(i0)>1
i1=min(i0);% co the nhieu nhan cung tan xuat: chi chon 1 nhan
i2=max(i0);
max2=max1;
end
if length(i0)==1
i1=min(i0);
sizekphu=sizek;
sizekphu(i0,j1)=0;%delete max1
max2=max(sizekphu(:,1));
[i2,j2]=find(sizekphu==max2);% bo thu k=i2 co so mau lon thu hai
i2=min(i2);
end
%==================================================================
%II/ cac truong hop co the xay ra:
%1/ Truong hop 1:
%===============
if max1==0% suy ra max2==0: sieu hop zero. XOA
boxx_number{boxmax,1}=[];
boxmax=boxmax-1;
if boxmax>0
box_number=boxx_number{boxmax,1};
end
end
%2/ Truong hop 2:
%===============
if max1>0&max2==0% suy ra boxx_number{boxmax,1} la mot sieu hop thuan chung: luu.
pHBoder=pHBoder+1;%bien sieu hop thuan chung.
pHB{pHBoder,1}=boxx_number{boxmax,1};
boxx_number{boxmax,1}=[];
%box_number=[]
boxmax=boxmax-1;
if boxmax>0
box_number=boxx_number{boxmax,1};
end
end
%3/ Truong hop 3:
%===============
if max1>0&max2>0
%3.1/ tinh trong tam (theo tung truc toa do) cua cac bo k=i1 va k=i2 co so phan tu la MAX1
va MAX2
vmax1=zeros(M,n);
vmax2=zeros(M,n);
for j=1:n %bien thu j
tumax1=0;
maumax1=0;
tumax2=0;
maumax2=0;
for i=1:P %mau thu i
if box_number(i1,i)==1%U{r,1}(i1,i)==1% k=i1,so phan tu la MAX1
184 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
tumax1=tumax1+x1(i,j);%x1*U{r,1}(i1,i)==1*x1
maumax1=maumax1+1;
end
end
vmax1(i1,j)=tumax1/maumax1;%trong tam cua bo nhan i1 theo truc toa do j, j=1...n
for i=1:P %mau thu i
if box_number(i2,i)==1%U{r,1}(i2,i)==1% k=i2,so phan tu la MAX2
tumax2=tumax2+x1(i,j);%x1*U{r,1}(i1,i)==1*x1
maumax2=maumax2+1;
end
end
vmax2(i2,j)=tumax2/maumax2;%trong tam cua bo nhan i2 theo truc toa do j,j=1...n
end
% 3.2/ khoang cach tam cua 2 bo MAX1 va MAX2 theo cac truc va chon truc co hieu max de cat
% tai trung diem:
hieu=[];
for j=1:n
hieu(1,j)=abs(vmax1(i1,j)-vmax2(i2,j));
end
max3=max(hieu);
[hang,cut]=find(hieu==max3);%truc CUT la truc co j=cut
cut=min(cut);
anpha_cut=(vmax1(i1,cut)+vmax2(i2,cut))/2%diem cat anpha tren truc "cut"
% 3.3/ Thuc hien cat theo truc "cut" tai diem cat "anpha_cut". Phan chia cac mau ve 2 hop thanh
% phan dua vao diem cat:
boxx_number{boxmax,1}=zeros(M,P);%=0;
boxx_number{boxmax+1,1}=zeros(M,P);
for k=1:M
for i=1:P
if box_number(k,i)==1%nghia la mau x1(k,i) thuoc sieu hop
boxx_number{boxmax,1} dang duoc "cut"
if x1(i,cut)<=anpha_cut
boxx_number{boxmax,1}(k,i)=1; %moi cell cua box_number la
%mot matran, moi phan tu
%box_number{m,1}(i,j) co
%i=1...M, j=1...P, (MxP).
%Neu box_number{m,1}(k,i)=1,
%suy ra mau x1(i,:) nhan
end
if x1(i,cut)>anpha_cut
boxx_number{boxmax+1,1}(k,i)=1;
end
end
end
end
boxmax=boxmax+1;
end
end
185 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
%4/ xep cac sieu hop thuan chung pHB{.}theo thu tu cua nhan k,k=1...M
tluu=cell(pHBoder,1);
de=M;
tdem=0;
nhanb=[];
for t0=1:pHBoder
[k,ik]=find(pHB{t0,1});
k=min(k);%k la nhan cua bo pHB_fusion{t0,1}
if k>0
tdem=tdem+1;
if length(tluu{k,1})==0
tluu{k,1}=pHB{t0,1};
else
de=de+1;
tluu{de,1}=pHB{t0,1};
end
end
end
pHBoder=tdem;
pHB=cell(pHBoder,1);
for i=1:pHBoder
pHB{i,1}=tluu{i,1};
end
for t0=1:pHBoder
[ki,ikk]=find(pHB{t0,1});
ki=min(ki);%xac dinh nhan cua bo pHB_fusion{t0,1}
if ki>0
nhanb(t0,1)=ki;
end
end
%**********************************
test_pHB.m
%**********************************
%==================================================================
% 10.06.0918221543 NSD. N08 %
%==================================================================
pHBoder_tam=0
pHB_tam=cell(pHBoder,1);
for i=1:pHBoder
if length(pHB{i,1})>0
pHBoder_tam=pHBoder_tam+1;
pHB_tam{pHBoder_tam,1}=pHB{i,1};
end
end
pHBoder=pHBoder_tam;
pHB=pHB_tam;
186 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
%-----------------------------
kiemtra_pHB=zeros(M,P)
for i=1:pHBoder
kiemtra_pHB=kiemtra_pHB+pHB{i,1};
end
kiemtra_pHB=U{r,1}-kiemtra_pHB
%**********************************
fusion_tam2.m
%**********************************
% Function fusion_tam.m dung de lien ket cac sieu hop cung nhan thanh sieu hop lien ket
% pHB_fusion.
% Dieu kien de lien ket duoc la 2 diem cuc tri lien hop vmin_fusion va vmax_fusion khong phu
% (overlap) len bat ky mot mau nao khong thuoc 2 sieu hop trong tap huan luyen.
% Thuat toan thuc hien theo nguyen tac: Xet sieu hop thu t0, t0=1...pHBoder,
% pHB{t0,1}= [0 0 0 0 ...0 : % vector P cot, tuong thich voi U{r,1} MxP
% .
% .
% .
% 0 1 0...1 0 0 (hang thu k, k=1...M, (nhan k))
% .
% .
% .
% 0 0 0 0...0 0]
% O hang thu k (nhan k, k=1...M) co l sieu hop thuan chung pHB{1,1}, pHB{2,1},...,pHB{l,1}. Thuc
% hien kiem tra tinh fusion bat dau tu pHB{1,1} theo so do:
%
% pHB{1,1} kiem tra voi pHB{2,1},pHB{3,1},pHB{4,1},...,pHB{l,1}
% pHB{2,1} kiem tra voi pHB{3,1},pHB{4,1},...,pHB{l,1}
% pHB{3,1}kiem tra voi pHB{4,1},...,pHB{l,1}
% .
% .
% .
% pHB{l-1,1} kiem tra voi pHB{l,1}
%==================================================================
% 10.06.0918221543 NSD. N09 %
%==================================================================
dem_pHB=pHBoder;
min_j_t=[]
max_j_t=[]
min_j_tt=[]
187 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
max_j_tt=[]
min_j_fusion_t=[]
max_j_fusion_t=[]
%xac dinh nhan:----------------------------
nhanb=[]
for t0=1:pHBoder
for k=1:M
k1=min(find(pHB{t0,1}(k,:)));
if k1>0
nhanb(t0,1)=k;
end
end
end
%--------------------------------------------
%1/ xac dinh MIN , MAX cua tung pHB:
for i=1:pHBoder
h=find(pHB{i,1}(nhanb(i,1),:)==1);%h la vector chua cac mau thuoc nhan k, k=1...M, trong
sieu hop pHB{to,1}
% pHB{t0,1}= [0 0 0 0 ...0 : % vector P cot, tuong thich voi U{r,1}
% .
% .
% .
% 0 1 0...1 0 0 (hang thu k, k=1...M, (nhan k))
% .
% .
% .
% 0 0 0 0...0 0
for j=1:n
min_j_t(i,j)=min(x1(h,j));%tim min cua truc j, j=1...n, tren sieu hop thu i, i=1...pHBoder,
max_j_t(i,j)=max(x1(h,j))%tim max cua truc j, j=1...n, tren sieu hop thu i, i=1...pHBoder,
end
end
%2/Xet tinh phu de lien ket cac pHB cung nhan, khong phu len cac pHB khac
tt=0;
t=1;
demfusion=0;
while t<pHBoder%-1
if nhanb(t,1)>0
tt=t+1;
while tt<pHBoder+1 %lay pHBoder{t,1} kiem tra de lien ket voi cac pHBoder{tt,1} khac
%h2=find(pHB{tt,1}(nhanb(tt,1),:)==1)
if nhanb(t,1)-nhanb(tt,1)==0%hai bo cung nhan: xet 2 pHB nay de lien
%hop lai, neu thoa tinh phu.
for j=1:n
min_j_fusion_t(j,1)=min(min_j_t(t,j),min_j_t(tt,j));%tim min cua truc j, j=1...n,
tren bo thu t, t=1...pHBoder, mang nhan k,k=1...M,
188 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
max_j_fusion_t(j,1)=max(max_j_t(t,j),max_j_t(tt,j));%tim max cua truc j,
%j=1...n, tren bo thu t,
%t=1...pHBoder, mang
%nhan k,k=1...M,
end
%2.1kiem tra tinh phu cua 2 sieu hop pHB{t,1}va pHB{tt,1}:
khong=[];
for i=1:pHBoder%so cac sieu hop thuan chung pHB{.,1}, la ket qua q.trinh CUT
khongphu=0;
khongphu_1=1;%tinh khong phu cua mot pHB{}
khong(i,1)=1
if (i~=t)&(i~=tt)%khac hai sieu hop pHB{t,1} va pHB{tt,1} dang xet
for j=1:n
if (max_j_t(i,j)...
max_j_fusion_t(j,1))
%pHB_fusion không phu x1(i,j)
khongphu=1; %tinh khong bi phu cua pHB{i,1} boi 2
%pHB{t,1} va pHB{tt,1}
end
if (max_j_fusion_t(j,1)<min_j_t(i,j))|(...
min_j_fusion_t(j,1)>max_j_t(i,j))
khongphu=1; %khong phu
end
end
% tinh khong bi phu cua pHB{i,1}
khong(i,1)=khong(i,1)*khongphu
end
end
%2.2 Lien ket 2 pHB lai vi tat ca cac pHB{.,1} deu khong bi phu
khongphu_tong=1%tinh khong phu cua toan bo pHB{}(tru 2 pHB dang xet)
for i=1:pHBoder
if (i~=t)&(i~=tt)
khongphu_tong = khongphu_tong*khong(i,1);
end
end
if khongphu_tong==1
pHB{t,1}=pHB{t,1}+pHB{tt,1};%thuc hien ghep 2 pHB thanh pHB fusion,
%gan cho bo thu t, t=1...pHBoder, mang nhan k
pHB{tt,1}=zeros(M,P);
demfusion=demfusion+1;
end
end
tt=tt+1;
end %while trong
end%if
t=t+1;
end%while ngoai
%==================================================
%Xac dinh so pHB khac [] hoac khac zeros de cap nhat pHB_fusion:
pHB_fusion=cell(pHBoder-demfusion,1)
pHBoder_fusion=0;% so luong pHB_fusion
for i=1:pHBoder
189 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
test3f=min(find(pHB{i,1}));
if test3f>0
pHBoder_fusion=pHBoder_fusion+1;
pHB_fusion{pHBoder_fusion,1}=pHB{i,1};
end
end
test_pHBfusion %Loai cac pHB_fusion [] va pHB_fusion zeros.
%loai, chi giu lai 1 pHB_fusion giong nhau
%hien thi va kiem tra
kiemtra_fusion=zeros(M,P)
kiemtra=0
for i=1:pHBoder_fusion
kiemtra_fusion=kiemtra_fusion+pHB_fusion{i,1};
end
kiemtra_fusion=kiemtra_fusion-U{r,1};
kiemtra=max(kiemtra_fusion);
if kiemtra~=0
anfisProg1;
end
%*********************************
test_pHBfusion.m
%*********************************
%test_pHBfusion:
%Test cac pHBoder_fusion giong nhau: loai, chi lay 1
%Loai cac pHB_fusion [] va pHB_fusion zeros.
%=======================================================
% 10.06.0918221543 NSD. N.10 %
%=======================================================
%1/ Loai cac pHB_fusion [] va pHB_fusion zeros:
tam_pHB=cell(pHBoder_fusion,1);
h=0;
dem=0;
ml1=0;
for i=1:pHBoder_fusion
ml1=length(pHB_fusion{i,1});%length([])=0; det[]=1: dung length() de nhan dang []
190 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
if ml1~=0%pHB_fusion{i,1} khac []. Kiem tra zeros
dem=0;
for k=1:M
for j=1:P
if pHB_fusion{i,1}(k,j)==1
dem=dem+1;%test zeros
end
end
end
if dem>0%matran ~= zeros
h=h+1;
tam_pHB{h,1}=pHB_fusion{i,1};%luu qua tam_pHB{h,1}
end
end
end
pHB_fusion=tam_pHB;
pHBoder_fusion=h;
%2/ Test cac pHBoder_fusion giong nhau: loai bot 1
tt=0;
t=1;
ttt=[];
mltam=[]
ml1=0;
while t<pHBoder_fusion
tt=t+1;
while tt<pHBoder_fusion+1 %lay pHBoder{t,1} kiem tra ket voi cac pHBoder{tt,1} khac
ttt=pHB_fusion{t,1}-pHB_fusion{tt,1};
%kiem tra zero cua ttt=pHB_fusion{t,1}-pHB_fusion{tt,1}:
dem=0;
for k=1:M
for j=1:P
if ttt(k,j)==1
dem=dem+1%test zeros
end
end
end
if dem==0%ttt=pHB_fusion{t,1}-pHB_fusion{tt,1}=zeros(M,P)
pHB_fusion{tt,1}=zeros(M,P); %xoa pHB_fusion{t,1}
end
tt=tt+1;
end %while trong
t=t+1;
end%while ngoai
%3/ Kiem tra lai de loai zeros, sap xep lai nhung chua theo thu tu nhan:
tam_pHB=cell(pHBoder_fusion,1);
h=0;
dem=0;
for i=1:pHBoder_fusion
for k=1:M
for j=1:P
191 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
if pHB_fusion{i,1}(k,j)==1
dem=dem+1;%test zeros
end
end
end
if dem>0%matran ~= zeros
h=h+1;
tam_pHB{h,1}=pHB_fusion{i,1};%luu qua tam_pHB{h,1}
end
end
pHB_fusion=tam_pHB;
pHBoder_fusion=h;
%*****************************
netoldProg2.m
%*****************************
% Chuong trinh con netoldProg2.m thuc hien chuc nang GIAI MO cho he thong suy dien neuro-
% fuzzy sau khi da thuc hien mo hoa tap data, chia bo de xac lap cac tap mo va cac ham lien
% thuoc.
%========================================================================
% 10.06.0918221543 NSD. N.11 %
%========================================================================
min_j=cell(pHBoder_fusion,1);% quan ly MIN ung voi cac truc cua tung bo lien hop pHB{i,1},
% i=1...pHBoder_fusion.
max_j=cell(pHBoder_fusion,1);% quan ly MAX ung voi cac truc cua tung bo lien hop pHB{i,1},
% i=1...pHBoder_fusion.
pHB_fusionClass=cell(pHBoder_fusion,M);
for t0=1:pHBoder_fusion
k=nhanbo(t0,1);
if k>0 % pHB_fusionClass{t0,k}=pHB_fusion{t0,1}%Tach cac pHB_fusion theo
% tung nhan k, k=1...M. Sieu hop pHB_fusion{t0,k} co thu tu t0,
% t0=1...pHBoder_fusion, mang nhan k.
% tam1=pHB_fusionClass{t0,k}(k,:)%vector tam1 la hang thu k cua
% pHB_fusion{t0,1}. tam1 chua bien che cac mau mang nhan k, k=1...M,
% trong sieu hop pHB_fusion{to,1}
tam1=pHB_fusion{t0,1}(k,:);%vector tam1 la hang thu k cua pHB_fusion{t0,1}.
% tam1 chua bien che cac mau mang nhan k,
% k=1...M, trong sieu hop pHB_fusion{to,1}
h=find(tam1==1); % h la vector chua cac mau x1(k,.) thuoc nhan k, k=1...M,
% trong sieu hop pHB_fusion{to,1}. Neu tam1=1, suy ra
% pHB_fusion{to,1}(k,tam1)=1, hay U{r,1}(k,tam1)=1. Nghia
% la, mau x1(tam1,:) thuoc pHBfusion thu t0, hang k, cot
% tam1.
192 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
% pHB{t0,1}= [0 0 0 0 ...0 : % vector P cot, tuong thich voi U{r,1} PxM
% .
% .
% .
% 0 1 0...1 0 0 (hang thu k, k=1...M, (nhan k))
% .
% .
% .
% 0 0 0 0...0 0
for j=1:n
min_j{t0,1}(j,1)=min(x1(h,j));%tim MIN cua vector tam1 tren truc toa do j,
% j=1...n ( h cua bo thu t0,
%t0=1...pHBoder_fusion).
max_j{t0,1}(j,1)=max(x1(h,j));%tim MAX cua vector tam1 tren truc toa do
% j, j=1...n ( h cua bo thu t0,
% t0=1...pHBoder_fusion).
end
end
end
%2/ Tinh gia tri lien thuoc cua tung mau x1(i,.), i=1...t, doi voi tung sieu hop lien hop
pHB_fusion{t0,1}, cùng nhan voi x1(i,.)
demsopHBnhan_k=[];
for k=1:M
demsopHBnhan_k(k,1)=0;
end
muy=[];
for t0=1:pHBoder_fusion
k=nhanbo(t0,1);
if k>0
demsopHBnhan_k(k,1)=demsopHBnhan_k(k,1)+1;
for i=1:P
anfaa=.5;
tong=0;
for j=1:n
z1=x1(i,j)-max_j{t0,1}(j,1);
z2=min_j{t0,1}(j,1)-x1(i,j);
if anfaa*z1>1
f1=1;
end
if (anfaa*z1>=0)&(anfaa*z1<=1)
f1=anfaa*z1;
end
if z1<0
f1=0;
end
if anfaa*z2>1
f2=1;
end
if (anfaa*z2>=0)&(anfaa*z2<=1)
f2=anfaa*z2;
end
if z2<0
193 Luận án Tiến sĩ Kỹ thuật
Nguyễn Sỹ Dũng
f2=0;
end
tong=tong+1-f1-f2;
end
muy(t0,i)=tong/n; % gia tri lien thuoc cua mau x1(i,.), i=1...P, nhan k tren sieu hop
% pHB_fusion{t0,1} mang nhan k, k=1...M
end
end
end
%3/ Tinh ham sai so binh phuong cuc tieu LMS cua tin hieu ra cua Net so voi y cua cac mau
huan luyen:
%Tinh gia tri MAX cua lien thuoc cua tung mau trong cac sieu hop thuan
%chung cung nhan. Sap xep lai matran muy theo dung thu tu nhan k, k=1...M,
%nghia la, vi du, neu sieu hop mang nhan 2 thi se nam o hang so 2 trong matran muy.
%Ket qua chua trong muy_max_k theo dung thu. tu cua nhan tu 1.
muy_max_k=zeros(M,P);
for i=1:P
for k=1:M
[jj,hh]=find(nhanbo(:,1)==k);
muy_max_k(k,i)=max(muy(jj,i));
end
end
%gia tri cac sieu phang ung voi tung mau
for k=1:M%sieu phang M
for i=1:P%so mau
sieuphang(k,i)=x(i,:)*a{k,1};
end
end
%OUTPUT CUA MANG HLM1 [9]
hieu=zeros(P,1);
for i=1:P
%xac gia tri lien thuoc lon nhat cua mau x1(i,.), i=1...P
ma=max(muy_max_k(:,i));
[kk,ii]=find(muy_max_k(:,i)==ma);
kk=min(kk)%xac gia tri lien thuoc lon nhat cua mau x1(i,.), i=1...P
output_mau_xi(i,1)=muy_max_k(kk,i)*sieuphang(kk,i);
hieu(i,1)=y(i,1)-output_mau_xi(i,1);
end
LMS= 0;
for i=1:P
LMS=LMS+(hieu(i,1))^2;
end
LMS=(LMS)/P