Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример построения нечеткой аппроксимирующей системы




 

Пакеты программ, дающие возможность создавать и эксплуатировать нечеткие экспертные системы появились в начале 90-х годов. К настоящему времени известны более 100 таких пакетов. Наиболее популярны CubiCalc, FuziCalc, FuzzyTech, Fuzzy Logic Toolbox. Подробно остановимся на пакете Fuzzy Logic Toolbox.

Пакет Fuzzy Logic Toolbox (пакет нечеткой логики) - это совокупность прикладных программ, позволяющих конструировать нечеткие экспертные и/или управляющие системы [1]. Данный пакет является одним из инструментальных средств широко известной и распространенной в нашей стране математической системы MATLAB. Основные возможности пакета:

  • Построение систем нечеткого вывода (экспертных систем, регуляторов, аппроксиматоров зависимостей)
  • Построение адаптивных нечетких систем (гибридных нейронных сетей)
  • Интерактивное динамическое моделирование в Simulink

  • Пакет позволяет работу:
  • в режиме графического интерфейса,
  • в режиме командной строки,
  • с использованием блоков и примеров пакета Simulink.

    Ниже рассмотрены основные свойства и правила работы с пакетом Fuzzy Logic Toolbox версий 2.0.1 и 2.1, используемых, соответственно, в системах MATLAB версий 5.3 и 6.12.

    Графический интерфейс Fuzzy Logic Toolbox
    В состав программных средств Fuzzy Logic Toolbox входят следующие основные программы, позволяющие работать в режиме графического интерфейса:

· редактор нечеткой системы вывода Fuzzy Inference System Editor (FIS Editor или FIS-редактор) вместе со вспомогательными программами - редактором функций принадлежности (Membership Function Editor), редактором правил (Rule Editor), просмоторщиком правил (Rule Viewer) и просмоторщиком поверхности отклика (Surface Viewer);

  • редактор гибридных систем (ANFIS Editor, ANFIS-редактор);
  • программа нахождения центров кластеров (программа Clustering - кластеризация).

Набор данных программ предоставляет пользователю максимальные удобства для создания, редактирования и использования различных систем нечеткого вывода.

 

Используя пакет нечеткой логики Fuzzy Toolbox системы MatLab, покажем, как можно построить нечеткую аппроксимирующую систему. Командой (функцией) Fuzzy из режима командной строки запускается основная интерфейсная программа пакета Fuzzy Logic – редактор нечеткой системы вывода (Fuzzy Inference System Editor, FIS Editor, FIS – редактор). Вид открывающегося при этом окна приведен на рисунке.

Главное меню редактора содержит позиции:

File – работа с файлами моделей (их создание, сохранение, считывание и печать);

Edit – операции редактирования (добавление и исключение входных и выходных переменных);

View – переход к дополнительному инструментарию.

Попробуем сконструировать нечеткую систему, отображающую зависимость между переменными x и y, заданную с помощью таблицы (легко видеть, что представленные в таблице данные отражают зависимость y=x2).


 

x -1 -0.6   0.4  
y   0.36   0.16  

Требуемые действия отобразим следующими пунктами.

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) задана таблицей значений:

Функция x 5 10 15 20 25 30 35 40
  y 2,236 3,162 3,873 4,472 5,000 5,477 5,916 6,325
  y 1,710 2,154 2,466 2,714 2,924 3,107 3,271 3,420
  y 7,071 10,000 12,247 14,142 15,811 17,321 18,708 20,000
  y 3,684 4,642 5,313 5,848 6,300 6,694 7,047 7,368
  y 7,937 10,000 11,447 12,599 13,572 14,422 15,183 15,874
  y 0,200 0,100 0,067 0,050 0,040 0,033 0,029 0,025
  y 19,635 78,540 176,720 314,160 490,870 706,860 962,100 1256,600
  y 15,710 31,420 47,120 62,830 78,540 94,250 109,960 125,700
  y 1,609 2,303 2,708 2,996 3,219 3,401 3,555 3,689

Для контрольных значений аргумента x1=12; x2=26; x3=42 найти значения функции.

Варианты заданий на лабораторную работу:

Вариант Функция Степень интерполяции Вариант Функция Степень интерполяции
           
           
           
           
           
           
           
           
           
           
           
           
           
       

В отчете по лабораторной работе должны быть представлены следующие разделы:

1. Постановка задачи.

2. Описание пакета Fuzzy Toolbox.

3. Руководство пользователя.

4. Результаты работы.

5. Выводы.

 


СПИСОК ЛИТЕРАТУРЫ

 

1. Леоленков А.В. Нечеткое моделирование в среде MATLAB и fuzzyTECH. – СПб., 2007.

2. Потапов Д.К. Неклассические логики: Учебное пособие. – СПб.: СПБГУ, 2006. – 108 с.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...