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