2. Используя нечеткую систему научиться аппроксимировать функцию одной переменной.
Задание:
Необходимо построить с помощью интерфейсной программы пакета нечеткой логики программной среды MATLAB нечеткую систему, необходимую для аппроксимации табличной функции , . Варианты задания представлены в табл. 2.1.
Зависимость между переменными y и х заданы с помощью табл. 2.2. Требуется построить нечеткую систему, с помощью которой возможно аппроксимировать предложенную функцию, заданную таблично.
Таблица 2.2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
2.05
1.94
1.92
1.87
1.77
1.74
1.71
1.60
1.56
1.40
Для аппроксимации функции с одной переменной используем среду MATLAB. Командой fuzzy из режима командной строки запускается интерфейсная программа пакета Fuzzy Logic (Нечеткая логика) – редактор нечеткой системы вывода FIS (Fuzzy Inference System).
В меню File (Файл) выбираем опцию New Sugeno FIS (новая система типа Sugeno), появится окно редактора (рис. 4.1). В появившемся окне существуют поля входной, выходной функции и редактора правил. Необходимо переименовать блоки input1 в x, output1 в y.
Рис. 4.1. Окно редактора функции
В блоке параметров нечеткой системы типа Sugeno задаются:
· меню And method позволяет установить реализации логической операции И: min – минимум и prod – алгебраической произведение (см. раздел 4.2.1);
· меню Or method позволяет установить реализации логической операции ИЛИ: max – максимум и probor – алгебраическая сумма (см. раздел 4.2.1);
· меню Defuzzification позволяет выбрать один из методов дефаззификации: wtaver – метод взвешенного среднего, при котором или wtsum – метод взвешенной суммы, при котором , где – количество правил базы знаний.
При щелчке по блоку x (input1) откроем окно редактора функций принадлежности (рис. 4.2). Необходимо добавить функции принадлежности, для этого в меню Edit(Редактирование) выбираем опцию Add MFs (рис. 4.3). В появившемся диалоговом окне задается тип и количество функций принадлежности (9, далее добавляем еще 1 для того, чтобы получить 10 функций принадлежности). В качестве функций принадлежности выберем гауссовы функции (gaussmf). Затем в окне редактора функций принадлежности в поле Range (Диапазон) устанавливаем диапазон изменения значений х от 0 до 1, т.е. диапазон соответствующий табл. 4.2. Далее необходимо подвинуть графики заданных функций принадлежности, чтобы ординаты их максимумов совпадали с заданными значениями аргумента х. Для этого в поле Params(Параметры) задаем размах кривой и положение ее центра.
Рис. 4.2. Окно редактора функции принадлежности для х
Рис. 4.3. Окно добавления функций принадлежности
Далее необходимо задать функции принадлежности для у, щелкнув по блоку у и перейдя к редактору функций принадлежности (рис. 4.4). Добавим функции принадлежности (меню Edit Add MFs). В качестве функции принадлежности выбираются 10 констант, по числу различных значений yi в табл. 4.2. Таким образом сконструированная система является нечеткой системой типа Сугено 0-го порядка. В окне редактора функций принадлежности зададим значения функции у в поле Params.
В окне FIS-редактора (рис. 5.1), щелкнув по среднему блоку, откроем окно редактора правил (рис. 4.5).
При вводе правила необходимо обозначить соответствие между каждой функцией принадлежности аргумента х и числовым значением у.
Рис. 4.4. Окно редактора функций принадлежности для у
Существует возможность просмотра правил (рис. 4.6). Для этого выберем позицию меню View – rules. В левой части окна в графической форме представлены функции принадлежности аргумента х, в правой – переменной выхода у с пояснением механизма принятия решения. Вертикальная черта, пересекающая графики в левой части окна, позволяет изменять значения переменной входа, при этом соответственно изменяются значения у в правой части окна. Изменение аргумента путем перемещения вертикальной линии наглядно демонстрирует, как система определяет значения выхода.
Рис. 4.5. Окно редактора правил
Рис. 4.6. Окно просмотра правил
В результате была построена нечеткая система, которая решила задачу аппроксимации заданной табличной функции. В табл. 4.3 приведено сравнение выходов нечеткой системы с исходными значениями y (четвертый столбец в таблице – выходы нечеткой системы).
Как видно из табл. 4.3 максимальное отклонение выходов нечеткой системы от исходных данных составляет 0,02.
Выбрав в меню View – Surface, перейдем к окну просмотра поверхности выхода, в данном случае – к просмотру кривой у(х) (рис. 4.7).
Таблица 4.3
I
xi
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
2.05
1.94
1.92
1.87
1.77
1.74
1.71
1.60
1.56
1.40
2.03
1.95
1.92
1.86
1.78
1.74
1.72
1.61
1.54
1.42
0.02
0.01
0.01
0.01
0.01
0.01
0.02
0.02
Рис. 4.7. График функции
В заключении следует отметить, что с помощью вышеуказанных программ-редакторов на любом этапе проектирования нечеткой модели в нее можно внести необходимые коррективы, вплоть до задания какой-либо особенной пользовательской функции принадлежности.
Выводы (пример):
В результате выполнения лабораторной работы я познакомился с теоретическими сведениями о нечетких множествах, их свойствах, базах знаний, нечетком логическом выводе. В ходе выполнения лабораторной работы мною была построена нечеткая система с помощью пакета нечеткой логики Fuzzy Logic среды MATLAB, которая аппроксимирует заданную табличную функцию. Было произведено сравнение выходов нечеткой системы с заданными значениями y, в результате чего было установлено, что максимальное отклонение составило 0.02 (например, при х=0.1), что составляет 1.025%.
Контрольные вопросы
1. Дайте определение нечеткого множества.
2. Опишите этапы нечеткого логического вывода
3. Какой алгоритм вывода использовался при выполнении лабораторной работы? Опишите данный алгоритм.
4. В чем отличие использованного алгоритма от остальных существующих?
5. Какие типы функций принадлежности были использованы при выполнении лабораторной работы и почему?