4 Проектирование системы нечеткого вывода в среде matlab
4.1 Построение нечеткой аппроксимирующей функции у=х2
Исходные данные для аппроксимации представлены в таблице 4.
Таблица 4 – Значения x и y
X |
-1 |
-0,6 |
0 |
0,4 |
1 |
Y |
1 |
0,36 |
0 |
0,16 |
1 |
1 Командой fuzzy из режима командной строки запускается основная интерфейсная программа пакета Fuzzy Logic – редактор нечеткой системы вывода.
2 В меню File выбрать команду New Sugeno FIS.
3 Выбрать входной элемент системы input1 и ввести в поле Name обозначение входной переменной (х).
4 Войти в режим редактирования функции принадлежности – Membership Function Editor (двойное нажатие левой клавиши мыши). Выбором Edit/Add MFs (добавить функцию принадлежности) задать тип функции принадлежности (gaussmf) и количество (5).
5 Установить диапазон (Range) изменения х от -1 до 1 (определяется заданным диапазоном х).
6 Совместить ординаты максимумов функций принадлежности с значениями аргумента x.
Шаг выполняется двумя способами: выделить редактируемую функцию принадлежности, перетащить мышью кривую функции принадлежности; более точную установку проводят заданием числовых значений параметров функции принадлежности в поле Params (первое значение определяет размах кривой, второе – положение центра).
В поле Name вводится имя функции принадлежности (1- bn, 2 – n, 3 (центральная) – z, 4 – p, 5 – bp).
Выйти из редактора функций принадлежности – Close.
7 Ввести в поле название выходной переменной output1 (y), войти в режим редактирования функций принадлежности.
8 Задать вид функции принадлежности для выходной переменной. Предлагается выбрать в качестве функции принадлежности линейные (linear) или постоянные (constant) – в зависимости от алгоритма Сугено (1-го или 0-го порядка). В поставленной задаче необходимо выбрать постоянные функции принадлежности с общим числом 4 (по числу различающихся значений y). Нажать Ok.
9 Установить диапазон (Range) – [0, 1]. Изменить значения (Params) и задать для выходных переменных имена (Name) соответственно 0; 0,16; 0,36; 1. Закрыть редактор.
10 Перейти в редактор привил (Rule Editor) (дважды щелкнуть на средний белый квадрат разрабатываемой структуры системы нечеткого вывода). При вводе каждого правила необходимо обозначить соответствие между каждой функцией принадлежности аргумента x и числовым значением y. Кривая, обозначенная bn, соответствует y=1, для чего выбирается в левом поле (с заголовком x is) вариант bn, а в правом – 1 и нажимается кнопка Add rule.
Введенное правило появится в окне правил в виде
If (x is bn) then (y is 1) (1).
Аналогично вводятся все правила (всего 5).
Закрыть окно редактора правил и вернуться в окно FIS-редактора.
Построение системы закончено.
Сохранить на диске (File/Save to disk as) созданную систему. Перейти в редактор функций принадлежности (View/Edit Membership function). Из окна редактора командой можно перейти в окно просмотра правил (View rules), просмотра поверхности (View surface).
В окне просмотра правил иллюстрируется процесс принятия решения (вычисления y). Красная вертикальная черта, пересекающая графики в правой части окна, которую можно перемещать с помощью мыши, позволяет изменять значения переменной входа (либо вводят значение с клавиатуры в поле Input), при этом соответственно изменяется значение выхода.
Просмотр кривой y(x) осуществляется командой View/View surface. Большая погрешность аппроксимации заданной зависимости объясняется малым числом экспериментов.
С помощью рассмотренных редакторов на любом этапе проектирования нечеткой модели можно внести необходимые коррективы, например задание пользовательской функции принадлежности.
В рассмотренном примере использованы следующие операции, устанавливаемые по умолчанию в алгоритме Сугено:
- логический вывод организуется с помощью операции логического умножения (prod);
- композиция организуется с помощью операции логической суммы (вероятностного ИЛИ, probor);
- приведение к четкости (дефаззификация) организуется дискретным вариантом центроидного метода (взвешенным средним, wtaver).
