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

Решение задачи аппроксимации поверхности при помощи системы нечёткого вывода. Определение входных и выходных переменных, их термы; алгоритм Сугено. Подбор функций принадлежности, построение базы правил, необходимых для связи входных и выходных переменных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.