Системы искусственного интеллекта

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

> 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. Нейронны