Система нечеткого вывода для решения задачи аппроксимации поверхности

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    974,2 Кб
  • Опубликовано:
    2014-05-25
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Система нечеткого вывода для решения задачи аппроксимации поверхности

Балтийский государственный технический университет «ВОЕНМЕХ» им. Д.Ф. Устинова








Курсовая работа

по курсу «Системы искусственного интеллекта»

тема:

Система нечеткого вывода для решения задачи аппроксимации поверхности



Выполнил: Дементьев Д.Ю.

Студент группы А-112

Проверил: Маслов А.А.





Санкт-Петербург - 2014 г.

Оглавление

Введение

Раздел 1. Алгоритм Мамдани

.1 Вывод структуры системы нечёткого вывода

.2 Определение входных переменных

.3 Выходная переменная

.4 Правила

.5 Анализ результатов

Раздел 2. Алгоритм Сугено

2.1 Вывод структуры системы нечёткого вывода

2.2 Определение входных переменных

.3 Выходная переменная

.4 Правила

.5 Анализ результатов

Глава 3: Адаптивная система нейро-нечёткого вывода. (листинг программы в приложении 3)

3.1 Настройка (обучение) системы типа Сугено

3.2.1 Вывод структуры системы нейро-нечёткого вывода

.2.2 Входные переменные

.2.3 Выходная переменная

.2.4 Правила

.2.5 Анализ результатов

Список использованных источников

Приложение 1

Приложение 2

Приложение 3

Введение


В курсовой работе была решена задача аппроксимации поверхности. Для решения задачи использовались системы нечёткого вывода Мамдани, Сугено и адаптивная система нейро-нечёткого вывода ANFIS в программной среде MatLab.

Для решения задачи при помощи системы нечёткого вывода требуется определить, входные и выходные переменные, их термы, для каждого терма подобрать функцию принадлежности, выстроить базу правил необходимую для связи входных и выходных переменных.

Основные этапы нечеткого вывода:

образование базы знаний;

фазификация;

агрегирование подусловий правил;

активизация подзаключений;

аккумулирование заключений;

дефазификация.

Задача аппроксимации:

Уравнение для создания исходной матрицы: ,


Реализация в среде MatLab:

n=15;

X1=linspace(-7,3,n);=linspace(-4.4,1.7,n);=zeros(n,n);j=1:n(j,:)=X1.^2*sin(X2(j)-1);(X1,X2,y)

Рис. 1. Исходная поверхность

 


Раздел 1. Алгоритм Мамдани


(листинг программы приведён в приложении 1)

 

1.1 Вывод структуры системы нечёткого вывода


X1,X2 - входные переменные

y- выходная переменная

Рис. 2. Структура системы нечеткого вывода

1.2 Определение входных переменных


Входная переменная X1.

Было выбрано три терма имеющих линейные вид (trimf):

-   низкий (значение переменной низкое);

-          средний (значение переменной среднее);

-          высокий (значение переменной высокое).

Рис. 3. Функции принадлежности входной ЛП

Входная переменная X2

Рис. 4. Функции принадлежности входной ЛП

Используются те же три терма, что и в переменной X1.

 

.3 Выходная переменная


Переменная y меняется от -50 до 50 и имеет пять термов: низкий, ниже среднего, средний, выше среднего, высокий. Термы также имеют нелинейный вид (gausmf).

Рис. 5. Функции принадлежности выходной ЛП

1.4 Правила


Нами было создано 7 правил для связи входных и выходных лингвистических переменных:

1. If (X1 is низкий) and (X2 is низкий) then (y is высокий) (1)

. If (X1 is низкий) and (X2 is высокий) then (y is высокий) (1)

. If (X1 is средний) then (y is средний) (1)

. If (X1 is высокий) and (X2 is низкий) then (y is вышеср) (1)

. If (X1 is высокий) and (X2 is средний) then (y is нижеср) (1)

. If (X1 is высокий) and (X2 is высокий) then (y is вышеср) (1)

Рис. 6. Графическое изображение правил

Метод дефаззификации - метод центра тяжести (centroid).

 

.5 Анализ результатов


В результате была получена аппроксимированная поверхность. Сравним её с изначальной поверхностью, построенной стандартными средствами MatLab, без использования системы нечёткого вывода.

Рис. 7. Изначальная поверхность

Рис. 8. Аппроксимированная поверхность

Аппроксимированная поверхность получилась довольно грубой, можно попробовать улучшить результат, настроив систему нечёткого вывода Мамдани.

Настройка заключается в том, что можно опробовать различные типы функций принадлежности переменных, различные значения сил правил, разбить поверхность более мелкой сеткой и т.д.

Настройка:

·  Изменим типы функций принадлежности входных и выходных переменных с линейного на нелинейный вид (gausmf);

·        Поменяем силы правил а значения, полученные эмпирическим путём.

В результате настройки получим следующую аппроксимацию поверхности:

Рис. 9. Аппроксимированная поверхность после настройки

Вывод: По Рисунку 8 видно, что при использовании нелинейных термов зависимости сглаживаются, исчезают слишком резкие подъёмы и спуски, что более точно отражает реальную зависимость и как следствие позволяет с большей точностью определить значение выходной переменной. Поэтому использование нелинейных зависимостей лучше, чем линейных. Соответственно выберем нелинейные зависимости для всех термов.

Раздел 2. Алгоритм Сугено


(листинг программы приведён в приложении 2)

Данный алгоритм отличается от предыдущего тем, что в констатирующей части правил используются не лингвистические переменные, а линейные выражения. В силу этой особенности для алгоритма подходят не все методы дефазификации.

Считается, что алгоритм Сугено точнее Мамдани, но он иногда труден в реализации.

2.1 Вывод структуры системы нечёткого вывода


x1, x2 - входные переменные

y - выходная переменная

Рис. 10. Структура системы нечеткого вывода

2.2 Определение входных переменных


Входная переменная x1.

Было выбрано три терма имеющих нелинейные вид(gausmf):

-   низкий (значение переменной низкое);

-          средний (значение переменной среднее);

-          высокий (значение переменной высокое).

Рис. 11. Функции принадлежности входной переменной x1

Входная переменная x2.

Используются те же три терма, что и в переменной x1.

Рис. 12. Функции принадлежности входной переменной x2

 

.3 Выходная переменная


Пять линейных выражений, определяющих координату Y.

Рис. 13. Линейные выражения выходной переменной Y

 

.4 Правила


Нами было создано шесть правил для связи входных и выходных переменных:

1. If (x1 is низкий) and (x2 is низкий) then (y is 50) (1)

. If (x1 is низкий) and (x2 is средний) then (y is 4x1-x2) (1)

. If (x1 is низкий) and (x2 is высокий) then (y is 50) (1)

. If (x1 is средний) then (y is 0) (1)

. If (x1 is высокий) and (x2 is низкий) then (y is 2x1-2x2-3) (1)

6. If (x1 is высокий) and (x2 is высокий) then (y is 2x1+2x2+1) (1)

Данные правила обеспечивают выбор одного из выходных выражения, в зависимости от значений входных переменных (их принадлежности к какому-либо терму).

Рис. 14. Графическое изображение правил

Метод дефаззификации - взвешенное среднее (wtaver).

2.5 Анализ результатов


В результате была получена аппроксимированная поверхность. Сравним её с изначальной поверхностью, построенной стандартными средствами MatLab, без использования системы нечёткого вывода.

Рис. 15. Изначальная поверхность

Рис. 16. Аппроксимированная поверхность

В итоге мы получили довольно грубоватую поверхность, по сравнению с исходной. Это может быть связанно как и с погрешностями самого алгоритма, так и с отсутствием точной настройки системы нечёткого вывода.

Настройка заключается в том, что можно опробовать различные типы функций принадлежности переменных, различные значения сил правил, разбить поверхность более мелкой сеткой и т. д.

 


Раздел 3: Адаптивная система нейро-нечёткого вывода

 

Листинг программы в приложении 3

Нейронная сеть - вычислительная структура, состоящая из простых элементов, называющиеся нейронами, позволяющая моделировать связь между входным и выходным сигналом.

Можно представить систему нечёткого вывода как модель нейронной сети, а затем использовать алгоритм обучения нейронных сетей для того, чтобы настроить параметры системы нечёткого вывода.

В среде MatLab можно настроить систему типа Сугено.

3.1 Настройка (обучение) системы типа Сугено


Алгоритм:

·  Задать исходные данные;

·        Загрузить исходные данные;

·        Сгенерировать систему нечёткого вида;

·        Обучить систему нечёткого вывода;

·        Результаты.

Задание исходных данных

Реализация в среде MatLab:

[X2,X1]=meshgrid(X2,X1);

Y=y';=[X1(:) X2(:) Y(:)];

Загрузка исходных данных

Загрузим исходные данные с рабочей области (Load data From: workspace).

Генерация системы нечёткого вывода.

Способ разбиения входной области при формировании базы правил - суперактивная кластеризация (Sub. clustering.).

Данный способ учитывает особенности сетки - учитывает неравномерного распределение точек, чего не делает Grid partition.

Обучение.

Метод оптимизации: гибридный (комбинация методов наименьших квадратов и градиентного спуска).

Количество эпох - 60.

Продолжаем обучать систему до тех пор, пока ошибка (Training Error) примет минимальное значение.

Рис. 17. Минимальное значение ошибки системы

3.2 Результаты обучения


.2.1 Вывод структуры системы нейро-нечёткого вывода

В результате обучения получили настроенную систему типа Сугено со следующими параметрами.

Рис. 18. Структура системы нейро-нечеткого вывода

.2.2 Входные переменные

Входная переменная in1.

Представлена в виде семи термов имеющих нелинейный вид (gausmf):

-   in1cluster1;

-          in1cluster2;

-          in1cluster3;

-          in1cluster4;

-          in1cluster5;

-          in1cluster6;

-          in1cluster7.

Рис. 18. Функции принадлежности входной переменной in1

Входная переменная in2.

Аналогично семь термов нелинейного вида:

-   in1cluster1;

-          in1cluster2;

-          in1cluster3;

-          in1cluster4;

-          in1cluster5;

-          in1cluster6;

-          in1cluster7.

Рис. 19. Функции принадлежности входной переменной in2

.2.3 Выходная переменная

Представлена в виде семи кластеров

Рис. 20. Представление выходной переменной out1

3.2.4 Правила

1. If (in1 is in1cluster1) and (in2 is in2cluster1) then (out1 is out1cluster1)

(1)

. If (in1 is in1cluster2) and (in2 is in2cluster2) then (out1 is out1cluster2)

(1)

. If (in1 is in1cluster3) and (in2 is in2cluster3) then (out1 is out1cluster3)

(1)

. If (in1 is in1cluster4) and (in2 is in2cluster4) then (out1 is out1cluster4)

(1)

. If (in1 is in1cluster5) and (in2 is in2cluster5) then (out1 is out1cluster5)

(1)

. If (in1 is in1cluster6) and (in2 is in2cluster6) then (out1 is out1cluster6)

(1)

. If (in1 is in1cluster7) and (in2 is in2cluster7) then (out1 is out1cluster7)

(1)

Рис. 21. Графическое изображение правил

Метод дефаззификации - взвешенное среднее (wtaver).

3.2.5 Анализ результатов

В результате была получена аппроксимированная поверхность. Сравним её с изначальной поверхностью, построенной стандартными средствами MatLab, без использования системы нейро-нечёткого вывода.

Рис. 21. Изначальная поверхность

Рис. 22. Аппроксимированная поверхность

Результаты применения системы нейро-нечеткого вывода намного превосходят результаты алгоритма Сугено и Мамдани. Так же преимущество данного метода в том, что нам не приходится задавать линейные выражения в констатирующей части, метод делает это за нас в процессе обучения.

. С.Д. Штовба. Проектирование нечетких систем средствами MATLAB

Приложение 1


Name = mamdanyNE

Type = mamdani

NumInputs = 2== 1== 7= min= max= min= max= centroid

. Name mamdanyNE

. Type mamdani

. Inputs/Outputs [2 1]

. NumInputMFs [3 3]

. NumOutputMFs 5

. NumRules 7

. AndMethod min

. OrMethod max

. ImpMethod min

. AggMethod max

. DefuzzMethod centroid

. InLabels X1

. X2

. OutLabels y

. InRange [-7 3]

16. [-4.4 1.7]

. OutRange [-50 50]

. InMFLabels низкий

. средний

. высокий

. низкий

. средний

. высокий

. OutMFLabels низкий

. нижеср

. средний

. вышеср

. высокий

. InMFTypes trimf

. trimf

. trimf

32. trimf

. trimf

. trimf

. OutMFTypes trimf

. trimf

. trimf

. trimf

. trimf

. InMFParams [-12.13 -6.99 -1.851 0]

. [-5.693 -1.97 1.753 0]

. [-1.151 3.05 7.251 0]

. [-7.256 -4.4 -1.544 0]

. [-3.98 -1.35 1.28 0]

. [-0.995 1.7 4.395 0]

. OutMFParams [-75.01 -50 -24.99 0]

. [-50.01 -25 0.008189 0]

. [-25.01 0 25.01 0]

. [0.2564 25.26 50.27 0]

. [24.99 50 75.01 0]

. Rule Antecedent [1 1]

. [1 2]

. [1 3]

. [2 0]

. [3 1]

. [3 2]

. [3 3]

. Rule Consequent 5

. 1

. 5

. 3

. 4

. 2

. 4

. Rule Weight 1

. 1

. 1

. 1

. 1

. 1

. Rule Connection 1

. 1

. 1

. 1

. 1

. 1

. 1

аппроксимация поверхность нечеткий система

Приложение 2

= surf= sugeno= 2== 1== 6= prod= probor= prod= sum= wtaver

. Name surf

. Type sugeno

. Inputs/Outputs [2 1]

. NumInputMFs [3 3]

. NumOutputMFs 5

. NumRules 6

. AndMethod prod

. OrMethod probor

. ImpMethod prod

. AggMethod sum

. DefuzzMethod wtaver

. InLabels x1

. x2

. OutLabels y

. InRange [-7 3]

16. [-4.4 1.7]

. OutRange [0 1]

. InMFLabels низкий

. средний

. высокий

. низкий

. средний

. высокий

. OutMFLabels 50

. 4x1-x2

. 0

27. 2x1-2x2-3

. 2x1+2x2+1

. InMFTypes gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. OutMFTypes constant

. linear

. constant

. linear

. linear

. InMFParams [1.699 -7 0 0]

. [1.699 -2 0 0]

. [1.699 3 0 0]

. [1.037 -4.435 0 0]

. [1.036 -1.35 0 0]

. [1.2 1.51 0 0]

. OutMFParams [50 0 0 0]

. [4 -1 0 0]

. [0 0 0 0]

. [2 -2 -3 0]

. [2 2 1 0]

. Rule Antecedent [1 1]

. [1 2]

. [1 3]

. [2 0]

. [3 1]

. [3 3]

. Rule Consequent 1

. 1

. 3

. 4

. 5

. Rule Weight 1

. 1

. 1

. 1

. 1

. 1

. Rule Connection 1

. 1

. 1

. 1

. 1

. 1

Приложение 3

= fis4_er0= sugeno= 2== 1== 7= prod= probor= prod= sum= wtaver

. Name fis4_er0

. Type sugeno

. Inputs/Outputs [2 1]

. NumInputMFs [7 7]

. NumOutputMFs 7

. NumRules 7

. AndMethod prod

. OrMethod probor

. ImpMethod prod

. AggMethod sum

. DefuzzMethod wtaver

. InLabels in1

. in2

. OutLabels out1

. InRange [-7 3]

. [-4.4 1.7]

. OutRange [-48.79 48.17]

. InMFLabels in1cluster1

. in1cluster2

. in1cluster3

. in1cluster4

. in1cluster5

. in1cluster6

. in1cluster7

. in2cluster1

. in2cluster2

. in2cluster3

. in2cluster4

. in2cluster5

. in2cluster6

. in2cluster7

. OutMFLabels out1cluster1

. out1cluster2

. out1cluster3

. out1cluster4

. out1cluster5

. out1cluster6

. out1cluster7

. InMFTypes gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. gaussmf

. OutMFTypes linear

. linear

. linear

. linear

. linear

. linear

. InMFParams [2.784 -0.7318 0 0]

. [2.887 -3.755 0 0]

. [2.577 -3.426 0 0]

. [2.016 1.49 0 0]

. [2.715 1.446 0 0]

. [2.649 -5.386 0 0]

. [2.682 -6.462 0 0]

. [2.134 -0.7675 0 0]

. [2.067 -0.3106 0 0]

. [1.414 -3.127 0 0]

. [0.9161 2.132 0 0]

. [1.114 -3.898 0 0]

. [1.307 -1.676 0 0]

. [1.43 -3.996 0 0]

. OutMFParams [-15.21 2.058 71.93 0]

. [-23.68 14.89 -152.9 0]

. [4.425 -42.1 -168.3 0]

. [4.925 1.905 -8.083 0]

. [6.883 3.891 5.334 0]

. [39.92 -41.96 107.4 0]

. [-11.51 70.24 288.9 0]

. Rule Antecedent [1 1]

. [2 2]

. [3 3]

. [4 4]

. [5 5]

. [6 6]

. [7 7]

. Rule Consequent 1

. 2

. 3

. 4

. 5

. 6

. 7

. Rule Weight 1

. 1

. 1

. 1

. 1

. 1

. 1

. Rule Connection 1

. 1

. 1

. 1

. 1

. 1

. 1

Похожие работы на - Система нечеткого вывода для решения задачи аппроксимации поверхности

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!