Пример построения нечеткой аппроксимирующей системы
⇐ ПредыдущаяСтр 2 из 2
Пакеты программ, дающие возможность создавать и эксплуатировать нечеткие экспертные системы появились в начале 90-х годов. К настоящему времени известны более 100 таких пакетов. Наиболее популярны CubiCalc, FuziCalc, FuzzyTech, Fuzzy Logic Toolbox. Подробно остановимся на пакете Fuzzy Logic Toolbox. Пакет Fuzzy Logic Toolbox (пакет нечеткой логики) - это совокупность прикладных программ, позволяющих конструировать нечеткие экспертные и/или управляющие системы [1]. Данный пакет является одним из инструментальных средств широко известной и распространенной в нашей стране математической системы MATLAB. Основные возможности пакета:
· редактор нечеткой системы вывода Fuzzy Inference System Editor (FIS Editor или FIS-редактор) вместе со вспомогательными программами - редактором функций принадлежности (Membership Function Editor), редактором правил (Rule Editor), просмоторщиком правил (Rule Viewer) и просмоторщиком поверхности отклика (Surface Viewer);
Набор данных программ предоставляет пользователю максимальные удобства для создания, редактирования и использования различных систем нечеткого вывода.
Используя пакет нечеткой логики Fuzzy Toolbox системы MatLab, покажем, как можно построить нечеткую аппроксимирующую систему. Командой (функцией) Fuzzy из режима командной строки запускается основная интерфейсная программа пакета Fuzzy Logic – редактор нечеткой системы вывода (Fuzzy Inference System Editor, FIS Editor, FIS – редактор). Вид открывающегося при этом окна приведен на рисунке. Главное меню редактора содержит позиции: File – работа с файлами моделей (их создание, сохранение, считывание и печать); Edit – операции редактирования (добавление и исключение входных и выходных переменных); View – переход к дополнительному инструментарию. Попробуем сконструировать нечеткую систему, отображающую зависимость между переменными x и y, заданную с помощью таблицы (легко видеть, что представленные в таблице данные отражают зависимость y=x2).
Требуемые действия отобразим следующими пунктами. 1. В позиции меню File выбираем опцию New FIS -> Sugeno (новая система типа Sugeno), при этом в блоке, отображаемом белым квадратом, в верхней части окна редактора появится надпись Untitled2 (Sugeno). 2. Щелкнем левой кнопкой мыши по блоку, озаглавленному input1 (вход 1). Затем в правой части редактора в поле, озаглавленном Name (Имя), вместо input1 введем обозначение нашего аргумента, т.е. х. Обратим внимание, что если теперь сделать где-нибудь (вне блоков редактора) однократный щелчок мыши, то имя отмеченного блока изменится на х; то же достигается нажатием после ввода клавиши Enter. 3. Дважды щелкнем по этому блоку. Перед нами откроется окно редактора функций принадлежности – Membership Function Editor. Войдем в позицию меню Edit и выберем в нем опцию Remove All MFs (удалить все функции принадлежности). Далее снова войдем в позицию меню Edit и выберем в нем опцию Add MFs (добавить функции принадлежности). При этом появится диалоговое окно, позволяющее задать тип (MF Type) и количество функций принадлежности (Number Of MFs). Выберем гауссовы функции принадлежности (gaussmf), а их количество зададим равным пяти – по числу значений аргумента. Подтвердим ввод информации нажатием кнопки ОК, после чего произойдет возврат к окну редактора функций принадлежности.
4. В поле Range (Диапазон) установим диапазон изменения переменной х от -1 до 1. Щелкнем затем левой кнопкой мыши где-нибудь в поле редактора (или нажмем клавишу ввода Enter). Обратим внимание, что после этого произойдет соответствующее изменение диапазона в поле Display Range (Диапазон дисплея). 5. Обратимся к графикам заданных нами функций принадлежности, изображенным в верхней части окна редактора функций принадлежности. Заметим, что для успешного решения поставленной задачи необходимо, чтобы ординаты максимумов этих функций совпадали с заданными значениями аргумента х. Для левой, центральной и правой функции такое условие выполнено, но две другие необходимо «подвинуть» вдоль оси абсцисс. «Передвижка» делается весьма просто: подводим курсор к нужной кривой и щелкаем левой кнопкой мыши. Кривая выбирается, окрашиваясь в красный цвет, после чего с помощью курсора ее и можно подвинуть в нужную сторону (более точную установку можно провести, изменяя числовые значения в поле Params). Для выбранной кривой, кроме этого, в поле Name можно изменять имя. Проделаем требуемые перемещения кривых и зададим всем пяти кривым новые имена, например: · самой левой – bn; · следующей – n; · центральной – z; · следующей за ней справа – p; · самой правой – bp. Нажмем кнопку Close и выйдем из редактора функций принадлежности, возвратившись при этом в окно редактора нечеткой системы. 6. Сделаем однократный щелчок левой кнопкой мыши по голубому блоку, озаглавленному output1. В окошке Name заменим имя на у (как в пункте 2). 7. Дважды щелкнем по отмеченному блоку и перейдем к программе – редактору функций принадлежности. Войдем в позицию меню Edit и выберем в нем опцию Remove All MFs (удалить все функции принадлежности). Далее снова войдем в позицию меню Edit и выберем в нем опцию Add MFs (добавить функции принадлежности). Появляющееся диалоговое окно позволяет задать теперь в качестве функций принадлежности только линейные (linear) или постоянные (constant) – в зависимости от того, какой алгоритм Sugeno (0-го или 1-го порядка) мы выбираем. В рассматриваемой задаче необходимо выбрать постоянные функции принадлежности с общим числом 4. Подтвердим введенные данные нажатием кнопки ОК, после чего произойдет возврат в окно редактора функций принадлежности.
8. Обратим внимание, что здесь диапазон изменения (Range), устанавливаемый по умолчанию – [0, 1], менять не нужно. Изменим лишь имена функций принадлежности, например задав их как соответствующие числовые значения у, т.е. 0, 0.16, 0.36, 1; одновременно эти же числовые значения введем в поле Params. Затем закроем окно, нажатием кнопки Close. 9. Дважды щелкнем левой кнопкой мыши по среднему (белому) блоку, при этом раскроется окно еще одной программы – редактора правил (Rule Editor). Введем соответствующие правила. При вводе каждого правила необходимо обозначать соответствие между каждой функцией принадлежности аргумента х и числовым значением у. Кривая, обозначенная нами bn, соответствует х=-1, т.е. у=1. Выберем, поэтому, в левом поле (с заголовком х is) bn, а в правом 1 и нажмем кнопку Add Rule (Добавить правило). Введенное правило появится в окне правил и будет представлять собой запись: 1. If (x is bn) then (y is 1) (1). Аналогично поступим для всех других значений х, в результате чего сформируется набор из 5 правил. 10. Закроем окно редактора правил и возвратимся в окно FIS – редактора. Построение системы закончено и можно начать эксперименты по ее исследованию. Предварительно сохраним на диске (используя пункты меню File/Export->To Disk…) созданную систему под каким либо именем. 11. Выберем позицию меню View->Rules (Просмотр правил). При этом откроется окно еще одной программы – просмотра правил (Rule Viewer). 12. В правой части окна в графической форме представлены функции принадлежности аргумента х, в левой – переменной выхода у с пояснением механизма принятия решения. Красная вертикальная черта, пересекающая графики в левой части окна, которую можно перемещать с помощью курсора, позволяет изменять значения переменной входа (это же можно сделать, задавая числовые значения в поле Input), при этом соответственно изменяются значения у в правой части окна. Зададим, например, х=0,5 в поле Input и нажмем затем клавишу ввода Enter. Значение у сразу изменится и станет равным 0,201. Таким образом, с помощью построенной модели и окна просмотра правил можно решать задачу интерполяции, т.е. задачу, решение которой и требовалось найти. Изменение аргумента путем перемещения красной вертикальной линии очень наглядно демонстрирует, как система определяет значения выхода.
13. Закроем окно просмотра правил и выбором пункта меню View/Surface перейдем к окну просмотра поверхности отклика (выхода), в нашем случае – к просмотру кривой у(х). В заключение рассмотрения примера отметим, что с помощью выше указанных программ – редакторов на любом этапе проектирования нечеткой модели в нее можно внести необходимые коррективы, вплоть до задания какой-либо особенной пользовательской функции принадлежности. Из опций, устанавливаемых в FIS-редакторе по умолчанию при использовании алгоритма Sugeno, можно отметить: · Логический вывод организуется с помощью операций умножения (prod); · Композиция – с помощью операции логической суммы (вероятностного ИЛИ, probor); · Приведение к четкости – дискретным вариантом центроидного метода (взвешенным средним, wtaver). Используя соответствующие поля в левой нижней части окна FIS-редактора, данные опции можно, при желании, изменить.
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ 1. Что такое нечеткое множество? 2. Что такое нечеткая логика? 3. Что такое нечеткая переменная? 4. Что такое лингвистическая переменная? 5. Что такое функция принадлежности? 6. Что является основой для проведения операции нечеткого логического вывода? 7. Что является результатом нечеткого вывода? 8. Какие разработаны модели нечеткого вывода? 9. В чем заключается алгоритм Sugeno?
ГЛОССАРИЙ · Нечеткое множество(fuzzy sets)- множество упорядоченных пар A ={ m A(х)/ х }, где m A(х) - характеристическая функция (или просто функция принадлежности), принимающая значения из некоторого упорядоченного множества M =[0,1]. Функция принадлежности указывает степень (уровень) принадлежности элемента x подмножеству A. Если M ={0,1}, то нечеткое подмножество A может рассматриваться как обычное или четкое множество. · Нечеткая логика (fuzzy logic)-раздел математики, представляющий собой обобщение классической логики и теории множеств. В основе нечеткой логики лежит описание объектов и процессов с помощью нечетких множеств.
· Характеристическая функция нечеткого множества (мembership function) указывает на степень (уровень) принадлежности некоторого элемента x множеству A. Нечеткое множество отличается от обычного тем, что для любого его элемента нельзя однозначно утверждать, что он принадлежит или не принадлежит некоторому подмножеству, а говорят, что принадлежит, но в той или иной степени. · Лингвистическая переменная(Linguistic variable)-переменная, которая может принимать значения понятий (фраз) естественного языка и используется при описании объектов и явлений с помощью нечетких множеств. Значения, которые принимает сама лингвистическая переменная, в свою очередь являются нечеткими переменными и принимают значения из некоторого диапазона числовых значений. · Фазификация- введение нечеткости в нечеткий логический вывод. · Дефазификация- композиция и приведение к четкости в нечетком логическом выводе.
1. Нечеткая логика (fuzzy logic)-раздел математики, представляющий собой обобщение классической логики и теории множеств. В основе нечеткой логики лежит описание объектов и процессов с помощью нечетких множеств. 2. Характеристическая функция нечеткого множества (мembership function) указывает на степень (уровень) принадлежности некоторого элемента x множеству A. Нечеткое множество отличается от обычного тем, что для любого его элемента нельзя однозначно утверждать, что он принадлежит или не принадлежит некоторому подмножеству, а говорят, что принадлежит, но в той или иной степени. 3. Лингвистическая переменная(Linguistic variable)-переменная, которая может принимать значения понятий (фраз) естественного языка и используется при описании объектов и явлений с помощью нечетких множеств. Значения, которые принимает сама лингвистическая переменная, в свою очередь являются нечеткими переменными и принимают значения из некоторого диапазона числовых значений. 4. Фазификация- введение нечеткости в нечеткий логический вывод. 5. Дефазификация- композиция и приведение к четкости в нечетком логическом выводе. 6. Метод центра тяжести для одноточечных множеств- метод дефазификации выходных переменных.
7. Пакет Fuzzy Logic Toolbox (пакет нечеткой логики) - это совокупность прикладных программ, позволяющих конструировать нечеткие экспертные и/или управляющие системы, входящий в состав математической системы MATLAB. Нечеткое множество(fuzzy sets)- множество упорядоченных пар A ={ m A(х)/ х }, где m A(х) - характеристическая функция (или просто функция принадлежности), принимающая значения из некоторого упорядоченного множества M =[0,1]. Функция принадлежности указывает степень (уровень) принадлежности элемента x подмножеству A. Если M ={0,1}, то нечеткое подмножество A может рассматриваться как обычное или четкое множество.
7. ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ
Используя пакет нечеткой логики Fuzzy Toolbox системы MatLab, построить график функции, используя полиномиальную интерполяцию: 1. Первой степени; 2. Второй степени; 3. Третьей степени. Функция y=f(x) задана таблицей значений:
Для контрольных значений аргумента x1=12; x2=26; x3=42 найти значения функции. Варианты заданий на лабораторную работу:
В отчете по лабораторной работе должны быть представлены следующие разделы: 1. Постановка задачи. 2. Описание пакета Fuzzy Toolbox. 3. Руководство пользователя. 4. Результаты работы. 5. Выводы.
СПИСОК ЛИТЕРАТУРЫ
1. Леоленков А.В. Нечеткое моделирование в среде MATLAB и fuzzyTECH. – СПб., 2007. 2. Потапов Д.К. Неклассические логики: Учебное пособие. – СПб.: СПБГУ, 2006. – 108 с.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|