- •Составители: с. П. Соколова, е. А. Кузьмина
- •Содержание
- •Лабораторная работа № 1. Работа в системе matlab
- •1. Методические указания
- •1. Структура и возможности пакета
- •2. Структура данных системы нечеткого вывода
- •3. Разработка нечеткой системы типа Мамдани
- •3.1. Процесс нечеткого вывода
- •3.2. Алгоритм Мамдани (Mamdani)
- •4. Порядок выполнения работы
- •Лабораторная работа № 3. Нечеткая модель оценивания финансовой состоятельности клиентов
- •1.1. Содержательная постановка задачи оценивания финансовой состоятельности клиентов
- •1.2. Нечеткая модель оценивания финансовой состоятельности клиентов
- •1.3. Фаззификация входных и выходных переменных
- •1.4. Формирование базы правил систем нечеткого вывода
- •1.5. Построение нечеткой модели средствами Fuzzy Logic Toolbox и анализ полученных результатов
- •Лабораторная работа № 4. Нечеткая система для анализа и прогнозирования валютных цен на финансовом рынке
- •2. Порядок выполнения работы
- •3. Оформление отчета
- •4. Рекомендованная литература
- •Лабораторная работа № 5. Работа с точечными, многомерными данными в системе matlab
- •1. Деловая графика в системе matlab
- •2. Основные действия над точечными матрицами в системе matlab
- •3. Основные действия над интервальными матрицами
- •4. Многомерные матрицы (массивы)
- •5. Сингулярное разложение многомерной матрицы
- •6. Порядок выполнения работы
- •7. Оформление отчета
- •8. Контрольные вопросы
- •9. Рекомендованная литература
- •Лабораторная работа № 6. Построение интеллектуального модуля симулятора для анализа динамики фондового рынка
- •1. Технический анализ в оценке динамики фондового рынка
- •2. Симулятор для оценивания динамики фондового рынка
- •2.1. Формирование обучающих классов
- •2.2. Формирование таблицы индикаторов на основе «японские свечи»
- •2.3. Формирование многомерной таблицы с различными периодами наблюдений
- •. Формирование многомерной интервальной матрицы индикаторов
- •3. Порядок выполнения работы:
- •4. Контрольные вопросы
- •5. Рекомендованная литература
3. Разработка нечеткой системы типа Мамдани
3.1. Процесс нечеткого вывода
Процесс нечеткого вывода является алгоритмом получения нечетких знаний на основе нечетких условий и включает в себя ряд основных этапов [3]:
Рисунок 5. Диаграмма деятельности процесса нечеткого вывода в форме диаграммы деятельности языка UML
Перечисленные этапы нечеткого вывода могут быть реализованы неоднозначным образом, поскольку включают в себя отдельные специфицируемые параметры. Было предложено несколько алгоритмов нечеткого вывода, определяющих выбор конкретных вариантов параметров.
Рассмотрим один из первых предложенных алгоритмов.
3.2. Алгоритм Мамдани (Mamdani)
Алгоритм Мамдани является одним из первых, который нашел применение в системах нечеткого вывода. Он был предложен в 1975 г. английским математиком Е. Мамдани (Ebrahim Mamdani) в качестве метода для управления паровым двигателем. Формально алгоритм Мамдани может быть определен следующим образом:
Формирование базы правил систем нечеткого вывода.
Фаззификация входных переменных.
Агрегирование подусловий в нечетких правилах продукций.
Дефаззификация выходных переменных.
4. Порядок выполнения работы
Рассмотрим основные этапы проектирования систем типа Мамдани на примере создания системы нечеткого логического вывода, моделирующей зависимость y=x12·sin(x2-1), x1[-7;3], x2[-4.4;1.7]. Проектирование системы нечеткого логического вывода будем проводить на основе графического изображения указанной зависимости. Для построения трехмерного изображения функции y=x12·sin(x2-1) в области x1[-7;3], x2[-4.4;1.7] составим следующую программу:
%Построение графика функции y=x1^2*sin(x2-1) %в области x1є[-7,3] и x2є[-4.4,1.7]. n=15; %количество точек дискретизации x1=-7:10/(n-1):3; x2=-4.4:6.1/(n-1):1.7; y=zeros(n,n); for j=1:n y(j,:)=x1.^2*sin(x2(j)-1); end surf(x1,x2,y) xlabel('x1') ylabel('x2') zlabel('y') title('Искомая зависимость’);
Поверхности, представленной на рис. 6, поставим в соответствие следующие семь нечетких правил:
1) ЕСЛИ х1, = «низкий» И х2 = «низкий», ТО у = «высокий»;
2) ЕСЛИ х1, = «низкий» И х2 = «средний», ТО у = «низкий»;
3) ЕСЛИ х1, = «низкий» И х2= «высокий», ТО у = «высокий»;
4) ЕСЛИ х1, = «средний», ТО у = «средний»;
5) ЕСЛИ х1, = «высокий» И х2 = «низкий», ТО у = «выше среднего»;
6) ЕСЛИ х1, = «высокий» И х2 = «средний», ТО у = «ниже среднего»;
7) ЕСЛИ х1, = «высокий» И х2 = «высокий», ТО y = «выше среднего».
В результате выполнения программы получим графическое изображение, приведенное на рис. 6.
Рисунок 6. График функции y=x12·sin(x2-1).
Проектирование системы нечеткого логического вывода, соответствующей приведенному графику, состоит в выполнении следующей последовательности шагов.
Шаг 1. Для загрузки основного fis-редактора напечатаем слова fuzzy в командной строке. После этого откроется нового графическое окно, представленное на рис. 7.
Рисунок 7. Окно редактора FIS-Editor.
Шаг 2. Добавим вторую входную переменную. Для этого в меню Edit выбираем команду Add input.
Шаг 3. Переименуем первую входную переменную. Для этого сделаем один щелчок левой кнопкой мыши на блоке input1, введем новое обозначение x1 в поле редактирования имени текущей переменной и нажмем <Enter>.
Шаг 4. Переименуем вторую входную переменную. Для этого сделаем один щелчок левой кнопкой мыши на блоке input2, введем новое обозначение x2 в поле редактирования имени текущей переменной и нажмем <Enter>.
Шаг 5. Переименуем выходную переменную. Для этого сделаем один щелчок левой кнопкой мыши на блоке output1, введем новое обозначение y в поле редактирования имени текущей переменной и нажмем <Enter>.
Шаг 6. Зададим имя системы. Для этого в меню File выбираем в подменю Export команду To disk и вводим имя файла, например, first.
Шаг 7. Перейдем в редактор функций принадлежности. Для этого сделаем двойной щелчок левой кнопкой мыши на блоке x1.
Шаг 8. Зададим диапазон изменения переменной x1. Для этого напечатаем -7 3 в поле Range (см. рис. 10) и нажмем <Enter>.
Шаг 9. Зададим функции принадлежности переменной x1. Для лингвистической оценки этой переменной будем использовать 3 терма с треугольными функциями принадлежности. Для этого в меню Edit выберем команду Add MFs... В результате появиться диалоговое окно выбора типа и количества функций принадлежностей. По умолчанию это 3 терма с треугольными функциями принадлежности. Поэтому просто нажимаем <Enter>.
Шаг 10. Зададим наименования термов переменной x1. Для этого делаем один щелчок левой кнопкой мыши по графику первой функции принадлежности (см. рис. 8). Затем вводим наименование терма, например, Низкий, в поле Name и нажмем <Enter>. Делаем один щелчок левой кнопкой мыши по графику второй функции принадлежности и вводим наименование терма, например, Средний, в поле Name и нажмем <Enter>. Еще раз делаем один щелчок левой кнопкой мыши по графику третьей функции принадлежности и вводим наименование терма, например, Высокий, в поле Name и нажмем <Enter>. В результате получим графическое окно, изображенное на рис. 8.
Рисунок 8. Функции принадлежности переменной x1.
Шаг 11. Зададим функции принадлежности переменной x2. Для лингвистической оценки этой переменной будем использовать 5 термов с гауссовскими функциями принадлежности. Для этого активизируем переменную x2 с помощью щелчка левой кнопки мыши на блоке x2. Зададим диапазон изменения переменной x2. Для этого напечатаем ‑ 4.4 1.7 в поле Range (см. рис. 9) и нажмем <Enter>. Затем в меню Edit выберем команду Add MFs.... В появившимся диалоговом окне выбираем тип функции принадлежности gaussmf в поле MF type и 5 термов в поле Number of MFs. После этого нажимаем <Enter>.
Рисунок 9. Функции принадлежности переменной x2
Шаг 12. По аналогии с шагом 10 зададим следующие наименования термов переменной x2: Низкий, Ниже среднего, Средний, Выше среднего, Высокий. В результате получим графическое окно, изображенное на рис. 9.
Шаг 13. Зададим функции принадлежности переменной y. Для лингвистической оценки этой переменной будем использовать 5 термов с треугольными функциями принадлежности. Для этого активизируем переменную y с помощью щелчка левой кнопки мыши на блоке y. Зададим диапазон изменения переменной y. Для этого напечатаем -50 50 в поле Range (см. рис. 9) и нажмем <Enter>.Затем в меню Edit выберем команду Add MFs.... В появившемся диалоговом окне выбираем 5 термов в поле Number of MFs. После этого нажимаем <Enter>.
Рисунок 10. Функции принадлежности переменной y.
Шаг 14. По аналогии с шагом 10 зададим следующие наименования термов переменной y: Низкий, Ниже среднего, Средний, Выше среднего, Высокий. В результате получим графическое окно, изображенное на рис. 10.
Шаг 15. Перейдем в редактор базы знаний RuleEditor. Для этого выберем в меню Edit выберем команду Edit rules....
Шаг 16. Для ввода правила выбираем в меню соответствующую комбинацию термов и нажимаем кнопку Add rule. На рис. 11 изображено окно редактора базы знаний после ввода всех семи правил. В конце правил в скобках указаны весовые коэффициенты.
Рисунок 11. База знаний в RuleEditor
Шаг 17. Сохраним созданную систему. Для этого в меню File выбираем в подменю Export команду To disk.
На рис. 12 приведено окно визуализации нечеткого логического вывода. Это окно активизируется командой View rules... меню View. В поле Input указываются значения входных переменных, для которых выполняется логический вывод.
Рисунок 12. Визуализация нечеткого логического вывода в RuleViewer.
На рис. 13 приведена поверхность “входы-выход”, соответствующая синтезированной нечеткой системе. Для вывода этого окна необходимо использовать команду View surface... меню View. Сравнивая поверхности на рис. 6 и на рис. 13, можно сделать вывод, что нечеткие правила достаточно хорошо описывают сложную нелинейную зависимость.
Рисунок 13. Поверхность “входы-выход” в окне SurfaceViewer.
5. Оформление отчета
Отчет по лабораторной работе выполняется в рукописном виде. Отчет должен содержать:
• структуру системы Мамдани;
• состав нечеткой базы знаний;
• искомую поверхность «входы ‑ выход» в пространстве координат.
6. Контрольные вопросы
• Структура нечетких правил в нечеткой базе знаний.
• Состав и назначение системы нечеткого вывода.
• Сущность методов дефаззификации.
• Выражения функций принадлежности для нечетких логических операций.
• Операции над нечеткими числами и их свойства.
7. Рекомендованная литература
3. Штовба С. Д. Проектирование нечетких систем средствами MATLAB. М.: Горячая линия ‑ Телеком, 2007. 288с.
Рутковский Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. М.: Горячая линия – Телеком, 2004.
