Нечеткая логика в красивых картинках. Поверхности отклика для разных функций принадлежности
Продолжаем изучать нечеткую логику вместе с книгой Гостева В.И. «Нечеткие регуляторы в системах автоматического управления».
Следующая задача, разобранная автором, – это синтез цифровых нечетких регуляторов с переключением на два режима работы в системе управления температурой газа двухроторного газотурбинного двигателя (ГТД).
Пытаясь разобраться с этой задачей, я решил посмотреть, как функции принадлежности и их параметры влияют на работу регуляторов. И не смог пройти мимо такого красивого объекта из мира нечетких регуляторов, как поверхность отклика, – 3D-график зависимости выхода нечеткого регулятора от двух входов в регулятор.
Как оказалось, это затягивающее занятие (построение поверхности отклика) доставляет не просто эстетическое удовольствие, а еще раз доказывает на практике известное философское утверждение «красота спасет мир».
Поэтому разбор очередной задачи из книги Гостева В.И. у меня распался на две части:
- Анализ влияния параметров функции принадлежности для фазификации входных переменных на работу регулятора на базе нечеткой логики.
- Непосредственное решение задачи.
Далее, под катом, первая часть.
Внимание! Для тех, кто впервые касается темы нечеткого регулирования, рекомендую начать вот с этой статьи: Простой регулятор на базе нечеткой логики. Создание и настройка
Нечеткие регуляторы в предыдущих примерах книги использовали фазифификацию входных переменных с помощью треугольных функций принадлежности. Треугольная функция хороша тем, что мы задаем явно точки излома в виде параметров блока фазификации, и таким образом контролируем покрытие диапазона входной переменной (см. рис. 1). К тому же, как работает линейное изменение в треугольной функции, казалось бы, достаточно легко представить (на самом деле нет!).
Рисунок 1. Внешний вид треугольных функций принадлежности.
В очередном примере книги используется фазификация функциями Гаусса. Для этих функций задаются два параметра положение точек вершин, (как для треугольных), и среднеквадратичное отклонение, определяющее размах кривой. Попытаемся разобраться, как задавать функции принадлежности в виде кривых Гаусса.
Настройка фазификации функциями Гаусса.
При фазификации входной переменной функциями Гаусса возникает проблема подбора среднеквадратичного отклонения и распределения вершин фикции, для того чтобы, с одной стороны, равномерно распределить функции по диапазону, а с другой, обеспечить перекрытие всего диапазона входных переменных.
Поиграться с настройками можно в отдельном проекте. Для этого достаточно поставить блок фазификации, направить на вход линейный источник и с помощью фазового портрета построить функции принадлежности для каждого терма входной переменной. Например, для функций Гаусса, равномерно распределенных между 0 и 1, можно задать входное линейное воздействие от – 1 до 2, время расчёта 3 секунды. И мгновенно получить график распределения функций принадлежности в зависимости от входной переменной. См. рис 2.
Рисунок 2. Настройка фазификации функциями Гаусса
Обратите внимание, на схеме у нас кривая Гаусса только одна – центральная. Для граничных термов мы используем в качестве функции принадлежности S-кривую, состоящую из «половины» кривой Гаусса. Почему это часто более правильно объяснялось здесь: habr.com/ru/post/413539
При тонкой и ручной настройке пользователь сам задает параметры вершин, поскольку знает что делает. В процессе синтеза, когда мы только выбираем параметры, первым приближением можно принять равномерное распределения функций принадлежности по диапазону. И в этом случае, вместо ручного заполнения свойств блока, можно задать глобальные переменные (максимум и минимум) и произвести вычисление расположения вершин функций, зная их количество. Другими словами, достаточно знать границы диапазона и количество функций, чтобы определить расположение вершин. Значение среднеквадратичного отклонения также можно привязать к дистанции между вершинами.
Например, для равномерного распределения функций Гаусса между 0 и 1 можно записать такой скрипт, как на рисунке 3, где приведен вариант, когда показатель среднеквадратичного отклонения с равен расстоянию между вершинами dU. В результате работы данного скрипта на стадии инициализации расчета будут заполонены два массива an и сn, которые можно записать в свойствах блока фазификаци.
Рисунок 3. Скрипт расчета свойств блока фазификации.
Рисунок 4. Вид функции фазификации при c = dU (0.5) и c =dU/2 (0.25). |
Чем больше среднеквадратичное отклонение, тем меньше различия между термами, и, наоборот. При малых значениях функции отличия более изолированные см. рис 4.
Посмотрим, как это может повлиять на законы управления нечеткого регулятора.
Варианты настройки.
Возьмем простой регулятор и создадим простую модель, в которой два входных воздействия меняются в диапазоне 0 – 1, и регулятор выдает воздействие так же в диапазоне 0 – 1.
Для обоих входных воздействий выполним одинаковую фазификацию на три терма: «больше», «норма», «меньше».
Функции принадлежности для входных переменных зададим в виде равномерно расположенных по диапазону 0 — 1 функций Гаусса с шагом вершин dU = 0.5
Сформируем 3 правила нечеткого вывода следующим образом:
- если вход 1 больше и вход 2 больше, то выход – больше
- если вход 1 норма и вход 2 норма, то выход – норма
- если вход 1 меньше и вход 2 меньше, то выход – меньше
Схема тестовой модели приведена на рисунке 5. Входным сигналом в системе будет время, а с помощью небольшого скрипта последовательно передаем сигналы на два выхода, таким образом чтобы пройти все варианты воздействий 0-1 для каждого входа и сформировать трехмерный график отклика.
Рисунок 5. Схема тестовой проверки нечеткого регулятора.
Параметры фазификации на три терма одинаковы для каждого входа и задаются в скрипте главной схемы (см. рис. 3). Посмотрим, какой будет вид поверхности характеристик регулятора, когда среднеквадратичное отклонение равно:
- Расстоянию между вершинами с = dU
- Половине расстояния между вершинам c = dU/2
- Четверти расстояния между вершинами c = dU/4
Вариант 1. Среднеквадратичное отклонение равно расстоянию между вершинами функций фазификации.
В этом случае функции Гаусса размазаны по всему диапазону входных переменных, а поверхность отклика регулятора представляет собой слегка изогнутую плоскость. (см. рис. 6).
Рисунок 6. Фазовый портрет функций принадлежности Гаусса и поверхность отклика регулятора при с = dU. |
Видно, что диапазон регулирования не полностью покрывается, хотя в свойствах задано 0 – 1. Это происходит потому, что даже когда входное значение равно 0, все функции Гаусса после фазификации имеют отличное от 0 значения. Это видно при включенной анимации схемы на блоках в виде синих столбиков, отражающих выходные значения функций фазификации. На динамическом изображении блока нечеткого вывода наличие двух столбиков диаграмм не дает сдвинуть центр масс к правой границе — нулю (см. рис. 7).
Рисунок 7. Схема в начальный момент времени расчёта, для с = dU
Вариант 2. Среднеквадратичное отклонение равно половине дистанции между вершинам фазификации функциями Гаусса.
Для этого варианта функции принадлежности в крайних положениях работают уже не все функции Гаусса, и поверхность отклика регулятора изгибается. Выходные параметры регулятора также не покрывают весь диапазон, но уже гораздо ближе к полному покрытию. Выход регулятора меняется 0.02 до 0.98.
Рисунок 8. Фазовый портрет функций принадлежности Гаусса и поверхность отклика регулятора при c = dU/2. |
Вариант 3. Среднеквадратичное отклонение равно четверти дистанции между вершинам фазификации функциями Гаусса.
В этом случае функции принадлежности получаются изолированными, и наш регулятор нечеткого вывода работает практически как трехпозиционное реле. При этом, его выход в большей части рабочего диапазона входных переменных равен 0.5, и только в моменты, когда оба входа близки к 0 или 1, регулятор выдает соответственно 0 и 1.
Это приводит к тому, что регулятор большую часть времени не работает, а находится в среднем положении.
Рисунок 9. Фазовый портрет функций принадлежности Гаусса и поверхность отклика регулятора при c = dU/4. |
Поверхность отклика для фазификации треугольными функциями
Получив такой результат, мне захотелось проанализировать, а как работают треугольные функции, которые ранее использовались при решении предыдущих задач из книги Гостева. Благо тестовый проект уже готов, остается только заменить одни функции на другие.
При фазификации треугольными функциями с общим основанием результат, в общем, предсказуемый: поверхность изгибается между крайними положениями 0 и 1. См. рис. 10. А вот для функций принадлежности, основание которых равномерно распределено по диапазону регулирования, результат, мягко говоря, удивил. Получается интересная фигура, представленная на рис. 11.
Рисунок 10. Фазификациия треугольными функциями c общим базисом и соответствующая поверхность отклика регулятора. | |
Рисунок 10. Фазификациия треугольными функциями распределенными по диапазону и соответствующая поверхность отклика регулятора. |
В случае, когда основания треугольных функций распределены по диапазону, поверхность регулятора содержит два плато, на которых регулирование вообще не происходит. Регулятор стоит в среднем положении. Мне, кстати, это было совсем не очевидно, исходя только из вида треугольных функций.
Нечеткий регулятор по отклонению и скорости.
Приведенные правила нечеткого вывода достаточно прямолинейны. Мы просто складываем (объединяем) все термы логическим и. А как выглядит поверхность, если перейти от абстрактных переменных к чуть менее абстрактным?
Рассмотрим в качестве переменных входа отклонение от заданной нормы и скорость изменения этого отклонения. Среднеквадратичное отклонение возьмем равным половине расстояния между вершинами.
Для наглядности изменим диапазон регулирования и вместо (0...1) зададим (– 1..1)
Регулирующее воздействие будем подавать в случае, когда есть отклонение или когда есть скорость изменения, которая показывает, что отклонение будет в дальнейшем.
Законы регулирования будут такими:
- если отклонение больше или (отклонение норма и скорость растет ), то воздействие – больше
- если отклоенение норма, то воздейстиве – норма (0)
- если отклонение меньше или (отклонение норма и скорость падает), то воздействие – меньше
Схема такой логики представлена на рисунке 12. А поверхность регулирования – на рисунке 13.
Рисунок 12. Нечеткий регулятор по скорости и положению. Вариант 1.
Рисунок 13. Поверхность отклика регулятора по скорости и положению
Анализируя поверхность, можно заметить, что когда скорость изменения около нуля, то зависимость воздействия от отклонения практически линейна, а когда скорость нарастания отклонения и само отклонения совпадают, то воздействие усиливается (излом на поверхности), и поверхность далее более крутая.
Созданные правила у нас не учитывают случай, когда скорость изменения компенсирует само отклонение. Добавим в правила учета ситуации, когда скорость изменения противоположна отклонению.
Тогда законы регулирование будут такими:
- если отклонение больше или (отклонение норма и скорость растет ), то воздействие – больше
- если отклоенение норма, или
если (отклонение больше и скорость падает), или
если (отклонение меньше и скорость растет ) то воздейстиве – норма (0) - если отклонение меньше или (отклонение норма и скорость падает), то воздействие – меньше
Соответствующая им расчетная схема представлена на рисунке 14, поверхность регулирования – на рисунке 15.
Рисунок 10. Фазификациия треугольными функциями c общим базисом и соответствующая поверхность отклика регулятора.