Автор: Пользователь скрыл имя, 24 Января 2012 в 19:30, лабораторная работа
Цель работы:
Ознакомиться с принципами построения нечетких систем с помощью ППП Fuzzy Logic Toolbox среды Matlab;
Создать систему типа Мамдани
Цель работы
Ознакомиться с принципами построения нечетких систем с помощью ППП Fuzzy Logic Toolbox среды Matlab;
Создать систему типа Мамдани
Перечень используемого оборудования
Персональный компьютер
Программное обеспечение Matlab
Контрольные вопросы
findcluster
- модуль кластеризации данных
с использованием алгоритма
fuzzy - основной редактор FIS. Позволяет создавать и редактировать FIS двух типов - Мамдани и Сугено, обеспечивает визуализацию процедуры нечеткого логического вывода и поверхностей “входы-выход”. Для этого модуль fuzzy вызывает следующие GUI-модули: mfedit, ruleedit, ruleview и surfview
Блоки для пакета Simulink
Третья категория программных инструментов пакета Fuzzy Logic Toolbox содержит следующие модули, которые обеспечивают интеграцию систем нечеткого логического вывода с пакетом Simulink:
fuzblock - модули контроллеров на основе нечеткого логического вывода
sffis - функция выполнения нечеткого логического вывода, оптимизированная под Simulink
Демонстрационные примеры
Четвертая категория программных инструментов пакета Fuzzy Logic Toolbox содержит следующие демонстрационные примеры:
defuzzdm
- дефаззификация различными
fcmdemo
- 2D-кластеризация с
fuzdemos - список всех демонстрационных примеров Fuzzy Logic Toolbox
invkine
- инверсная кинематика робота-манипулятора
Такаги и Суджено предложили использовать IF-THEN-правила:
L(p): IF x1 есть F1p и . . . и xn есть Fnp THEN yp = C0p+C1p x1+...+ Cnp xn,
где Fip - нечеткие множества;
Сi - параметры, принимающие реальные значения;
yp
- выход системы,
Таким образом, они рассматривали правила, у которых часть IF является нечеткой, но "четкой" является часть THEN, и выход является линейной комбинацией переменных на входе. Выход нечеткой системы Такаги-Суджено есть взвешенное среднее:
где вес wp вычисляется как:
Конфигурация нечеткой системы Такаги-Суджено
представлена на рисунке 14.
Преимуществом систем нечеткой логики такого типа является то, что они описываются компактной системой уравнений. Для них могут быть легко разработаны методы оценки параметров и выбора порядка системы М.
Слабое место таких систем нечеткой логики заключается в том, что часть THEN в IF-THEN-правиле не является нечеткой, что не позволяет естественным образом получать нечеткие правила от человека-эксперта.
Редактор функций принадлежности – (Membership Function Editor) редактор предназначен для задания следующей информации о терм-множествах входных и выходных переменных:
количество термов;
наименования термов;
тип и параметры функций принадлежности, которые необходимы для представления лингвистических термов в виде нечетких множеств.
Редактор
базы знаний (Rule Editor) предназначен для
формирования и модификации нечетких
правил.
Для загрузки основного fis-редактора было напечатано слово fuzzy в командной строке для вызова основного редактора Fuzzy inference system. Выбираем тип системы. Для этого в меню File выбираем в подменю New fis… команду Sugeno.
Добавляем вторую входную переменную. Для этого в меню Edit выбираем команду Add input.
Переименовываем входные переменные (Рисунок 14).
Рисунок 14. Переименование входных и выходных переменных
Задаем новое имя системы FirstSugeno.
Переходим в редактор функций принадлежности. Для этого нажимаем на блок x1 (Рисунок 15).
Рисунок 15. Редактор функций принадлежности
Задаем
диапазон изменения переменной x1. Для
этого вводим [7 3] в поле Range (Рисунок 16).
Рисунок 16. Задавание диапазона переменной х1
Задаем функции принадлежности переменной x1. Для лингвистической оценки этой переменной будем использовать 3 терма с треугольными функциями принадлежности, которые установлены по умолчанию. Зададим наименования термов переменной x1. Печатаем наименование терма Низкий в поле Name. Вводим наименование терма Средний в поле Name для второго терма. Ввести наименование терма Высокий в поле Name. В результате получить изображенное графическое окно (Рисунок 17).
Рисунок 17. Задавание терма переменной х1
Зададим функции принадлежности переменной x2. Для лингвистической оценки этой переменной будем использовать 3 терма с треугольными функциями принадлежности, которые установлены по умолчанию. Для этого активизируем переменную x2 с помощью щелчка левой кнопки мыши на блоке x2. Задаем диапазон изменения переменной x2 [-4.4 1.7] в поле Range. По аналогии с предыдущим шагом задать следующие наименования термов переменной x2: Низкий, Средний, Высокий (Рисунок 18).
Рисунок 18. Наименования термов
Задаем линейные зависимости между входами и выходом, приведенные в базе знаний. Для этого активизируем переменную y с помощью щелчка левой кнопки мыши на блоке y. В правом верхнем угле появилось обозначение трех функций принадлежности, каждая из которых соответствует одной линейной зависимости между входами и выходам. В базе знаний, указаны 5 различных зависимостей: y=50; y=4x1-x2; y=2x1+2x2+1; y=8x1+2x2+8; y=0. Поэтому добавляем еще две зависимости путем выбора команды Add Mfs… меню Edit. В появившимся диалоговом окне в поле Number of MFs выбираем 2 и нажимаем кнопку OK (Рисунок 19).
Рисунок 19. Добавление функций
Задаем наименования и параметры линейных зависимостей. Для этого сделать один щелчок левой кнопкой мыши по наименованию первой зависимости mf1. Затем печатаем наименование зависимости, например 50, в поле Name, и устанавливаем тип зависимости – константа путем выбора опции Сonstant в меню Type. После этого вводим значение параметра – 50 в поле Params (Рисунок 20).
Рисунок 20. Наименования и параметры линейных зависимостей
Аналогично для второй зависимости mf2 вводим наименование зависимости, например 8+8x1+2x2. Затем указываем линейный тип зависимости путем выбора опции Linear в меню Type и вводим параметры зависимости 8 2 8 в поле Params. Для линейной зависимости порядок параметров следующий: первый параметр – коэффициент при первой переменной, второй – при второй и т.д., и последний параметр – свободный член зависимости.
Аналогично для третьей зависимости mf3 вводим наименование зависимости, например 1+2x1+2x2, указываем линейный тип зависимости и вводим параметры зависимости 2 2 1.
Для четвертой зависимости mf4 вводим наименование зависимости, например 4x1-x2, укажем линейный тип зависимости и вводим параметры зависимости 4 -1 0.
Для пятой зависимости mf5 вводим наименование зависимости, например 0, укажем тип зависимости - константа и введем параметр зависимости 0 (Рисунок 21).
Рисунок 21. Ввод зависимостей
Переходим в редактор базы знаний RuleEditor. Для этого выбираем в меню Edit команду Edit rules.... и вводим правила базы знаний. Для ввода правила необходимо выбрать соответствующую комбинацию термов и зависимостей и нажать кнопку Add rule (Рисунок 22).
Рисунок 22. Переход в редактор базы знаний
В окне редактора базы знаний вводим шесть правил (Рисунок 23).
Рисунок 23. Ввод правил
Заходим командой View в меню Rules.
В поле Input указываются значения входных переменных, для которых выполняется логический вывод.
Вывести поверхность “входы-выход”, соответствующая синтезированной нечеткой системе. Для вывода этого окна необходимо использовать команду View surface... меню View.
Рисунок 24 – Значения входных переменных
Рисунок 25 - Поверхность “входы-выход”
Можно сделать вывод, что нечеткие правила достаточно хорошо описывают сложную нелинейную зависимость (рисунок 24). Вывести поверхность “входы-выход”, соответствующая синтезированной нечеткой системе. Для вывода этого окна необходимо использовать команду View surface... меню View. Нечеткие правила достаточно хорошо описывают сложную нелинейную зависимость (рисунок 25).
Список литературы