Лабораторная работа №3.
Нечеткий логический вывод – это процесс формирования нечетких заключений о выходном сигнале на основе нечетких условий для входных сигналов с помощью нечеткой базы правил и логических операций над нечеткими множествами.
Нечеткий логический вывод занимает центральное место в нечеткой логике и системах нечеткого управления. В процессе нечеткого вывода выходное значение системы рассчитывается на основе набора правил в виде логического анализа утверждений. При построении системы нечеткого вывода производится переход от параметров системы к логическим утверждениям как для входных, так и для выходных величин.
В данной лабораторной работе будет разработана система нечеткого вывода для моделирования нелинейной зависимости.
В теории нечетких множеств, помимо переменных численного типа, существуют лингвистические переменные с приписываемым им значениями. Множество всех возможных значений, которые может принимать лингвистическая переменная, называется терм-множеством. Каждый нечеткий терм определяется функцией принадлежности, характеризующей соответствующее терму нечеткое множество. Например, пусть переменная x обозначает температуру (x = «температура»). Для данной лингвистической переменной можно определить нечеткие множества «холодная», «нормальная», «горячая», характеризуемые функциями принадлежности μхолодная(x), μнорм(x), μгорячая(x).
Приписывание единственного значения функции принадлежности, описывающей многомерное условие, называется агрегированием предпосылки. Каждой импликации A → B, определенной выражением, можно приписать единственное значение функции принадлежности μA → B(x, y).
Рисунок 1. Структура нечеткой системы с фазификатором и дефазификатором.
В данной лабораторной работе необходимо разработать систему нечеткого вывода для моделирования нелинейной зависимости вида:
в области x ∈ [0, 1], y ∈ [0, 1], где x, y – входные переменные, z – выходная переменная.Рисунок 2. Окно проекта с установленными блоками.
Рисунок 3. Окно редактора блока «Язык программирования».
Рисунок 4. Окно «Свойства» блока «Язык программирования» с выделенным свойством, которое необходимо изменить.
Рисунок 5. Окно проекта с измененным размером блока «Язык программирования».
Рисунок 6. Окно проекта с блоками, соединенными линиями связи.
Рисунок 7. Окно «Свойства графика» блока «Трехмерный график» с выделенными свойствами, которые необходимо изменить.
Рисунок 8. Окно «Свойства графика» блока «Трехмерный график», вкладка «Общие», с выделенным свойством, которое необходимо изменить.
Сохранить изменения и закрыть окно нажатием кнопки «Ok».
Рисунок 9. Трехмерный график заданной зависимости.
Разработка модели для построения трехмерного графика заданной нелинейной зависимости завершена, требуется сохранить проект.
Перед разработкой модели системы нечеткого вывода необходимо задать терм-множества для каждой переменной и на основе полученного графика зависимости (Рисунок 9) сформировать нечеткие правила вывода.
Функции принадлежности, определяющие нечеткие множества для входных переменных будут задаваться как функции принадлежности Гаусса, но, в отличие от Лабораторной работы №1, три функции принадлежности будут задаваться с помощью одного блока фазифакации, а не в трех отдельных блоках функций принадлежности. Функции принадлежности для выходной переменной будут задаваться как треугольные также с помощью одного блока дефазификации (нечеткого вывода).
Рисунок 10. Рабочая область проекта с установленными блоками и заданными подписями.
Перед соединением блоков необходимо изменить количество портов блоков «Язык программирования», «Демультиплексор» и «Мультиплексор».
С помощью блока «Язык программирования» будут формироваться два входных воздействия таким образом, чтобы значения покрывали всю заданную область x ∈ [0, 1], y ∈ [0, 1], соответственно, блок «Язык программирования» должен иметь два выходных порта.
Рисунок 11. Рабочая область проекта с выделенной кнопкой «Скрипт».
Рисунок 12. Окно «Скрипт страницы».
Рисунок 13. Окно редактора блока «Язык программирования».
Рисунок 14. Окно проекта с измененным размером блока «Язык программирования».
Далее требуется изменить количество выходных и входных портов блоков «Демультиплексор» и «Мультиплексор» в соответствии с заданным количеством термов. Номера выходных и входных портов будут соответствовать заданным лингвистическим термам. Так, первому выходному порту верхнего блока «Демультиплексор» будет соответствовать лингвистический терм «низкий» переменной «x», а третьему входному порту блока «Мультиплексор» – терм «высокий» переменной «z».
Рисунок 15. Окно «Свойства» блока «Демультиплексор».
После закрытия окна и сохранения свойств появится третий выходной порт блока «Демультиплексор». Необходимо повторить действие для второго блока «Демультиплексор».
Для изменения количества входных портов блока «Мультиплексор» необходимо открыть окно «Свойства» блока «Мультиплексор» и задать значение свойства «Количество портов» равным «3». Блок «Мультиплексор» предназначен для поочередной передачи на один выходной порт трех входных сигналов. После закрытия окна и сохранения свойств у блока «Мультиплексор» будет три входных порта.
Рисунок 16. Окно проекта с соединенными блоками.
Теперь схема соответствует заданной базе правил.
Рисунок 17. Окно «Свойства» блока «НЛ – Фазификация – Фазификация Гаусса» с подписью «x».
Необходимо повторить действие для блока «НЛ – Фазификация – Фазификация Гаусса» с подписью «y».
Рисунок 18. Окно «Свойства» блока «НЛ – Нечеткий вывод – Треугольная функция».
Для того чтобы в блоке «Язык программирования» номер текущего шага являлся целочисленной величиной, необходимо увеличить входной сигнал в 1000 раз (значение, обратное размеру шага интегрирования), задав соответствующий коэффициент усиления. Для этого необходимо открыть окно «Свойства» блока «Усилитель» и задать значение свойства «Коэффициент усиления» равным «1000».
Рисунок 19. Окно «Свойства графика» блока «Трехмерный график» с выделенными свойствами, которые необходимо изменить.
Сохранить изменения и закрыть окно нажатием кнопки «Ok».
Рисунок 20. Окно проекта с выделенной кнопкой «Параметры расчета».
Рисунок 21. Окно «Параметры проекта» с выделенным параметром, который необходимо изменить.
Закрыть окно «Параметры расчета», при этом внесенные изменения сохраняются.
Рисунок 22. Трехмерный график полученной зависимости.
Полученный график качественно соответствует графику, построенному для функции, заданной по аналитическому представлению (Рисунок 9), что позволяет сделать вывод о хорошем качестве описания нечеткими правилами моделируемой нелинейной зависимости. Повышение качества описания зависимости нечеткими правилами возможно добиться добавлением правил нечеткого логического вывода и при необходимости дополнением терм-множеств как для входных, так и для выходной переменных, например, термами «ниже среднего» и «выше среднего».
В ходе данной лабораторной работы была разработана модель для описания нелинейной зависимости с помощью правил нечеткого логического вывода. В результате исследования были построены графики нелинейной функции и ее аппроксимации системой нечеткого вывода. В результате сравнения полученных графиков установлено, что графики качественно совпадают, что показывает хорошее качество описания нечеткими правилами моделируемой нелинейной зависимости.