You are on page 1of 8

Факультет Біомедичної інженерії

Національного технічного університету України


«КПІ ім. І. Сікорського»
Кафедра біомедичної кібернетики

Дисципліна «Нечіткі моделі в медицині»


Практична робота № 5
Варіант № 5

Тема: «Нейронечiтка мережа ANFIS. Автоматична генерація


функцій належності»

Виконала:
студентка групи БС-03,
Гуріна Софія Вікторівна

Київ – 2021
Завдання
Мета роботи: ознайомитися з принципами функціонування та навчання
нейронечіткої моделі у вигляді системи Anfis (об’єднання нейронних мереж з
нечіткими системами).
Об’єкт дослідження: система Anfis (anfisedit) в середовищі МатЛаб.
Предмет дослідження: використання системи Anfis для розв’язання задач
класифікації та апроксимації на основі даних вимірювань про вхід-вихід
системи.
1. Вивчити теоретичний матеріал.
2. Сформувати нейронечітку модель Anfis в середовищі МатЛаб, для
цього потрібно:
- cпроектувати апроксиматор у вигляді нечіткої моделі Сугено;
- на основі нечіткої моделі Сугено спроектувати нейронечітку модель,
- перевірити модель на здатність розв’язувати задачу апроксимації
функції.
Дані варіанту:
Лістинг програм та результати
Середовище MatLab:
clc;clear all;close all;
x_t=4; x_beg=0.5; x_end=3;
x_t_1=5; x_beg_1=0.5; x_end_1=5
f_name='l_52';
n=x_t;
m=x_t_1;
nm=n*m;

X=x_beg:(x_end-x_beg)/(n -1):x_end;
delta_x=(x_end-x_beg)/(n-1)
X_1=x_beg_1:(x_end_1-x_beg_1)/(m-1):x_end_1;
delta_x1=(x_end_1-x_beg_1)/(m-1)

z=0;
for i=1:n
for j=1:m
b = X_1(j); a = X(i);
z=z+1; Y(z)=(a*a*a*sin(0.2*b))/(a+b*b);
end
end

k=1;
data=zeros(m*n,3)
for i=1:n
for j=1:m
data(k,1)=X(i)
data(k,2)=X_1(j)
data(k,3)=Y(k)
k=k+1;
end;end;
data
Y2=sort(Y);

ymin=min(Y);ymax=max(Y);
delta_y=(ymax-ymin)/nm;

ai=newfis(f_name,'sugeno', 'min', 'max', 'prod', 'sum', 'wtaver');

ai= addvar (ai,'input','X', [x_beg x_end]);


for i=1:n
if i==n
c=x_end+delta_x; else c=X(i+1)
end;
if i==1
a=x_beg -delta_x; else a=X(i-1)
end; b=X(i);
ai=addmf (ai,'input',1, int2str(i),'trimf', [a b c])
end;
ai = addvar (ai,'input','X_1', [x_beg_1 x_end_1])
for i=1:m
if i==m
c=x_end_1 + delta_x1; else c=X_1(i+1)
end;
if i==1
a=x_beg_1-delta_x1; else a=X_1(i-1)
end; b=X_1(i);
ai=addmf (ai,'input',2, int2str(i),'trimf', [a b c])
end;

ai= addvar (ai,'output','y', [ymin ymax]);


for i=1:nm
if i==nm
c=ymax+delta_y;
else c=Y2(i+1); end;
if i==1
a=ymin-delta_y; else a=Y2(i-1)
end; b=Y2(i);
ai= addmf (ai,'output',1, ['y', int2str(i)],'constant', b);
end;

rullist=ones(nm,5); z=0;
for i=1:n
for j=1:m
z=z+1;
rullist(z,1)=i;
rullist(z,2)=j;
for k=1:nm
if (Y((i-1)*m+j)==Y2(k)) disp('U1 = ');
break;
end;
end
rullist(z,3)=k;
rullist(z,4)=1;
rullist(z,5)=1;
end; end;
ai= addrule(ai, rullist);

figure (2), gensurf (ai);title ('aproximate surface')


writefis (ai,f_name)

X_check=1:0.1:3;
rr=length(X_check)
X_1_check=0.0001;
Y_check(1:rr)=X_check(1:rr)*sqrt(X_1_check)

ai=readfis(f_name);
ep=0;
for i = 1:rr
out(i)=evalfis([X_check(i) X_1_check], ai);
ep=ep+abs(out(i)-Y_check(i));
end
ep=ep/rr
out_fismat=anfis(data, ai, 70);

X_check=1:0.1:3;rr=length(X_check);
X_1_check=.001;
Y_check(1:rr)=X_check(1:rr)*sqrt(X_1_check)

ai=readfis(f_name); showfis(ai);
data_ch=zeros(10,3);

for i = 1:rr
data_ch(i,1)=X_check(i);
data_ch(i,2)=X_1_check;
data_ch(i,3)=Y_check(i);
end;
out(:)=evalfis([data_ch(:,1) data_ch(:,2)], ai);
ep1=sum(abs(out(:)-Y_check(:)));
ep1=ep1/rr
ep
fuzzy(ai);

Результат:

Рис. 1.

Рис. 2.
Рис. 3.

Рис. 4.
Рис. 5.
Висновок
Виконавши цю лабораторну роботу, я ознайомилась з принципами
функціонування та навчання нейронечіткої моделі у вигляді системи Anfis
(об’єднання нейронних мереж з нечіткими системами).

You might also like