Система нечеткого вывода для решения задачи аппроксимации поверхности
Решение задачи аппроксимации поверхности при помощи системы нечёткого вывода. Определение входных и выходных переменных, их термы; алгоритм Сугено. Подбор функций принадлежности, построение базы правил, необходимых для связи входных и выходных переменных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 31.05.2014 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Балтийский государственный технический университет «ВОЕНМЕХ» им. Д.Ф. Устинова
Курсовая работа
по курсу «Системы искусственного интеллекта»
тема:
Система нечеткого вывода для решения задачи аппроксимации поверхности
Выполнил: Дементьев Д.Ю.
Студент группы А-112
Проверил: Маслов А.А.
Санкт-Петербург - 2014 г.
Оглавление
- Введение
- Раздел 1. Алгоритм Мамдани
- 1.1 Вывод структуры системы нечёткого вывода
- 1.2 Определение входных переменных
- 1.3 Выходная переменная
- 1.4 Правила
- 1.5 Анализ результатов
- Раздел 2. Алгоритм Сугено
2.1 Вывод структуры системы нечёткого вывода
- 2.2 Определение входных переменных
- 2.3 Выходная переменная
- 2.4 Правила
- 2.5 Анализ результатов
- Глава 3: Адаптивная система нейро-нечёткого вывода. (листинг программы в приложении 3)
3.1 Настройка (обучение) системы типа Сугено
3.2.1 Вывод структуры системы нейро-нечёткого вывода
3.2.2 Входные переменные
3.2.3 Выходная переменная
3.2.4 Правила
3.2.5 Анализ результатов
- Список использованных источников
- Приложение 1
- Приложение 2
- Приложение 3
Введение
В курсовой работе была решена задача аппроксимации поверхности. Для решения задачи использовались системы нечёткого вывода Мамдани, Сугено и адаптивная система нейро-нечёткого вывода ANFIS в программной среде MatLab.
Для решения задачи при помощи системы нечёткого вывода требуется определить, входные и выходные переменные, их термы, для каждого терма подобрать функцию принадлежности, выстроить базу правил необходимую для связи входных и выходных переменных.
Основные этапы нечеткого вывода:
- образование базы знаний;
- фазификация;
- агрегирование подусловий правил;
- активизация подзаключений;
- аккумулирование заключений;
- дефазификация.
Задача аппроксимации:
Уравнение для создания исходной матрицы: ,
Реализация в среде MatLab:
n=15;
X1=linspace(-7,3,n);
X2=linspace(-4.4,1.7,n);
y=zeros(n,n);
for j=1:n
y(j,:)=X1.^2*sin(X2(j)-1);
end
surf(X1,X2,y)
Рис. 1. Исходная поверхность
Раздел 1. Алгоритм Мамдани
(листинг программы приведён в приложении 1)
1.1 Вывод структуры системы нечёткого вывода
X1,X2 - входные переменные
y- выходная переменная
Рис. 2. Структура системы нечеткого вывода
1.2 Определение входных переменных
Входная переменная X1.
Было выбрано три терма имеющих линейные вид (trimf):
- низкий (значение переменной низкое);
- средний (значение переменной среднее);
- высокий (значение переменной высокое).
Рис. 3. Функции принадлежности входной ЛП
Входная переменная X2
Рис. 4. Функции принадлежности входной ЛП
Используются те же три терма, что и в переменной X1.
1.3 Выходная переменная
Переменная y меняется от -50 до 50 и имеет пять термов: низкий, ниже среднего, средний, выше среднего, высокий. Термы также имеют нелинейный вид (gausmf).
Рис. 5. Функции принадлежности выходной ЛП
1.4 Правила
Нами было создано 7 правил для связи входных и выходных лингвистических переменных:
1. If (X1 is низкий) and (X2 is низкий) then (y is высокий) (1)
2. If (X1 is низкий) and (X2 is средний) then (y is низкий) (1)
3. If (X1 is низкий) and (X2 is высокий) then (y is высокий) (1)
4. If (X1 is средний) then (y is средний) (1)
5. If (X1 is высокий) and (X2 is низкий) then (y is вышеср) (1)
6. If (X1 is высокий) and (X2 is средний) then (y is нижеср) (1)
7. If (X1 is высокий) and (X2 is высокий) then (y is вышеср) (1)
Рис. 6. Графическое изображение правил
Метод дефаззификации - метод центра тяжести (centroid).
1.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
2.3 Выходная переменная
Пять линейных выражений, определяющих координату Y.
Рис. 13. Линейные выражения выходной переменной Y
2.4 Правила
Нами было создано шесть правил для связи входных и выходных переменных:
1. If (x1 is низкий) and (x2 is низкий) then (y is 50) (1)
2. If (x1 is низкий) and (x2 is средний) then (y is 4x1-x2) (1)
3. If (x1 is низкий) and (x2 is высокий) then (y is 50) (1)
4. If (x1 is средний) then (y is 0) (1)
5. 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 Настройка (обучение) системы типа Сугено
Алгоритм:
· Задать исходные данные;
· Загрузить исходные данные;
· Сгенерировать систему нечёткого вида;
· Обучить систему нечёткого вывода;
· Результаты.
Задание исходных данных
Зададим матрицу размером m x (n+1), m - объем выборки, n - число входных параметров. Итоговый размер матрицы M (225х3).
Реализация в среде MatLab:
[X2,X1]=meshgrid(X2,X1);
Y=y';
M=[X1(:) X2(:) Y(:)];
Загрузка исходных данных
Загрузим исходные данные с рабочей области (Load data From: workspace).
Генерация системы нечёткого вывода.
Способ разбиения входной области при формировании базы правил - суперактивная кластеризация (Sub. clustering.).
Данный способ учитывает особенности сетки - учитывает неравномерного распределение точек, чего не делает Grid partition.
Обучение.
Метод оптимизации: гибридный (комбинация методов наименьших квадратов и градиентного спуска).
Количество эпох - 60.
Продолжаем обучать систему до тех пор, пока ошибка (Training Error) примет минимальное значение.
Рис. 17. Минимальное значение ошибки системы
3.2 Результаты обучения
3.2.1 Вывод структуры системы нейро-нечёткого вывода
В результате обучения получили настроенную систему типа Сугено со следующими параметрами.
Рис. 18. Структура системы нейро-нечеткого вывода
3.2.2 Входные переменные
Входная переменная in1.
Представлена в виде семи термов имеющих нелинейный вид (gausmf):
- in1cluster1;
- in1cluster2;
- in1cluster3;
- in1cluster4;
- in1cluster5;
- in1cluster6;
- in1cluster7.
Рис. 18. Функции принадлежности входной переменной in1
Входная переменная in2.
Аналогично семь термов нелинейного вида:
- in1cluster1;
- in1cluster2;
- in1cluster3;
- in1cluster4;
- in1cluster5;
- in1cluster6;
- in1cluster7.
Рис. 19. Функции принадлежности входной переменной in2
3.2.3 Выходная переменная
Представлена в виде семи кластеров
Рис. 20. Представление выходной переменной out1
3.2.4 Правила
1. If (in1 is in1cluster1) and (in2 is in2cluster1) then (out1 is out1cluster1)
(1)
2. If (in1 is in1cluster2) and (in2 is in2cluster2) then (out1 is out1cluster2)
(1)
3. If (in1 is in1cluster3) and (in2 is in2cluster3) then (out1 is out1cluster3)
(1)
4. If (in1 is in1cluster4) and (in2 is in2cluster4) then (out1 is out1cluster4)
(1)
5. If (in1 is in1cluster5) and (in2 is in2cluster5) then (out1 is out1cluster5)
(1)
6. If (in1 is in1cluster6) and (in2 is in2cluster6) then (out1 is out1cluster6)
(1)
7. If (in1 is in1cluster7) and (in2 is in2cluster7) then (out1 is out1cluster7)
(1)
Рис. 21. Графическое изображение правил
Метод дефаззификации - взвешенное среднее (wtaver).
3.2.5 Анализ результатов
В результате была получена аппроксимированная поверхность. Сравним её с изначальной поверхностью, построенной стандартными средствами MatLab, без использования системы нейро-нечёткого вывода.
Рис. 21. Изначальная поверхность
Рис. 22. Аппроксимированная поверхность
Результаты применения системы нейро-нечеткого вывода намного превосходят результаты алгоритма Сугено и Мамдани. Так же преимущество данного метода в том, что нам не приходится задавать линейные выражения в констатирующей части, метод делает это за нас в процессе обучения.
Список использованных источников
1. Конспект лекций по курсу «Системы искусственного интеллекта»
2. С.Д. Штовба. Проектирование нечетких систем средствами MATLAB
Приложение 1
Name = mamdanyNE
Type = mamdani
NumInputs = 2
InLabels =
X1
X2
NumOutputs = 1
OutLabels =
y
NumRules = 7
AndMethod = min
OrMethod = max
ImpMethod = min
AggMethod = max
DefuzzMethod = centroid
1. Name mamdanyNE
2. Type mamdani
3. Inputs/Outputs [2 1]
4. NumInputMFs [3 3]
5. NumOutputMFs 5
6. NumRules 7
7. AndMethod min
8. OrMethod max
9. ImpMethod min
10. AggMethod max
11. DefuzzMethod centroid
12. InLabels X1
13. X2
14. OutLabels y
15. InRange [-7 3]
16. [-4.4 1.7]
17. OutRange [-50 50]
18. InMFLabels низкий
19. средний
20. высокий
21. низкий
22. средний
23. высокий
24. OutMFLabels низкий
25. нижеср
26. средний
27. вышеср
28. высокий
29. InMFTypes trimf
30. trimf
31. trimf
32. trimf
33. trimf
34. trimf
35. OutMFTypes trimf
36. trimf
37. trimf
38. trimf
39. trimf
40. InMFParams [-12.13 -6.99 -1.851 0]
41. [-5.693 -1.97 1.753 0]
42. [-1.151 3.05 7.251 0]
43. [-7.256 -4.4 -1.544 0]
44. [-3.98 -1.35 1.28 0]
45. [-0.995 1.7 4.395 0]
46. OutMFParams [-75.01 -50 -24.99 0]
47. [-50.01 -25 0.008189 0]
48. [-25.01 0 25.01 0]
49. [0.2564 25.26 50.27 0]
50. [24.99 50 75.01 0]
51. Rule Antecedent [1 1]
52. [1 2]
53. [1 3]
54. [2 0]
55. [3 1]
56. [3 2]
57. [3 3]
51. Rule Consequent 5
52. 1
53. 5
54. 3
55. 4
56. 2
57. 4
51. Rule Weight 1
52. 1
53. 1
54. 1
55. 1
56. 1
57. 1
51. Rule Connection 1
52. 1
53. 1
54. 1
55. 1
56. 1
57. 1
аппроксимация поверхность нечеткий система
Приложение 2
Name = surf
Type = sugeno
NumInputs = 2
InLabels =
x1
x2
NumOutputs = 1
OutLabels =
y
NumRules = 6
AndMethod = prod
OrMethod = probor
ImpMethod = prod
AggMethod = sum
DefuzzMethod = wtaver
1. Name surf
2. Type sugeno
3. Inputs/Outputs [2 1]
4. NumInputMFs [3 3]
5. NumOutputMFs 5
6. NumRules 6
7. AndMethod prod
8. OrMethod probor
9. ImpMethod prod
10. AggMethod sum
11. DefuzzMethod wtaver
12. InLabels x1
13. x2
14. OutLabels y
15. InRange [-7 3]
16. [-4.4 1.7]
17. OutRange [0 1]
18. InMFLabels низкий
19. средний
20. высокий
21. низкий
22. средний
23. высокий
24. OutMFLabels 50
25. 4x1-x2
26. 0
27. 2x1-2x2-3
28. 2x1+2x2+1
29. InMFTypes gaussmf
30. gaussmf
31. gaussmf
32. gaussmf
33. gaussmf
34. gaussmf
35. OutMFTypes constant
36. linear
37. constant
38. linear
39. linear
40. InMFParams [1.699 -7 0 0]
41. [1.699 -2 0 0]
42. [1.699 3 0 0]
43. [1.037 -4.435 0 0]
44. [1.036 -1.35 0 0]
45. [1.2 1.51 0 0]
46. OutMFParams [50 0 0 0]
47. [4 -1 0 0]
48. [0 0 0 0]
49. [2 -2 -3 0]
50. [2 2 1 0]
51. Rule Antecedent [1 1]
52. [1 2]
53. [1 3]
54. [2 0]
55. [3 1]
56. [3 3]
51. Rule Consequent 1
52. 2
53. 1
54. 3
55. 4
56. 5
51. Rule Weight 1
52. 1
53. 1
54. 1
55. 1
56. 1
51. Rule Connection 1
52. 1
53. 1
54. 1
55. 1
56. 1
Приложение 3
Name = fis4_er0
Type = sugeno
NumInputs = 2
InLabels =
in1
in2
NumOutputs = 1
OutLabels =
out1
NumRules = 7
AndMethod = prod
OrMethod = probor
ImpMethod = prod
AggMethod = sum
DefuzzMethod = wtaver
1. Name fis4_er0
2. Type sugeno
3. Inputs/Outputs [2 1]
4. NumInputMFs [7 7]
5. NumOutputMFs 7
6. NumRules 7
7. AndMethod prod
8. OrMethod probor
9. ImpMethod prod
10. AggMethod sum
11. DefuzzMethod wtaver
12. InLabels in1
13. in2
14. OutLabels out1
15. InRange [-7 3]
16. [-4.4 1.7]
17. OutRange [-48.79 48.17]
18. InMFLabels in1cluster1
19. in1cluster2
20. in1cluster3
21. in1cluster4
22. in1cluster5
23. in1cluster6
24. in1cluster7
25. in2cluster1
26. in2cluster2
27. in2cluster3
28. in2cluster4
29. in2cluster5
30. in2cluster6
31. in2cluster7
32. OutMFLabels out1cluster1
33. out1cluster2
34. out1cluster3
35. out1cluster4
36. out1cluster5
37. out1cluster6
38. out1cluster7
39. InMFTypes gaussmf
40. gaussmf
41. gaussmf
42. gaussmf
43. gaussmf
44. gaussmf
45. gaussmf
46. gaussmf
47. gaussmf
48. gaussmf
49. gaussmf
50. gaussmf
51. gaussmf
52. gaussmf
53. OutMFTypes linear
54. linear
55. linear
56. linear
57. linear
58. linear
59. linear
60. InMFParams [2.784 -0.7318 0 0]
61. [2.887 -3.755 0 0]
62. [2.577 -3.426 0 0]
63. [2.016 1.49 0 0]
64. [2.715 1.446 0 0]
65. [2.649 -5.386 0 0]
66. [2.682 -6.462 0 0]
67. [2.134 -0.7675 0 0]
68. [2.067 -0.3106 0 0]
69. [1.414 -3.127 0 0]
70. [0.9161 2.132 0 0]
71. [1.114 -3.898 0 0]
72. [1.307 -1.676 0 0]
73. [1.43 -3.996 0 0]
74. OutMFParams [-15.21 2.058 71.93 0]
75. [-23.68 14.89 -152.9 0]
76. [4.425 -42.1 -168.3 0]
77. [4.925 1.905 -8.083 0]
78. [6.883 3.891 5.334 0]
79. [39.92 -41.96 107.4 0]
80. [-11.51 70.24 288.9 0]
81. Rule Antecedent [1 1]
82. [2 2]
83. [3 3]
84. [4 4]
85. [5 5]
86. [6 6]
87. [7 7]
81. Rule Consequent 1
82. 2
83. 3
84. 4
85. 5
86. 6
87. 7
81. Rule Weight 1
82. 1
83. 1
84. 1
85. 1
86. 1
87. 1
81. Rule Connection 1
82. 1
83. 1
84. 1
85. 1
86. 1
87. 1
Размещено на Allbest.ru
Подобные документы
Начальное представление систем нечеткого вывода: логический вывод, база знаний. Алгоритм Мамдани в системах нечеткого вывода: принцип работы, формирование базы правил и входных переменных, агрегирование подусловий, активизация подзаключений и заключений.
курсовая работа [757,3 K], добавлен 24.06.2011Основные этапы систем нечеткого вывода. Правила нечетких продукций, используемые в них. Нечеткие лингвистические высказывания. Определение алгоритмов Цукамото, Ларсена, Сугено. Реализации нечеткого вывода Мамдани на примере работы уличного светофора.
курсовая работа [479,6 K], добавлен 14.07.2012Обзор методов и подходов решения поставленной задачи аппроксимации логического вывода экспертной системы. Разработка и описание метода сетевого оператора для решения данной задачи. Разработка алгоритма решения. Проведение вычислительного эксперимента.
дипломная работа [1,5 M], добавлен 23.02.2015Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.
курсовая работа [355,7 K], добавлен 21.09.2010Сущность интеллектуальных систем. Запись математического выражения в виде ориентированного графа. Особенности разработки генетического алгоритма для решения задачи аппроксимации логического вывода экспертной системы на основе метода сетевого оператора.
дипломная работа [1,0 M], добавлен 17.09.2013Задание термов лингвистических переменных. Выбор четких входных переменных. Степени истинности правил. Построение нечеткой базы знаний для задачи об эффективности работы предприятия, проверка ее на полноту. Нечеткий вывод для конкретных значений.
контрольная работа [170,2 K], добавлен 19.11.2014Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.
курсовая работа [1,5 M], добавлен 21.09.2010Характеристика методов нечеткого моделирования и изучение системы кластеризации в пакетах прикладных программ. Разработка и реализация алгоритма для оптимизации базы правил нечеткого классификатора с помощью генетического алгоритма аппроксимации функции.
дипломная работа [1,9 M], добавлен 21.06.2014Обзор существующих методов межпроцедурного анализа. Получение входных и выходных данных подпрограмм с помощью графа алгоритма. Описание входных и выходных данных подпрограммы в терминах фактических параметров. Определение параллелизма по графу алгоритма.
учебное пособие [77,5 K], добавлен 28.06.2009Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.
курсовая работа [275,8 K], добавлен 28.06.2008