Широкому распространению фаззи-систем управления в немалой степени способствует программная система MATLAB, в составе которой имеется пакет программ по фаззи-логике.
Fuzzy Logic Toolbox позволяет создавать и редактировать фаззи-системы управления с нечеткой логикой, называемые в терминах программной системы MATLAB – Fuzzy Inference System или FIS. Эти системы можно создавать, используя как графические инструменты, так и команды рабочего окна MATLAB.
Fuzzy Logic Toolbox также позволяет управлять созданными программами и непосредственно без Simulink. Это осуществляется с помощью автономного Fuzzy Inference Engine, который работает с нечеткими системами, сохранёнными в MATLAB. Можно также настраивать Fuzzy Logic Toolbox, используя его для совместной работы с другими пакетами типа Control System (Системы управления), Neural Network (Нейросети) или Optimization Toolbox (Оптимизация).
5.1. Общие сведения о Fuzzy Logic Toolbox
Одна из целей пакета Fuzzy Logic Toolbox состоит в облегчении понимания и создания фаззи-систем управления. Фаззи-систему можно создавать, используя командную строку главного окна MATLAB. Однако намного проще сделать это графически с помощью инструментов графического интерфейса пользователя (GUI или ГИП), имеющихся в Fuzzy Logic Toolbox. Имеются пять инструментов GUI для создания, редактирования и наблюдения фаззи-систем в среде Fuzzy Logic Toolbox (рис. 15). Это Fuzzy Inference System Editor или FIS Editor – Редактор фаззи-инференционной системы, Membership Function Editor - Редактор функций принадлежности, Rule Editor - Редактор правил, Rule Viewer - Просмотр правил и Surface Viewer - Просмотр поверхности (пространства управления). Эти инструменты GUI динамически связаны между собой: используя один из них в FIS и производя изменения, можно затем увидеть их действия в других инструментах GUI. В дополнение к этим пяти инструментам Fuzzy Logic Toolbox включает в себя графический редактор GUI ANFIS, который используется для создания и анализа Sugeno-типа адаптивных нейросистем с нечеткой логикой – adaptive neuro-FIS (ANFIS).
|
FIS редактор решает проблемы верхнего уровня системы: сколько входных и выходных переменных и каковы их имена?
Fuzzy Logic Toolbox не имеет ограничений по числу входов фаззи-системы – все зависит от доступной памяти компьютера.
Рис. 15. Структура фаззи-инференционной системы - FIS |
Membership Function Editor используется для того, чтобы определить виды всех функций принадлежности, связанных с каждой переменной.
Rule Editor используется для редактирования списка правил, который определяет функционирование фаззи-системы.
Rule Viewer и Surface Viewer используются только для просмотра результатов, но не редактирования фаззи-системы. Rule Viewer показывает диаграмму функционирования. Используя его в качестве диагностического средства, можно увидеть, например, какие правила активны, или как индивидуальные функции принадлежности влияют на результаты. Surface Viewer используется для показа зависимости выхода от одного или двух из входов системы, то есть показывается диаграмма поверхности пространства управления системы. Все пять инструментов GUI могут взаимодействовать и обмениваться информацией между собой. Любой из них может считывать и сохранять данные в рабочем пространстве MATLAB и на жестком диске компьютера.
5.2. Построение систем с использованием Fuzzy Logic Toolbox
Рассмотрим порядок создания фаззи-системы на примере системы регулирования уровня жидкости, описанной выше. Построение системы начинают с определения количества входов и выходов в редакторе свойств фаззи-системы – FIS Editor. Для его вызова необходимо в рабочем окне MATLAB ввести команду fuzzy с указанием редактируемой (созданной ранее) FIS регулирования уровня - tank, т.е. fuzzy tank.
|
Окно редактора FIS Editor показано на рис. 16. На этой диаграмме указываются названия всех входов (input) и выходов (output). Для данной системы это – отклонение уровня (level), скорость изменения уровня (rate), скорость перемещения задвижки (valve). Ниже диаграммы - название системы (tank) и типа используемого вывода (mamdani или sugeno). Еще ниже указаны методы фаззи-процедур:
операции “И” (AND) – произведения (product –prod);
операции “ИЛИ”(OR) – вероятностного ИЛИ (probabilistic or – probor);
импликации (prod);
аггрегации (max);
дефаззификации (centroid).
Рис. 16. Окно редактора свойств фаззи-системы регулирования уровня жидкости |
Fuzzy Logic Toolbox поддерживает два встроенных метода AND – min (minimum) и prod (product); два встроенных метода OR – max (maximum) и probor – probabilistic or, определяемого формулой алгебраического суммирования вероятностей probor(a,b) = a + b – ab).
Для объединения или агрегации всех правил Fuzzy Logic Toolbox использует три встроенных метода: max (maximum), probor (probabilistic or) и sum (просто сумма всех выходов установленных правил).
Для дефаззификации Fuzzy Logic Toolbox использует пять встроенных методов: centroid (координата – абсцисса – центра тяжести фигуры под кривой), bisector (координата – абсцисса – делящая площадь фигуры под кривой пополам), mom (mean of the maximum – середина интервала максимальных значений), lom (largest of maximum – верхняя граница интервала максимальных значений) и som (smallest of maximum – нижняя граница интервала максимальных значений). Для иллюстрации на рис. 17 приведены различные результаты дефаззификации, проведенной по перечисленным методам. Значения выходной величины у на нижнем графике рис. 17 составляют для рассмотренных методов дефаззификации 2, 3.3, 3.7, 5, 8 для методов дефаззификации som, centroid, bisector, mom и lom, соответственно.
|
Наиболее часто используемым методом дефаззификации является метод centroid, который определяет абсциссу центра тяжести плоской фигуры под кривой.
При необходимости можно применять и другие методы, заданные самим пользователем.
Кнопка помощи Help вызывает окно помощи MATLAB. В нем дается описание FIS Editor и работы с ним.
Для задания функций принадлежности переменных FIS используется редактор Membership Function Editor, который вызывается пунктом Edit membership functions меню View или двойным щелчком по одному из входов или выходов диаграммы FIS.
В этом редакторе щелчком мыши по блоку в левой части выбирается переменная и ее функции принадлежности появляются на графике в правой верхней части окна редактора. При этом в левой нижней части отражаются имя (Name) Level, тип (Type) Input, границы изменения (Range) [-1 1] и отображения (Display Range) [-1 1] активизированной переменной.
|
Рис. 17. Методы дефаззификации |
Рис. 18. Окно редактора Membership Function Editor |
Из меню Edit командой Add MFs можно добавить новую функцию принадлежности. Щелчком мыши по графику функции принадлежности можно ее активизировать, затем в правой нижней части окна задать ее имя и выбрать тип из ниспадающего списка встроенных функций. Этот список достаточно большой и графики, показывающие их вид, приведены на рис. 19.
Рис. 19. Виды функций принадлежности – Membership Function |
После выбора типа функции принадлежности можно изменить график этой функции, сжав или растянув ее. Для этого надо щелкнуть по ее графику, взять мышью выделенные прямоугольники на графике и перемещать их в нужном направлении. Возможно задание численных значений параметров, описывающих данную функцию принадлежности, в строке Param. Кнопка помощи Help вызывает окно помощи MATLAB. В нем дано описание редактора Membership Functions Editor и работы с ним.
После определения всех переменных и задания типа и вида функций принадлежности переходят к созданию правил в редакторе Rule Editor (рис. 20). Для этого в меню View нужно выбрать пункт Edit Rules.
Редактор Rule Editor использует графический интерфейс, основанный на описаниях переменных входов и выхода. Rule Editor позволяет строить правила без особых усилий, просто и быстро, выбирая по одному параметру переменной входов и выхода и щёлкая мышкой на них. Правило формируется выбором опций в левой нижней части окна редактора, где приведены все наличные входные и выходные переменные с указанием всех их возможных значений, по типу: IF [переменная is значение] AND/OR [переменная is значение], THEN [переменная is значение]. Для формирования отрицания значений используется опция NOT. Для добавления нового правила управления используется кнопка Add rule в нижней части панели окна, для удаления правила – кнопка Delete rule.
Рис. 20. Редактор Rule Editor |
Рис. 21. Просмотрщик Rule Viewer |
При формировании правила в Rule Editor можно не учитывать какую-либо переменную. Созданные правила можно изменять, не удаляя их. Для этого необходимо выбрать правило, которое нужно изменить, и выделить мышкой те параметры переменных, которые надо установить. После всех проведённых операций нажать Change rule. Зайдя в пункт Language меню Options, можно менять языки (английский, немецкий и французский). Кроме этого, в Rule Editor предусмотрена возможность изменения формы записи правил в пункте Format меню Options.
По окончанию создания правил фаззи-управления можно просмотреть зависимость выходной величины от значений входных параметров системы. Для этого в меню View надо выбрать пункт View rules. В просмотрщике Rule Viewer (рис. 21) под каждой входной и выходной переменной показаны в виде графиков её параметры и результат вычислений. Удобство Rule Viewer заключается в том, что как при грубом, так и при точном изменении параметров входов можно сразу увидеть изменение выходной величины.
Рис. 21. Просмотрщик Surface Viewer |
Для изменения первых нужно указать мышкой на нужный график и щёлкнуть в любом месте. Красная линия указания значения входных параметров переместится вслед за мышкой. Можно задавать значения входных параметров более точно, указывая их в строке Input в левой нижней части панели.
Просмотрщик Rule Viewer позволяет наблюдать очень большое количество переменных, а не только три (как в нашем случае). Для этого предназначены четыре клавиши, при нажатии которых экран диаграммы переместится в нужную сторону соответственно. Например, при нажатии Left (влево) экран будет передвигаться влево, а при нажатии Down (вниз) - вниз..
Выбрав пункт View Surface в меню View, можно посмотреть трехмерную зависимость выхода от входа – пространство управления фаззи-системы. Просмотрщик Surface Viewer, как и Rule Viewer, предназначен для выведения большого количества зависимостей выхода от входа. На этой диаграмме можно увидеть зависимость выхода и от четырёх входов или зависимость различного выхода от разных входов.
На графике, изменив числа в строках X grid и Y grid, можно менять количество поперечных и продольных линий. В пункте Plot меню Options можно изменить сам график для лучшего его восприятия. В этом же меню Options в пункте Color Map можно так же поменять цвета поверхности управления.
Практическое задание
1. Откройте рабочее окно программы MATLAB 7 и наберите команду sltank.
2. В открывшемся окне модели Simulink фаззи-система регулирования уровня жидкости в резервуаре установите в блоке const переключателя Switch значение 1. Этим самым Вы включите в контур регулирования блок PID Controller (на самом деле ПД-регулятор, так как коэффициент интегральной составляющей равен нулю).
3. Командой Start меню Simulation запустите симуляцию работы модели. Посмотрите на вид переходного процесса в системе на экране блока Comparison (Сравнение).
4. После остановки симуляции установите в блоке const переключателя Switch значение –1. Этим самым Вы включите в контур управления фаззи-регулятор (блок Fuzzy Logic Controller).
5. Командой Start меню Simulation запустите симуляцию работы модели. Посмотрите на вид переходного процесса в системе на экране блока Comparison (Сравнение).
6. После остановки симуляции изучите структуру субмоделей системы управления.
7. Для изучения дополнительных возможностей фаззи-управления наберите в рабочем окне MATLAB команду demo. В появившемся окне выберите последовательно пункты Toolboxes, Fuzzy Logic, затем демонстрационные модели Cart and pole (sim), Backing truck (sim).
Контрольные вопросы
1. Какие основные операции и процедуры осуществляются и системе фаззи-регулирования? Какова функциональная структура системы фаззи-регулирования?
2. Нарисуйте график ФП m l (х) = ехр(-4| х – m |), соответствующей терму “анормальная температура человеческого тела” m = 36,6 °C. Выберите значение масштабного коэффициента k н , обеспечивающее нормирование диапазона 35–39 °С в интервале [-1,+1].
3. Каким операциям булевой алгебры соответствуют процедуры фаззи-объединения и фаззи-пересечения нечетких множеств?
4. С помощью каких процедур находят ФП фаззи-обьединения и фаззи-пересечения, если известны ФП исходных множеств?
5. Убедитесь с помощью арифметических аналогов логических операций «ИЛИ», «И» (см. формулы (18) и (19)), что эти операции эквивалентны процедурам максимизации и минимизации соответствующих функций истинности.
6. Пользуясь тремя универсальными значениями NB, ZR, PB для входных переменных «уровень», «скорость изменения уровня» и для управляющего воздействия («положение задвижки»), составьте таблицу лингвистических правил управления задвижкой, через которую поступает жидкость в резервуар с самовыравниванием.
7. Проиллюстрируйте на двух произвольных графиках m(ε) и m(y) правило импликации Мамдани при фиксированном значение ε *.
8. С помощью каких процедур определяют ФП для сложных посылок, которые состоят из нескольких простых, соединенных союзами «ИЛИ», «И»?
9. С помощью какой процедуры находят результирующую ФП, соответствующую совокупности j -x правил, соединенных союзом «ИЛИ»?
10. Как по графику m р (у) можно найти значение управляющего воздействия у *?
11. Почему при использовании метода Сугено нет процедуры дефаззификации?
12. Каковы основные этапы синтеза системы фаззи-регулирования?
13. Состав Fuzzy Logic Toolbox.
14. Порядок создания систем фаззи-регулирования в Fuzzy Logic Toolbox.
15. Методы дефаззификации, встроенные в Fuzzy Logic Toolbox.
16. Виды функций принадлежности, встроенные в Fuzzy Logic Toolbox.
Литература
1. Лукас В.А. Введение в Fuzzy-регулирование. – Екатеринбург: Изд-во УТГГА, 1997. – 36 с.
2. Стальский В.В., Проскуряков Р.М. Нечеткая логика и ее применение в автоматическом регулировании. - СПб.: СПГИ, 1998. – 94 с.
3. Fuzzy Logic Toolbox. For Use with MATLAB: User’s Guide. - Natick: The MathWorks, Inc., 1998. - 235 p.