Системы искусственного интеллекта
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
> k номер варианта, в соответствии с порядковым номером в журнале старосты.
Оценить погрешность вычислений по норме Гауса
.4Реализация
1.Вид поверхности x1^2+x2^2+4*x1*x2;
2.Создание нечеткой логической системы с параметрами по умолчанию
Вычисляем ошибку по гауссу и норму по гауссу для нечеткой логической системы: =newfis(kurs);
%задаем входную переменую
a=addvar(a,input,x1,[-2 2]);
%задаем функции принадлежности входных переменных=addmf(a,input,1,g1,gaussmf,[0.4248 -2]);
a=addmf(a,input,1,g2,gaussmf,[0.4248 -1]);=addmf(a,input,1,g3,gaussmf,[0.4248 0]);=addmf(a,input,1,g4,gaussmf,[0.4248 1]);=addmf(a,input,1,g5,gaussmf,[0.4248 2]);
%задаем входную переменую=addvar(a,input,x2,[-2 2]);
%задаем функции принадлежности входных переменных=addmf(a,input,2,g1,gaussmf,[0.4248 -2]);
a=addmf(a,input,2,g2,gaussmf,[0.4248 -1]);=addmf(a,input,2,g3,gaussmf,[0.4248 0]);=addmf(a,input,2,g4,gaussmf,[0.4248 1]);=addmf(a,input,2,g5,gaussmf,[0.4248 2]);
%задаем выходную переменую=addvar(a,output,y,[-8 24]);
%задаем функции принадлежности выходной переменной=addmf(a,output,1,g1,gaussmf,[3.397 -8]);
a=addmf(a,output,1,g2,gaussmf,[3.397 0]);=addmf(a,output,1,g3,gaussmf,[3.397 8]);=addmf(a,output,1,g4,gaussmf,[3.397 16]);=addmf(a,output,1,g5,gaussmf,[3.397 24]);
%задаем обучающие правила=[
1 5 1 1
2 4 1 1
3 2 1 1
4 1 1 1
5 1 1 1
1 4 1 1
2 3 1 1
3 2 1 1
4 1 1 1
5 1 1 1
1 2 1 1
2 2 1 1
3 2 1 1
4 2 1 1
5 2 1 1
1 1 1 1
2 1 1 1
3 2 1 1
4 3 1 1
5 4 1 1
1 1 1 1
2 1 1 1
3 2 1 1
4 4 1 1
5 5 1 1];
%добавляем правила в фис файл
a=addrule(a,ruleList);
% изменяем значения методов=setfis(a,AndMethod,prod);=setfis(a,ImpMethod,prod);
= 0;i=-2:1:2j=-2:1:2= i^2 + j^2 + 4*i*j;= evalfis([i j], a);= sum + (realValue - eVal)^2;
%ошибак по Гауссу= sqrt(sum);
sum = 0;i=-2:1:2j=-2:1:2= i^2 + j^2 + 4*i*j;= sum + (realValue)^2;
%норма по Гауссу= error / (sqrt(sum));
Вывод:
Ошибка по Гауссу
? = 11.3060
Норма по Гауссу
? = 0.2444
Создание фитнес функции на основе fuzzy logic toolbox:
%
% Функция для генетического алгоритма
% её параметры - коэффициент концентрации и координата максимума функции
% возвращаемое значение - ошибка по Гауссу
%
function error=fitnes(pop)
% создаем новый фис файл=newfis(kurs);
%задаем входную переменую
a=addvar(a,input,x1,[-2 2]);
%задаем функции принадлежности входных переменных
a=addmf(a,input,1,g1,gaussmf,[pop(1,1) pop(1,2)]);
a=addmf(a,input,1,g2,gaussmf,[pop(1,3) pop(1,4)]);=addmf(a,input,1,g3,gaussmf,[pop(1,5) pop(1,6)]);=addmf(a,input,1,g4,gaussmf,[pop(1,7) pop(1,8)]);=addmf(a,input,1,g5,gaussmf,[pop(1,9) pop(1,10)]);
%задаем входную переменую
a=addvar(a,input,x2,[-2 2]);
%задаем функции принадлежности входных переменных
a=addmf(a,input,2,g1,gaussmf,[pop(1,11) pop(1,12)]);
a=addmf(a,input,2,g2,gaussmf,[pop(1,13) pop(1,14)]);=addmf(a,input,2,g3,gaussmf,[pop(1,15) pop(1,16)]);=addmf(a,input,2,g4,gaussmf,[pop(1,17) pop(1,18)]);=addmf(a,input,2,g5,gaussmf,[pop(1,19) pop(1,20)]);
%задаем выходную переменую=addvar(a,output,y,[-8 24]);
%задаем функции принадлежности выходной переменной=addmf(a,output,1,g1,gaussmf,[pop(1,21) pop(1,22)]);
a=addmf(a,output,1,g2,gaussmf,[pop(1,23) pop(1,24)]);=addmf(a,output,1,g3,gaussmf,[pop(1,25) pop(1,26)]);=addmf(a,output,1,g4,gaussmf,[pop(1,27) pop(1,28)]);=addmf(a,output,1,g5,gaussmf,[pop(1,29) pop(1,30)]);
%задаем обучающие правила=[
1 5 1 1
2 4 1 1
3 2 1 1
4 1 1 1
5 1 1 1
1 4 1 1
2 3 1 1
3 2 1 1
4 1 1 1
5 1 1 1
1 2 1 1
2 2 1 1
3 2 1 1
4 2 1 1
5 2 1 1
1 1 1 1
2 1 1 1
3 2 1 1
4 3 1 1
5 4 1 1
1 1 1 1
2 1 1 1
3 2 1 1
4 4 1 1
5 5 1 1];
%добавляем правила в фис файл
a=addrule(a,ruleList);
% изменяем значения методов=setfis(a,AndMethod,prod);=setfis(a,ImpMethod,prod);
= 0;i=-2:1:2j=-2:1:2
%значеие из фисфайла= evalfis([i j],a);
%реальное значение функции
realValue = i^2 + j^2 + 4*i*j;
%сумма по Гауссу= sum + (efis - realValue)^2;
end
%выходной параметр - ошибка по Гауссу= sqrt(sum);
.Применение генетического алгоритма
= gaoptimset;
% интервал принадлежности= gaoptimset(options,PopInitRange, [0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -8 0 -8 0 -8 0 -8 0 -8; 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 60 24 60 24 60 24 60 24 60 24]);
% начальные значения параметров= gaoptimset(options,InitialPopulation, [0.4248 -2 0.4248 -1 0.4248 0 0.4248 1 0.4248 2 0.4248 -2 0.4248 -1 0.4248 0 0.4248 1 0.4248 2 3.397 -8 3.397 0 3.397 8 3.397 16 3.397 24]);
% рисование графика
options = gaoptimset(options,PlotFcns, { @gaplotbestf });
[x,fval]=ga(@fitnes,30,[],[],[],[],[],[],[],options);
Применение генетического алгоритма:
options = gaoptimset;
options = gaoptimset(options,PopInitRange, [0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -2 0 -68 0 -68 0 -68 0 -68 0 -68; 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 50 84 50 84 50 84 50 84 50 84]);= gaoptimset(options,InitialPopulation, [0.4248 -2 0.4248 -1 0.4248 0 0.4248 1 0.4248 2 0.4248 -2 0.4248 -1 0.4248 0 0.4248 1 0.4248 2 16.14 -68 16 -29.2 16 8 16.14 46 16.14 84]);= gaoptimset(options,PlotFcns, { @gaplotbestf });
[x,fval]=ga(@lr_sii_4,30,[],[],[],[],[],[],[],options);
Результат работы алгоритма:
Генетическим алгоритмом были сформированы следующие коэффициенты для функций принадлежности:
) для x1:
1.1 0.0965 -2.0000
1.2 0.4248 -0.3406
1.3 0.4248 0
1.4 -0.5111 1.0000
1.5 0.4248 2.0000
) для x2:
2.1 0.3716 -2.0000
2.2 0.4248 -1.0000
2.3 0.5579 0
2.4 0.4248 1.0000
2.5 0.4248 2.0000
) для y:
3.1 3.3970 -8.0000
3.2 3.3970 1.3940
3.3 3.3970 8.0000
3.4 3.3970 16.0000
3.5 3.3970 24.0000
Поверхность построенная при помощи Fuzzy Logic ToolBox и генетического алгоритма
Вывод:
Ошибка по Гауссу
? = 9.4502
Норма по Гауссу
? = 0.2043
Глава 2. Нейронны